One place for hosting & domains

      Configurar

      Cómo configurar el acceso remoto para MongoDB en Ubuntu 20.04


      Melissa Anderson escribió una versión anterior de este tutorial.

      Introducción

      MongoDB, también conocido como Mongo, es una base de datos de documentos de código abierto usada comúnmente en las aplicaciones web modernas. Por defecto, solo permite conexiones que se originan en el mismo servidor donde está instalado. Si desea administrar MongoDB de forma remota o conectarlo a un servidor de aplicaciones independiente, existen algunos cambios que deberá realizar a la configuración predeterminada.

      En este tutorial, configurará una instalación de MongoDB para permitir el acceso de forma segura desde un equipo remoto de confianza. Para hacer esto, actualizará las reglas de su firewall para proporcionar acceso del equipo remoto al puerto sobre el cual MongoDB está escuchando las conexiones, y a continuación actualizará su archivo de configuración para cambiar su ajuste de vinculación de IP. Luego, como paso final, probará que su equipo remoto puede realizar la conexión a su base de datos correctamente.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      • Un servidor con Ubuntu 20.04. Este servidor debería tener un usuario administrativo y un firewall configurado con ufw. Puede establecerlo siguiendo nuestra Guía inicial de configuración del servidor para Ubuntu 20.04.
      • MongoDB instalado en su servidor. Este tutorial asume que tiene instalado MongoDB 4.4 o una versión más reciente. Puede instalar esta versión siguiendo nuestro tutorial en Cómo instalar MongoDB en Ubuntu 20.04.
      • Un segundo equipo desde el cual accederá a su instancia de MongDB. Para mayor simplicidad, este tutorial asume que este equipo es otro servidor Ubuntu 20.04 con un usuario administrativo no root y un firewall UFW configurado siguiendo nuestra guía de configuración inicial para servidores de Ubuntu 20.04. Sin embargo, los Pasos 1 y 2, que describen el procedimiento real para permitir la conectividad remota sobre el servidor de la base de datos, funcionarán independientemente de qué sistemas operativos esté ejecutando el equipo remoto.

      Finalmente, aunque no es necesario para completar este tutorial, recomendamos encarecidamente que proteja su instalación de MongoDB creando una cuenta de usuario administrativo para la base de datos y permitiendo la autenticación. Para hacer esto, siga nuestro tutorial sobre Cómo proteger MongoDB en Ubuntu 20.04.

      Paso 1: Ajuste del firewall

      Asumiendo que siguió el tutorial de requisitos previos de configuración inicial del servidor y habilitó un firewall UFW en su servidor, su instalación de MongoDB será inaccesible desde Internet. Si tiene intención de usar el servidor de MongoDB solo a nivel local con aplicaciones que se ejecuten en el mismo servidor, este es el ajuste recomendado y seguro. Sin embargo, si desea poder conectar con su servidor MongoDB desde una ubicación remota, tendrá que permitir las conexiones entrantes al puerto donde está escuchando la base de datos añadiendo una nueva regla UFW.

      Comience verificando en qué puerto está escuchando la instalación de MongoDB con el comando lsof. Este comando normalmente devuelve una lista con cada archivo abierto en un sistema, pero cuando se combina con la opción -i, lista solo los archivos o corrientes de datos relacionados con la red:

      El siguiente comando redirigirá el resultado producido por lsof -i a un comando grep que busca una cadena llamada mongo:

      • sudo lsof -i | grep mongo

      Este resultado de ejemplo muestra que MongoDB está escuchando las conexiones en su puerto predeterminado, 27017:

      Output

      mongod 82221 mongodb 11u IPv4 913411 0t0 TCP localhost:27017 (LISTEN)

      En la mayoría de los casos, solo se debe acceder a MongoDB desde determinadas ubicaciones de confianza, como otro servidor que aloje una aplicación. Una forma de configurar esto es ejecutar el siguiente comando en su servidor MongoDB, que abre el acceso en el puerto predeterminado de Mongo mientras que explícitamente solo permite la dirección IP del otro servidor de confianza.

      Ejecute el siguiente comando, asegurándose de cambiar trusted_server_ip a la dirección IP del equipo remoto de confianza que usará para acceder a su instancia de MongoDB:

      Nota: Si el resultado del comando anterior mostró que su instalación de MongoDB está escuchando sobre un puerto no predeterminado, utilice ese número de puerto en lugar de 27017 en este comando.

      • sudo ufw allow from trusted_server_ip to any port 27017

      En el futuro, si alguna vez quiere acceder a MongoDB desde otro equipo, ejecute este comando de nuevo con la dirección IP del nuevo equipo en lugar de trusted_server_ip.

      Puede verificar el cambio en los ajustes del firewall con ufw:

      El resultado mostrará que el tráfico al puerto 27017 desde el servidor remoto ahora está permitido:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 27017 ALLOW trusted_server_ip OpenSSH (v6) ALLOW Anywhere (v6)

      Puede encontrar ajustes de firewall más avanzados para restringir el acceso a servicios en Aspectos básicos de UFW: Reglas y comandos comunes de firewall.

      A continuación, vinculará MongoDB a la dirección IP pública del servidor para que pueda acceder a él desde su equipo remoto.

      Paso 2: Configurar una bindIP pública

      En este momento, aunque el puerto está abierto, MongoDB está actualmente vinculado a 127.0.0.1, la interfaz de red loopback. Esto significa que MongoDB solo puede aceptar conexiones que se originen en el servidor donde está instalado.

      Para permitir conexiones remotas, debe editar el archivo de configuración de MongoDB (/etc/mongod.conf) para vincular adicionalmente MongoDB a la dirección IP públicamente dirigible de su servidor. De esta forma, su instalación de MongoDB podrá escuchar las conexiones realizadas a su servidor MongoDB desde equipos remotos.

      Abra el archivo de configuración de MongoDB en su editor de texto preferido: El siguiente ejemplo utiliza nano:

      • sudo nano /etc/mongod.conf

      Busque la sección network interfaces y, a continuación, el valor bindIp:

      /etc/mongod.conf

      . . .
      # network interfaces
      net:
        port: 27017
        bindIp: 127.0.0.1
      
      . . .
      

      Añada una coma a esta línea seguida de la dirección IP pública de su servidor MongoDB:

      /etc/mongod.conf

      . . .
      # network interfaces
      net:
        port: 27017
        bindIp: 127.0.0.1,mongodb_server_ip
      
      . . .
      

      Guarde y cierre el archivo. Si utiliza nano, podrá hacerlo presionando CTRL+X, Y y luego ENTER.

      A continuación, reinicie MongoDB para que este cambio surta efecto:

      • sudo systemctl restart mongod

      Tras eso, su instalación de MongoDB podrá aceptar conexiones remotas desde cualquier equipo al que haya permitido acceder al puerto 27017. Como paso final, puede probar si el servidor remoto de confianza que permitió a través del firewall en el Paso 1 puede llegar a la instancia de MongoDB que se ejecuta en su servidor.

      Paso 3: Probar la conectividad remota

      Ahora que ha configurado su instalación de MongoDB para que escuche las conexiones que se originan en su dirección IP dirigible públicamente y ha concedido a su equipo remoto acceso a través del firewall de su servidor al puerto predeterminado de Mongo, puede probar que el equipo remoto puede conectarse.

      Nota: Como se mencionó en la sección Requisitos previos, este tutorial asume que su equipo remoto es otro servidor con Ubuntu 20.04. El procedimiento para permitir las conexiones remotas descrito en los Pasos 1 y 2 debería funcionar independientemente de qué sistema operativo ejecute su equipo remoto, pero los métodos de prueba descritos en este Paso no funcionan universalmente entre sistemas operativos.

      Una forma de probar que su servidor remoto de confianza puede conectarse a la instancia de MongoDB es usar el comando nc. nc, abreviatura de netcat, es una utilidad usada para establecer conexiones de red con TCP o UDP. Es útil para probar en casos como este porque le permite especificar una dirección IP y un número de puerto.

      Primero, inicie sesión en su servidor de confianza usando SSH:

      • ssh sammy@trusted_server_ip

      A continuación, ejecute el siguiente comando nc, que incluye la opción -z. Esto limita a nc para que solo analice un daemon de escucha en el servidor de destino sin enviar datos. Recuerde del tutorial de instalación de requisitos previos que MongoDB está ejecutándose como un daemon de servicio, lo que hace que esta opción sea útil para probar la conectividad. También incluye la opción v que aumenta la verbosidad del comando, lo que hace que netcat devuelva un resultado que de otra forma no devolvería.

      Ejecute el siguiente comando nc desde su servidor remoto de confianza, asegurándose de sustituir mongodb_server_ip con la dirección IP del servidor sobre el cual instaló MongoDB:

      • nc -zv mongodb_server_ip 27017

      Si el servidor de confianza puede acceder al daemon de MongoDB, su resultado indicará que la conexión se realizó correctamente:

      Output

      Connection to mongodb_server_ip 27017 port [tcp/*] succeeded!

      Asumiendo que tenga una versión compatible del shell de mongo instalado en su servidor remoto, puede en este momento conectar directamente con la instancia de MongoDB instalada en el servidor host.

      Una forma de conectar es con una URI de cadena de conexión, como esta:

      • mongo "mongodb://mongo_server_ip:27017"

      Nota: Si siguió el tutorial recomendado Cómo proteger MongoDB en Ubuntu 20.04, habrá cerrado el acceso a su base de datos para los usuarios sin autenticar. En este caso, necesitará usar una URI que especifique un nombre de usuario válido, como esta:

      • mongo "mongodb://username@mongo_server_ip:27017"

      El shell le pedirá automáticamente que introduzca la contraseña del usuario.

      Con eso, ha confirmado que su servidor MongoDB puede aceptar conexiones desde el servidor de confianza.

      Conclusión

      Ahora puede acceder a su instalación de MongoDB desde un servidor remoto. En este momento, puede administrar su base de datos Mongo remotamente desde el servidor de confianza. Alternativamente, podría configurar una aplicación para que se ejecute en el servidor remoto y utilice la base de datos remotamente.

      Si no ha configurado un usuario administrativo y habilitado la autenticación, cualquiera que tenga acceso a su servidor remoto podrá acceder también a su instalación de MongoDB. Si aún no lo ha hecho, le recomendamos encarecidamente que siga nuestra guía sobre Cómo proteger MongoDB en Ubuntu 20.04 para añadir usuario administrativo y habilitar un bloqueo adicional.



      Source link

      Como configurar o acesso remoto ao MongoDB no Ubuntu 20.04


      Uma versão anterior deste tutorial foi escrita por Melissa Anderson.

      Introdução

      O MongoDB, também conhecido como Mongo, é um banco de dados de documentos de código aberto usado comumente em aplicações Web modernas. Por padrão, ele só permite conexões que se originam no mesmo servidor onde ele está instalado. Se você quiser gerenciar o MongoDB remotamente ou conectá-lo a um servidor de aplicações separado, há algumas alterações que você precisaria fazer na configuração padrão.

      Neste tutorial, você irá configurar uma instalação do MongoDB para permitir o acesso de forma segura a partir de um computador remoto confiável. Para fazer isso, você atualizará suas regras de firewall para fornecer o acesso remoto à porta em que o MongoDB está escutando conexões e então atualizará o arquivo de configuração para alterar a configuração de vinculação de IP. Em seguida, como um passo final, você irá testar se sua máquina remota é capaz de fazer a conexão com seu banco de dados com sucesso.

      Pré-requisitos

      Para completar este tutorial, será necessário:

      • Um servidor executando o Ubuntu 20.04. Cada servidor deverá ter um non-root user administrativo e um firewall configurado com o UFW. Configure isso seguindo o nosso guia de configuração inicial de servidor para o Ubuntu 20.04.
      • O MongoDB instalado no servidor. Este tutorial assume que você tenha o MongoDB 4.4 ou mais recente instalado. Instale essa versão seguindo nosso tutorial How To Install MongoDB on Ubuntu 20.04.
      • Um segundo computador a partir do qual você acessará sua instância do MongoDB. Para simplificar, este tutorial presume que esta máquina é outro servidor Ubuntu 20.04, com um usuário administrativo não root e um firewall UFW configurado seguindo nosso guia de configuração inicial de servidor para o Ubuntu 20.04. No entanto, os Passos 1 e 2, que descrevem o procedimento real para habilitar conectividade remota ao servidor de banco de dados, funcionarão independentemente do sistema operacional que a máquina remota estiver executando.

      Por fim, embora isso não seja necessário para completar este tutorial, recomendamos fortemente que você proteja sua instalação do MongoDB criando uma conta de usuário administrativa para o banco de dados e habilitando a autenticação. Para fazer isso, siga nosso tutorial How To Secure MongoDB on Ubuntu 20.04.

      Passo 2 — Ajustando o Firewall

      Supondo que você tenha seguido os pré-requisitos do tutorial de configuração inicial do servidor e habilitado um firewall UFW em seu servidor, sua instalação do MongoDB estará inacessível a partir da internet. Se pretende usar o servidor MongoDB apenas localmente com aplicativos funcionando no mesmo servidor, esta é a configuração recomendada e segura. No entanto, se você quer se conectar ao seu servidor MongoDB a partir de um local remoto, você tem que permitir conexões de entrada na porta em que o banco de dados está escutando, adicionando uma nova regra no UFW.

      Comece verificando qual porta a instalação do seu MongoDB está escutando com o comando lsof. Este comando normalmente retorna uma lista com todos os arquivos abertos em um sistema, mas quando combinado com a opção -i, ele lista apenas arquivos ou fluxos de dados relacionados à rede.

      O comando a seguir irá redirecionar a saída produzida pelo lsof -i para um comando grep que procura por uma string chamada mongo:

      • sudo lsof -i | grep mongo

      Esta saída de exemplo mostra que o MongoDB está escutando conexões em sua porta padrão, 27017:

      Output

      mongod 82221 mongodb 11u IPv4 913411 0t0 TCP localhost:27017 (LISTEN)

      Na maioria dos casos, o MongoDB deve ser acessado apenas por certos locais confiáveis, como outro servidor que hospeda uma aplicação. Uma maneira de configurar isso é executar o comando a seguir no servidor MongoDB, que abre o acesso na porta padrão do MongoDB enquanto permite explicitamente apenas o endereço IP do outro servidor confiável.

      Execute o comando a seguir, certificando-se de alterar o trusted_server_ip para o endereço IP da máquina remota confiável que você usará para acessar sua instância do MongoDB:

      Nota: se a saída do comando anterior mostrou que sua instalação do MongoDB está escutando em uma porta fora do padrão, use esse número de porta no lugar de 27017 neste comando.

      • sudo ufw allow from trusted_server_ip to any port 27017

      No futuro, se você quiser acessar o MongoDB a partir de outra máquina, execute esse comando novamente com o endereço IP da nova máquina no lugar de trusted_server_ip.

      Verifique a mudança nas configurações do firewall com o ufw:

      A saída mostrará que o tráfego para a porta 27017 a partir do servidor remoto está agora permitido:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 27017 ALLOW trusted_server_ip OpenSSH (v6) ALLOW Anywhere (v6)

      Você pode encontrar configurações de firewall mais avançadas para restringir o acesso a serviços em Conceitos básicos do UFW: regras e comandos comuns do firewall.

      Em seguida, você vinculará o MongoDB ao endereço IP público do servidor para que você possa acessá-lo a partir da máquina remota.

      Passo 2 — Configurando um bindIP público

      Neste ponto, mesmo que a porta esteja aberta, o MongoDB está atualmente vinculado a 127.0.0.1, a interface de rede de loopback local. Isso significa que o MongoDB só é capaz de aceitar conexões que se originam no servidor onde ele está instalado.

      Para permitir conexões remotas, você deve editar o arquivo de configuração do MongoDB — /etc/mongod.conf — para vincular o MongoDB adicionalmente ao endereço IP roteável publicamente do seu servidor. Desta forma, sua instalação do MongoDB será capaz de ouvir conexões feitas para seu servidor MongoDB a partir de máquinas remotas.

      Abra o arquivo de configuração do MongoDB em seu editor de texto preferido. O exemplo a seguir usa o nano:

      • sudo nano /etc/mongod.conf

      Encontre a seção network interfaces, e então o valor bindIp:

      /etc/mongod.conf

      . . .
      # network interfaces
      net:
        port: 27017
        bindIp: 127.0.0.1
      
      . . .
      

      Acrescente uma vírgula a esta linha seguida pelo endereço IP público do seu servidor MongoDB:

      /etc/mongod.conf

      . . .
      # network interfaces
      net:
        port: 27017
        bindIp: 127.0.0.1,mongodb_server_ip
      
      . . .
      

      Salve e feche o arquivo. Se você usou o nano, faça isso pressionando as teclas CTRL+X, Y e depois ENTER.

      Em seguida, reinicie o MongoDB para colocar essa alteração em vigor:

      • sudo systemctl restart mongod

      Depois disso, sua instalação do MongoDB aceitará conexões remotas a partir de quaisquer máquinas que você tenha permitido acessar a porta 27017. Como um passo final, verifique se o servidor remoto confiável que você permitiu através do firewall Passo 1 pode chegar à instância do MongoDB em execução em seu servidor.

      Passo 3 — Testando a conectividade remota

      Agora que você configurou a instalação do MongoDB para ouvir conexões que se originam em seu endereço IP roteável publicamente e concedeu o acesso à máquina remota através do firewall do seu servidor à porta padrão do Mongo, verifique se a máquina remota é capaz de se conectar.

      Nota: conforme mencionado na seção de pré-requisitos, este tutorial assume que a máquina remota é outro servidor executando o Ubuntu 20.04. O procedimento para habilitar conexões remotas descrito nos Passos 1 e 2 deve funcionar independentemente do sistema operacional que a máquina remota executa, mas os métodos de teste descritos neste passo não funcionam universalmente entre os sistemas operacionais.

      Uma maneira de testar se o servidor remoto confiável é capaz de se conectar à instância do MongoDB é usar o comando nc.nc, abreviatura para netcat, é um utilitário usado para estabelecer conexões de rede com TCP ou UDP. Ele é útil para testar casos como esse, pois ele permite especificar tanto um endereço IP quanto um número de porta.

      Primeiro, faça login no servidor confiável usando o SSH:

      • ssh sammy@trusted_server_ip

      Depois, execute o comando nc a seguir, que inclui a opção -z. Isso limita o nc a varrer apenas um daemon escutando no servidor de destino, sem enviar nenhum dado. Lembre-se do tutorial de pré-requisitos de instalação que o MongoDB está sendo executado como um daemon de serviço, tornando esta opção útil para testar a conectividade. Ele também inclui a opção v que aumenta a verbosidade do comando, fazendo com que o netcat retorne alguma saída que de outra forma não aconteceria.

      Execute o comando nc a seguir a partir do servidor remoto confiável, certificando-se de substituir mongodb_server_ip pelo endereço IP do servidor em que você instalou o MongoDB:

      • nc -zv mongodb_server_ip 27017

      Se o servidor confiável puder acessar o daemon do MongoDB, sua saída indicará que a conexão foi bem sucedida:

      Output

      Connection to mongodb_server_ip 27017 port [tcp/*] succeeded!

      Supondo que você tenha uma versão compatível do shell mongo instalada no servidor remoto, você pode neste ponto se conectar diretamente à instância do MongoDB instalada no servidor host.

      Uma maneira de se conectar é com uma string de conexão URI, como esta:

      • mongo "mongodb://mongo_server_ip:27017"

      Nota: se você seguiu o tutorial recomendado How To Secure MongoDB on Ubuntu 20.04, você terá fechado o acesso ao banco de dados a usuários não autenticados. Neste caso, você precisará usar uma URI que especifique um nome de usuário válido, como esta:

      • mongo "mongodb://username@mongo_server_ip:27017"

      O shell lhe pedirá automaticamente para inserir a senha do usuário.

      Com isso, você confirmou que o servidor MongoDB pode aceitar conexões do servidor confiável.

      Conclusão

      Agora é possível acessar a instalação do MongoDB a partir de um servidor remoto. Neste ponto, você pode gerenciar seu banco de dados Mongo remotamente a partir do servidor confiável. Alternativamente, você poderia configurar uma aplicação para ser executada no servidor confiável e usar o banco de dados remotamente.

      Se você não configurou um usuário administrativo e habilitou a autenticação, qualquer um que tenha acesso ao servidor remoto também pode acessar a instalação do MongoDB. Se você ainda não fez isso, recomendamos fortemente que você siga nosso guia How To Secure MongoDB on Ubuntu 20.04 para adicionar um usuário administrativo e bloquear ainda mais as coisas.



      Source link

      Cómo instalar y configurar Postfix como servidor SMTP solo de envío en Ubuntu 20.04


      El autor seleccionó Free and Open Source Fund para recibir una donación como parte del programa Write for DOnations.

      Introducción

      Postfix es un agente de transferencia de correo (MTA), una aplicación que se utiliza para enviar y recibir correos electrónicos. Se puede configurar para que solo se pueda utilizar para enviar correos electrónicos mediante una aplicación local.  Esto es útil en situaciones en las que necesita enviar notificaciones por correo electrónico de sus aplicaciones de forma regular o, simplemente, si tiene mucho tráfico saliente que un proveedor de servicios de correo electrónico externo no permite. También es una alternativa más ligera a la ejecución de un servidor SMTP completo que mantiene la funcionalidad necesaria.

      En este tutorial, instalará y configurará Postfix como servidor SMTP de solo envío. También solicitará certificados TLS gratuitos de Let´s Encrypt para su dominio y cifrará los correos electrónicos salientes con ellos.

      Requisitos previos

      • Un servidor de Ubuntu 20.04 configurado conforme a la Configuración inicial de servidores para Ubuntu 20.04, con un usuario no root.
      • Un nombre de dominio registrado por completo. Para este tutorial, se utilizará your_domain en todo momento. Puede adquirir un nombre de dominio en Namecheap, obtener uno gratuito en Freenom o utilizar un registrador de dominios que elija.
      • Un registro DNS A con your_domain orientado a la dirección IP pública de su servidor. Puede utilizar esta introducción al DNS de DigitalOcean para obtener más información sobre cómo agregarlos.

      Nota: El nombre de host de su servidor y el nombre de su Droplet deben coincidir con your_domain, dado que DigitalOcean establece registros de PTR automáticamente para la dirección IP del Droplet de acuerdo con su nombre.

      Puede verificar el nombre de host del servidor al escribir hostname en el símbolo del sistema. El resultado debe coincidir con el nombre que le dio al Droplet al crearlo.

      Paso 1: Instalar Postfix

      En este paso, instalará Postfix. Lo más rápido es instalar el paquete mailutils, que agrupa Postfix con algunos programas complementarios que usará para probar el envío de correos electrónicos.

      Primero, actualice la base de datos del paquete:

      A continuación, instale Postfix al ejecutar el siguiente comando:

      • sudo apt install mailutils

      Cerca del final del proceso de instalación, se le presentará la ventana de configuración de Postfix:

      Seleccione Internet Site en el menú y, luego, presione TAB para seleccionar<Ok>y, luego, presione ENTER.

      La opción predeterminada es Internet Site. Es la opción recomendada para su caso de uso, por lo tanto, presione TAB y, luego, ENTER. Si solo ve el texto de la descripción, presione TAB para seleccionar OK y, luego, ENTER.

      Si no se muestra automáticamente, ejecute el siguiente comando para iniciarlo:

      • sudo dpkg-reconfigure postfix

      Luego, recibirá otro mensaje de configuración con respecto a System mail name (el nombre de correo del sistema):

      Ingrese su nombre de dominio y, luego, presione TAB para seleccionar<Ok>y, luego, ENTER.

      El nombre de correo del sistema debe ser el mismo que el que asignó a su servidor al crearlo. Cuando termine, presione TAB y, luego, ENTER.

      Ahora, tiene Postfix instalado y está listo para comenzar a configurarlo.

      Paso 2: Configurar Postfix

      En este paso, configurará Postfix para enviar y recibir correos electrónicos únicamente del servidor en el que se está ejecutando; es decir, desde localhost.

      Para que eso suceda, debe configurar Postfix para que escuche únicamente en la interfaz de loopback, que es la interfaz de red virtual que utiliza el servidor para comunicarse internamente. Para realizar los cambios necesarios, deberá editar el archivo de configuración principal de Postfix, denominado main.cf, que se encuentra en etc/postfix.

      Ábralo para modificarlo con su editor de texto favorito:

      • sudo nano /etc/postfix/main.cf

      Busque las siguientes líneas:

      /etc/postfix/main.cf

      . . .
      mailbox_size_limit = 0
      recipient_delimiter = +
      inet_interfaces = all
      . . .
      

      Establezca el valor de inet_interfaces en loopback-only:

      /etc/postfix/main.cf

      . . .
      mailbox_size_limit = 0
      recipient_delimiter = +
      inet_interfaces = loopback-only
      . . .
      

      Otra directiva que deberá modificar es mydestination, que especifica la lista de dominios que se entregan a través del transporte de entrega de correo local_transport. Por defecto, los valores son similares a los siguientes:

      /etc/postfix/main.cf

      . . .
      mydestination = $myhostname, your_domain, localhost.com, , localhost
      . . .
      

      Cambie la línea para que tenga el siguiente aspecto:

      /etc/postfix/main.cf

      . . .
      mydestination = localhost.$mydomain, localhost, $myhostname
      . . .
      

      Si su dominio, en realidad, es un subdominio y desea que los mensajes de correo electrónico se vean como si se enviaran del dominio principal, puede añadir la siguiente línea al final de main.cf:

      /etc/postfix/main.cf

      ...
      masquerade_domains = your_main_domain
      

      La configuración opcional de masquerade_domains especifica para qué dominios se eliminará la parte de subdominio en la dirección de correo electrónico.

      Cuando termine, guarde y cierre el archivo.

      Nota: Si aloja varios dominios en un único servidor, los demás también se pueden pasar a Postfix al utilizar la directiva mydestination.

      A continuación, reinicie Postfix al ejecutar el siguiente comando:

      • sudo systemctl restart postfix

      Configuró Postfix para que solo envíe correos electrónicos desde su servidor. Ahora, lo probará al enviar un mensaje de ejemplo a una dirección de correo electrónico.

      Paso 3: Probar el servidor SMTP

      En este paso, probará si Postfix puede enviar correos electrónicos a una cuenta de correo electrónico externa usando el comando mail, que es parte del paquete mailutils que instaló en el primer paso.

      Para enviar un correo electrónico de prueba, ejecute el siguiente comando:

      • echo "This is the body of the email" | mail -s "This is the subject line" your_email_address

      Puede cambiar el cuerpo y el asunto del correo electrónico a su gusto. Recuerde sustituir your_email_address por una dirección de correo electrónico válida a la que pueda acceder.

      Ahora, revise el correo en la dirección de correo electrónico a la que envió este mensaje. Debería ver el mensaje en su bandeja de entrada. Si no lo ve, revise su carpeta de correo no deseado. En este punto, los correos electrónicos que envía no están cifrados, lo que hace que los proveedores de servicios piensen que es probable que sean correos no deseados.  Configurará el cifrado más adelante, en el paso 5.

      Si recibe un error del comando mail, o si no recibió un mensaje después de un período prolongado, compruebe que la configuración de Postfix que modificó sea válida y que el nombre de su servidor y el nombre de host estén establecidos con el nombre de su dominio.

      Observe que, con esta configuración, la dirección del campo From de los correos electrónicos de prueba que envíe tendrá el formato your_user_name@your_domain​​, en el que your_user_name es el nombre del usuario del servidor con el que ejecutó el comando.

      En este punto, envió un correo electrónico desde su servidor y verificó que se haya recibido correctamente. En el siguiente paso, configurará el reenvío de correos electrónicos para root.

      Paso 4: Reenviar correos del sistema

      En este paso, configurará el reenvío de correos electrónicos para el usuario root, a fin de que los mensajes generados por el sistema que se le envíen en su servidor se reenvíen a una dirección de correo electrónico externa.

      El archivo /etc/aliases contiene una lista de nombres alternativos de destinatarios de correo electrónico. Ábralo​​​ para editarlo:

      En su estado predeterminado, tiene el siguiente aspecto:

      /etc/aliases

      # See man 5 aliases for format
      postmaster:    root
      

      La única directiva presente especifica que los correos electrónicos generados por el sistema se envíen a root.

      Añada la siguiente línea al final del archivo:

      /etc/aliases

      ...
      root:          your_email_address
      

      Con esta línea, especifica que los correos electrónicos enviados al usuario root se reenvíen a una dirección de correo electrónico específica. Recuerde sustituir your_email_address por su dirección de correo electrónico personal. Cuando termine, guarde y cierre el archivo.

      Para que el cambio surta efecto, ejecute el siguiente comando:

      Al ejecutar newaliases, se creará una base de datos de alias que utiliza el comando mail, que se toman del archivo de configuración que acaba de editar.

      Compruebe que se envíen correos electrónicos al usuario root al ejecutar lo siguiente:

      • echo "This is the body of the email" | mail -s "This is the subject line" root

      Debería recibir el correo en su dirección de correo electrónico. Si no lo ve, revise su carpeta de correo no deseado.

      En este paso, configuró el reenvío de mensajes generados por el sistema a su dirección de correo electrónico. Ahora, habilitará el cifrado de mensajes para que todos los correos electrónicos que envíe su servidor estén protegidos contra alteraciones en tránsito y se consideren más legítimos.

      Paso 5: Habilitar el cifrado SMTP

      Ahora, habilitará el cifrado SMTP al solicitar un certificado TLS gratuito de Let´s Encrypt para su dominio (con Certbot) y configurará Postfix para que lo utilice al enviar mensajes.

      Ubuntu incluye Certbot en sus repositorios de paquetes predeterminados, para que pueda instalarlo ejecutando el siguiente comando:

      Cuando se le pida confirmación, escriba Y y presione ENTER.

      En los requisitos previos, instaló el firewall sencillo ufw como parte de la configuración inicial del servidor. Deberá configurarlo para que habilite el puerto HTTP 80 para que se pueda completar la verificación de dominios. Ejecute el siguiente comando para habilitarlo:

      El resultado tendrá el siguiente aspecto:

      Output

      Rule added Rule added (v6)

      Ahora que el puerto está abierto, ejecute Certbot para obtener un certificado:

      • sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d your_domain

      Este comando le ordena a Certbot que emita certificados con un tamaño de clave RSA de 4096 bits, que ejecute un servidor web autónomo temporal (--standalone) para la verificación y que revise a través del puerto 80 (--preferred-challenges http). Recuerde sustituir your_domain por su dominio antes de ejecutar el comando e ingrese su dirección de correo electrónico cuando se le solicite hacerlo.

      El resultado tendrá un aspecto similar a este:

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for `your_domain` Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your cert will expire on 2020-07-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

      Como se indica en las notas, su certificado y su archivo de clave privada se guardaron en /etc/letsencrypt/live/your_domain.

      Ahora que tiene su certificado, abra main.cf para editarlo:

      • sudo nano /etc/postfix/main.cf

      Busque la siguiente sección:

      /etc/postfix/main.cf

      # TLS parameters
      smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
      smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
      smtpd_tls_security_level=may
      
      smtp_tls_CApath=/etc/ssl/certs
      smtp_tls_security_level=may
      smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
      

      Modifíquela para que tenga este aspecto, sustituyendo your_domain por su dominio cuando sea necesario. Esto actualizará sus ajustes TLS para Postfix:

      /etc/postfix/main.cf

      # TLS parameters
      smtpd_tls_cert_file=/etc/letsencrypt/live/your_domain/fullchain.pem
      smtpd_tls_key_file=/etc/letsencrypt/live/your_domain/privkey.pem
      smtpd_tls_security_level=may
      
      smtp_tls_CApath=/etc/ssl/certs
      smtp_tls_security_level=may
      smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
      

      Cuando termine, guarde y cierre el archivo.

      Aplique los cambios al reiniciar Postfix:

      • sudo systemctl restart postfix

      Ahora, vuelva a probar enviar un correo electrónico:

      • echo "This is the body of an encrypted email" | mail -s "This is the subject line" your_email_address

      A continuación, revise el correo de la dirección de correo electrónico que proporcionó. Es posible que vea el mensaje en su bandeja de entrada de inmediato, porque es mucho más probable que los proveedores de correo electrónico clasifiquen los mensajes no cifrados como correo no deseado.

      Puede consultar la información técnica sobre el mensaje de correo electrónico en su cliente para ver que el mensaje, efectivamente, está cifrado.

      Conclusión

      Ahora, tiene un servidor de correo electrónico de solo envío de Postfix. Cifrar todos los mensajes salientes es un buen primer paso para que los proveedores de correo electrónico no clasifiquen sus mensajes directamente como correo no deseado. Si está haciendo esto en un escenario de desarrollo, esta medida debería ser suficiente.

      Sin embargo, si desea enviar correos electrónicos a posibles usuarios del sitio (por ejemplo, correos de confirmación para la inscripción a un tablero de mensajes), considere establecer registros SPF para que los correos electrónicos de su servidor tengan más probabilidades de considerarse legítimos.



      Source link