One place for hosting & domains

      Postfix

      Comment installer et configurer Postfix en tant que serveur SMTP à envoi uniquement sur Ubuntu 18.04


      L’auteur a choisi le Free and Open Source Fund comme récipiendaire d’un don dans le cadre du programme Write for DOnations.

      Introduction

      Postfix est un agent de transfert de courriel (MTA), une application utilisée pour envoyer et recevoir des courriels. Elle peut être configurée de manière à ce qu’elle puisse être utilisée pour envoyer des courriels par application locale uniquement. Cela est utile dans les situations où vous devez régulièrement envoyer des notifications par courrier électronique à partir de vos applications, ou simplement en cas de trafic sortant important qu’un fournisseur de services de courrier électronique tiers n’autoriserait pas. C’est également une alternative plus légère à l’exploitation d’un serveur SMTP complet, tout en conservant les fonctionnalités requises.

      Dans ce tutoriel, vous allez installer et configurer Postfix en tant que serveur SMTP pour l’envoi uniquement. Vous allez également demander des certificats TLS gratuits à Let’s Encrypt pour votre domaine et crypter les courriels sortants à l’aide de ces certificats.

      Conditions préalables

      • Un serveur Ubuntu 20.04 configuré avec la Configuration initiale du serveur avec Ubuntu 20.04 y compris la création d’un sudo non root user.
      • Un nom de domaine entièrement enregistré. Ce tutoriel utilisera your_domain. Vous pouvez acheter un nom de domaine sur Namecheap, en obtenir un gratuitement sur Freenom, ou utiliser le bureau d’enregistrement de domaine de votre choix.
      • Un enregistrement DNS A avec your_domain pointant sur l’adresse IP publique de votre serveur. Vous pouvez suivre cette introduction à DigitalOcean DNS pour savoir comment les ajouter.

      Note : Le nom d’hôte de votre serveur et le nom de votre Droplet doivent correspondre à your_domain car DigitalOcean établit automatiquement des enregistrements PTR pour l’adresse IP de la Droplet en fonction de son nom. 

      Vous pouvez vérifier le nom d’hôte du serveur en tapant hostname à l’invite de commande. La sortie doit correspondre au nom que vous avez donné à la Droplet lors de sa création.

      Étape 1 — Installer Postfix

      Dans cette étape, vous allez installer Postfix. Le moyen le plus rapide est d’installer le paquet mailutils qui regroupe Postfix avec quelques programmes supplémentaires que vous utiliserez pour tester l’envoi de courrier électronique. 

      Tout d’abord, mettez à jour la base de données des paquets :

      Ensuite, installez Postfix en exécutant la commande suivante :

      • sudo apt install mailutils

      Vers la fin du processus d’installation, la fenêtre de configuration de Postfix vous sera présentée :

      Sélectionnez Internet Site dans le menu, puis appuyez sur la touche TAB pour sélectionner<Ok>puis ENTRÉE 

      L’option par défaut est Site Internet. C’est l’option recommandée pour votre cas d’utilisation, donc appuyez sur TAB, puis ENTRÉE. Si vous ne voyez que le texte de la description, appuyez sur TAB pour sélectionner OK, puis sur ENTER. 

      S’il ne s’affiche pas automatiquement, exécutez la commande suivante pour le démarrer :

      • sudo dpkg-reconfigure postfix

      Après cela, vous obtiendrez une autre invite de configuration concernant le nom de messagerie du système :

      Entrez votre nom de domaine, puis appuyez sur TAB pour sélectionner<Ok>ENTRÉE

      Le nom de messagerie du système doit être le même que celui que vous avez attribué à votre serveur lors de sa création. Lorsque vous avez terminé, appuyez sur TAB, puis sur ENTRÉE.

      Vous avez maintenant installé Postfix et vous êtes prêt à commencer à le configurer.

      Étape 2 — Configurer Postfix

      Au cours de cette étape, vous configurerez Postfix pour envoyer et recevoir des courriels uniquement à partir du serveur sur lequel il fonctionne, c’est-à-dire à partir de localhost.

      Pour que cela arrive, Postfix doit être configuré pour écouter uniquement sur l’interface de bouclage, l’interface de réseau virtuel que le serveur utilise pour communiquer en interne. Pour effectuer les changements, vous devrez modifier le fichier de configuration principal de Postfix appelé main.cf, stocké sous etc/postfix. 

      Ouvrez-le pour l’éditer à l’aide de votre éditeur de texte préféré :

      • sudo nano /etc/postfix/main.cf

      Trouvez les lignes suivantes :

      /etc/postfix/main.cf

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

      Définissez la valeur du paramètre inet_interfaces à loopback-only :

      /etc/postfix/main.cf

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

      Une autre directive que vous devrez modifier est la directive mydestination qui spécifie la liste des domaines qui sont distribués via le transport de courrier local_transport. Par défaut, les valeurs sont similaires à celles-ci :

      /etc/postfix/main.cf

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

      Changez la ligne pour qu’elle ressemble à ceci :

      /etc/postfix/main.cf

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

      Si votre domaine est en fait un sous-domaine, et que vous souhaitez que les courriels aient l’air d’avoir été envoyés depuis le domaine principal, vous pouvez ajouter la ligne suivante à la fin de main.cf:

      /etc/postfix/main.cf

      ...
      masquerade_domains = your_main_domain
      

      Le paramètre facultatif masquerade_domains spécifie pour quels domaines la partie de sous-domaine sera supprimée dans l’adresse e-mail.

      Lorsque vous avez terminé, enregistrez et fermez le fichier.

      Note : Si vous hébergez plusieurs domaines sur un seul serveur, les autres domaines peuvent également être transmis à Postfix en utilisant la directive mydestination.

      Ensuite, redémarrez Postfix en exécutant la commande suivante :

      • sudo systemctl restart postfix

      Vous avez configuré Postfix pour n’envoyer des courriels qu’à partir de votre serveur. Vous allez maintenant le tester en envoyant un exemple de message à une adresse électronique.

      Étape 3 — Tester le serveur SMTP

      Au cours de cette étape, vous allez tester si Postfix peut envoyer des courriels à un compte de messagerie externe en utilisant la commande mail qui fait partie du paquet mailutils que vous avez installé lors de la première étape.

      Pour envoyer un courriel de test, exécutez la commande suivante :

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

      Vous pouvez changer le corps et l’objet du courriel à votre convenance. N’oubliez pas de remplacer your_email_address avec une adresse électronique valide à laquelle vous pouvez accéder. 

      Maintenant, vérifiez l’adresse électronique à laquelle vous avez envoyé ce message. Vous devriez voir le message dans votre boîte de réception. S’il n’y est pas, vérifiez votre dossier de courrier indésirable. À ce stade, tous les courriers électroniques que vous envoyez ne sont pas cryptés, ce qui fait penser aux fournisseurs de services qu’il s’agit probablement de spam. Vous mettrez en place le cryptage plus tard, à l’étape 5.

      Si vous recevez une erreur de la part de la commande mail ou que vous n’avez pas reçu de message après une période prolongée, vérifiez que la configuration de Postfix que vous avez modifiée est valide et que le nom de votre serveur et le nom d’hôte sont définis pour votre domaine.

      Notez qu’avec cette configuration, l’adresse dans le champ de départ pour les courriels de test que vous envoyez sera sous la forme your_user_name@your_domain, où your_user_name est le nom d’utilisateur de l’utilisateur du serveur sous lequel vous avez exécuté la commande. 

      Vous avez maintenant envoyé un courriel à partir de votre serveur et vérifié qu’il a bien été reçu. Dans l’étape suivante, vous mettrez en place une redirection de courrier électronique pour root. 

      Étape 4 — Transférer le courrier système

      Au cours de cette étape, vous configurerez le transfert de courrier électronique pour l’utilisateur root afin que les messages générés par le système qui lui sont envoyés sur votre serveur soient transférés à une adresse électronique externe.

      Le fichier /etc/aliases contient une liste de noms alternatifs pour les destinataires du courrier électronique. Ouvrez-le pour le modifier :

      Dans son état par défaut, il ressemble à ceci :

      /etc/aliases

      # See man 5 aliases for format
      postmaster:    root
      

      La seule directive présente précise que les courriels générés par le système sont envoyés à root.

      Ajoutez la ligne suivante à la fin du fichier :

      /etc/aliases

      ...
      root:          your_email_address
      

      Avec cette ligne, vous précisez que les courriels envoyés à root finissent par être transférés à une adresse électronique. N’oubliez pas de remplacer your_email_address avec votre adresse électronique personnelle. Lorsque vous avez terminé, enregistrez et fermez le fichier.

      Pour que le changement prenne effet, exécutez la commande suivante :

      L’exécution de newaliases permet de constituer une base de données des alias utilisés par la commande mail, qui sont extraits du fichier de configuration que vous venez d’éditer.

      Testez que l’envoi de courriels vers root fonctionne, en exécutant :

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

      Vous devriez recevoir le courriel à votre adresse électronique. S’il n’y est pas, vérifiez votre dossier spam.

      Dans cette étape, vous avez mis en place le transfert des messages générés par le système vers votre adresse électronique. Vous allez maintenant activer le cryptage des messages de sorte que tous les courriers électroniques envoyés par votre serveur sont à l’abri de toute altération pendant leur transit et seront considérés comme plus légitimes.

      Étape 5 — Activation du cryptage SMTP

      Vous allez maintenant activer le cryptage SMTP en demandant un certificat TLS gratuit à Let’s Encrypt pour votre domaine (en utilisant Certbot) et en configurant Postfix pour l’utiliser lors de l’envoi de messages.

      Ubuntu inclut Certbot dans ses référentiels de paquets par défaut ; vous pouvez donc l’installer en exécutant la commande suivante :

      Lorsqu’on vous demande une confirmation, tapez Y et appuyez sur ENTER .

      Lors de la configuration initiale du serveur dans les conditions préalables, vous avez installé ufw, le pare-feu non compliqué. Vous devrez le configurer pour autoriser le port HTTP 80 afin que la vérification du domaine puisse être effectuée. Exécutez la commande suivante pour l’activer :

      La sortie finale ressemblera à ceci :

      Output

      Rule added Rule added (v6)

      Maintenant que le port est ouvert, lancez Certbot pour obtenir un certificat :

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

      Cette commande ordonne à Certbot d’émettre des certificats avec une clé RSA de 4096 bits pour faire fonctionner un serveur Web autonome temporaire (--standalone) pour la vérification, et pour vérifier via le port 80 (--preferred-challenges http). N’oubliez pas de remplacer your_domain par votre domaine avant d’exécuter la commande, et entrez votre adresse électronique lorsque vous y êtes invité. 

      Le résultat sera similaire à celui-ci :

      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

      Comme indiqué dans les notes, votre certificat et votre fichier de clé privée ont été enregistrés sous /etc/letsencrypt/live/your_domain. 

      Maintenant que vous avez votre certificat, ouvrez main.cf pour l’éditer :

      • sudo nano /etc/postfix/main.cf

      Trouvez la section suivante :

      /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
      

      Modifiez-le pour qu’il ressemble à ceci, en remplaçant your_domain par votre domaine, si nécessaire. Cela permettra de mettre à jour vos paramètres TLS pour 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
      

      Une fois que vous avez terminé, enregistrez et fermez le fichier.

      Pour appliquer les changements, redémarrez Postfix :

      • sudo systemctl restart postfix

      Maintenant, essayez d’envoyer à nouveau un courriel :

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

      Ensuite, vérifiez l’adresse électronique que vous avez fournie. Il est possible que vous voyiez le message dans votre boîte de réception immédiatement car les fournisseurs de messagerie électronique sont beaucoup plus susceptibles de marquer les messages non cryptés comme étant du spam.

      Vous pouvez vérifier les informations techniques concernant le message électronique dans votre client pour voir si le message est effectivement crypté.

      Conclusion

      Vous disposez maintenant d’un serveur de courrier électronique à envoi unique, alimenté par Postfix. Le cryptage de tous les messages sortants est un premier pas efficace pour que les fournisseurs de services de messagerie électronique ne marquent pas purement et simplement vos messages comme du spam. Si vous faites cela dans un scénario de développement, alors cette mesure devrait suffire.

      Cependant, si votre cas d’utilisation est l’envoi de courriels aux utilisateurs potentiels du site (comme des courriels de confirmation pour l’inscription à un forum), vous devriez envisager de créer des registres SPF afin que les courriels de votre serveur soient encore plus susceptibles d’être considérés comme légitimes.



      Source link

      Como instalar e configurar o Postfix como um servidor SMTP apenas para envio no Ubuntu 20.04


      O autor selecionou o Free and Open Source Fund para receber uma doação como parte do programa Write for DOnations.

      Introdução

      O Postfix é um agente de transferência de e-mail (MTA), uma aplicação utilizada para enviar e receber e-mails. Ele pode ser configurado para enviar e-mails apenas de uma aplicação local. Isso é útil em situações em que você precisa enviar regularmente notificações por e-mail de seus apps ou, simplesmente, tem um grande tráfego de saída que um provedor de serviço de e-mail de terceiros não permitiria. Ele também é uma alternativa mais leve do que executar um servidor SMTP completo, enquanto mantém a funcionalidade necessária.

      Neste tutorial, você instalará e configurará o Postfix como um servidor SMTP apenas para envio. Você também solicitará certificados TLS gratuitos do Let’s Encrypt para seu domínio e criptografará os e-mails de saída usando-os.

      Pré-requisitos

      • Um servidor Ubuntu 20.04 configurado de acordo com o tutorial Initial Server Setup with Ubuntu 20.04, incluindo a criação de um usuário sudo não root.
      • Um nome de domínio totalmente registrado. Este tutorial utilizará o your_domain durante todo o processo. Você pode comprar um nome de domínio em Namecheap, obter um gratuitamente em Freenom ou usar o registrador de domínios de sua escolha.
      • Um registro de DNS do tipo A com your_domain apontando para o endereço IP público do seu servidor. Você pode seguir esta introdução para DNS DigitalOcean para mais detalhes sobre como adicioná-los.

      Nota: o hostname do seu servidor e o nome do seu Droplet devem corresponder ao your_domain, pois a DigitalOcean define automaticamente os registros de PTR para o endereço IP do Droplet de acordo com o nome dele.

      Você pode verificar o hostname do servidor digitando hostname no prompt de comando. A saída deve corresponder ao nome que você deu ao Droplet quando ele foi criado.

      Passo 1 — Instalando o Postfix

      Neste passo, você instalará o Postfix. A maneira mais rápida é instalar o pacote mailutils, que inclui os pacotes do Postfix com alguns programas suplementares que você utilizará para testar o envio de e-mail.

      Primeiro, atualize o banco de dados de pacotes:

      Em seguida, instale o Postfix executando o seguinte comando:

      • sudo apt install mailutils

      Perto do final do processo de instalação, será mostrada a janela de configuração do Postfix:

      Selecione Internet Site no menu e pressione TAB para selecionar<Ok>, depois ENTER

      A opção padrão é Internet Site Essa é a opção recomendada para seu caso de uso. Então, pressione TAB e, depois, ENTER. Se você só vir o texto de descrição, pressione TAB para selecionar OK, depois ENTER.

      Se ele não aparecer automaticamente, execute o seguinte comando para iniciá-lo:

      • sudo dpkg-reconfigure postfix

      Após isso, você receberá outro prompt de configuração sobre o nome do sistema de e-mail:

      Digite seu nome de domínio e, depois, pressione TAB para selecionar<Ok>, ENTER

      O nome do sistema de e-mail deve ser o mesmo que você atribuiu ao seu servidor quando você o estava criando. Quando você terminar, pressione TAB, seguido de ENTER.

      Agora você instalou o Postfix e poderá iniciar a configuração dele.

      Passo 2 — Configurando o Postfix

      Neste passo, você configurará o Postfix para enviar e receber e-mails apenas do servidor no qual ele está em execução — ou seja do localhost.

      Para que isso aconteça, você precisa configurar o Postfix para ouvir apenas na interface de loopback, a interface de rede virtual que o servidor utiliza para se comunicar internamente. Para fazer as alterações, você precisará editar o arquivo de configuração principal do Postfix chamado main.cf, armazenado em etc/postfix.

      Abra-o para edição utilizando seu editor de texto favorito:

      • sudo nano /etc/postfix/main.cf

      Procure as seguintes linhas:

      /etc/postfix/main.cf

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

      Defina o valor da configuração inet_interfaces para loopback-only:

      /etc/postfix/main.cf

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

      Outra diretiva que você precisará modificar é mydestination, que especifica a lista de domínios que são entregues através do transporte de entrega de correio local_transport. Por padrão, os valores são semelhantes a estes:

      /etc/postfix/main.cf

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

      Altere a linha para que ela fique como esta:

      /etc/postfix/main.cf

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

      Se o domínio é na verdade um subdomínio, e você gostaria que as mensagens de e-mail parecessem ter sido enviadas do domínio principal, adicione a seguinte linha ao final de main.cf:

      /etc/postfix/main.cf

      ...
      masquerade_domains = your_main_domain
      

      A configuração opcional masquerade_domains especifica os domínios para os quais o subdomínio será removido do endereço de e-mail.

      Quando terminar, salve e feche o arquivo.

      Nota: se você está hospedando vários domínios em um único servidor, os outros domínios podem também ser passados para o Postfix utilizando a diretiva mydestination.

      Em seguida, reinicie o Postfix executando o seguinte comando:

      • sudo systemctl restart postfix

      Você configurou o Postfix para enviar e-mails apenas do seu servidor. Agora, você irá testá-lo enviando uma mensagem de exemplo para um endereço de e-mail.

      Passo 3 — Testando o Servidor SMTP

      Neste passo, você testará se o Postfix pode enviar e-mails para uma conta de e-mail externa usando o comando mail, que faz parte do pacote mailutils que você instalou no primeiro passo.

      Para enviar um e-mail de teste, execute o seguinte comando:

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

      Você pode alterar o corpo e o assunto do e-mail ao seu gosto. Lembre-se de substituir your_email_address por um endereço de e-mail válido que você possa acessar.

      Agora, verifique o endereço de e-mail para o qual você enviou esta mensagem. Você deve ver a mensagem em sua caixa de entrada. Se ele não estiver lá, verifique sua pasta de spam. Neste ponto, todos os e-mails que você envia não são criptografados, o que faz com que os prestadores de serviços pensem que ele é provavelmente spam. Você configurará a criptografia mais tarde, no passo 5.

      Se você receber um erro do comando mail, ou se não tiver recebido uma mensagem após um longo período de tempo, verifique se a configuração do Postfix que você editou é válida e que o nome e o hostname do seu servidor estão configurados para o seu domínio.

      Observe que com esta configuração, o endereço no campo From para os e-mails de teste que você envia estará na forma de your_user_name@your_domain, onde your_user_name é o nome de usuário do servidor com o qual você executou o comando.

      Agora, você enviou um e-mail do seu servidor e verificou se ele foi recebido com sucesso. No próximo passo, você configurará o encaminhamento de e-mail para o root.

      Passo 4 — Sistema de encaminhamento de e-mail

      Neste passo, você configurará o encaminhamento e-mail para o usuário root, para que as mensagens geradas pelo sistema enviadas a ele em seu servidor sejam encaminhadas para um endereço de e-mail externo.

      O arquivo /etc/aliases contém uma lista de nomes alternativos para os destinatários de e-mail. Abra-o para edição:

      No estado padrão, ele se parece com isto:

      /etc/aliases

      # See man 5 aliases for format
      postmaster:    root
      

      A única diretiva presente especifica que os e-mails gerados pelo sistema são enviados para o root.

      Adicione a linha seguinte ao final do arquivo:

      /etc/aliases

      ...
      root:          your_email_address
      

      Com esta linha, você especifica que e-mails enviados para o root acabam sendo encaminhados para um endereço de e-mail. Lembre-se de substituir your_email_address pelo seu endereço de e-mail pessoal. Quando terminar, salve e feche o arquivo.

      Para que a mudança entre em vigor, execute o seguinte comando:

      A execução do newaliases construirá um banco de dados de aliases que o comando mail utiliza, que são pegos do arquivo de configuração que você acabou de editar.

      Teste se o envio de e-mails para o root funciona executando:

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

      Você deve receber o e-mail em seu endereço e-mail. Se ele não estiver lá, verifique sua pasta de spam.

      Neste passo, você configurou o encaminhamento de mensagens geradas pelo sistema para seu endereço de e-mail. Agora, você habilitará a criptografia de mensagens para que todos os e-mails que seu servidor enviar sejam imunizados contra adulteração em trânsito e sejam vistos como mais legítimos.

      Passo 5 — Habilitando a criptografia SMTP

      Agora você habilitará a criptografia SMTP solicitando um certificado TLS gratuito da Let’s Encrypt para o seu domínio (usando Certbot) e configurando o Postfix para usá-lo ao enviar mensagens.

      O Ubuntu inclui o Certbot em seus repositórios de pacotes padrão, para que você possa instalá-lo executando o seguinte comando:

      Quando solicitada a confirmação, digite Y e pressione ENTER.

      Como parte da configuração inicial de servidor nos pré-requisitos, você instalou o ufw, o firewall descomplicado. Você precisará configurá-lo para permitir a porta HTTP 80, para que a verificação de domínios possa ser concluída. Execute o comando a seguir para habilitá-lo:

      O resultado ficará parecido com este:

      Output

      Rule added Rule added (v6)

      Agora que a porta está aberta, execute o Certbot para obter um certificado:

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

      Este comando ordena que o Certbot emita certificados com um tamanho de chaves RSA de 4096 bits para executar um servidor web temporário (--standalone) para verificação, e para verificar através da porta 80 (--preferred-challenges http). Lembre-se de substituir your_domain pelo seu domínio antes de executar o comando e digite seu endereço de e-mail quando solicitado.

      O resultado será semelhante 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 escrito nas notas, seu certificado e o arquivo de chave privada foram salvos em /etc/letsencrypt/live/your_domain.

      Agora que você tem seu certificado, abra o main.cf para edição:

      • sudo nano /etc/postfix/main.cf

      Procure a seguinte sessão:

      /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
      

      Modifique isso para ficar assim, substituindo your_domain pelo seu domínio, onde necessário. Isso irá atualizar suas configurações TLS para o 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
      

      Quando terminar, salve e feche o arquivo.

      Aplique as alterações reiniciando o Postfix:

      • sudo systemctl restart postfix

      Agora, tente enviar um e-mail novamente:

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

      Em seguida, verifique o endereço de e-mail que você forneceu. É possível que você veja a mensagem em sua caixa de entrada imediatamente, pois os provedores de e-mail são muito mais propensos a marcar mensagens não criptografadas como spam.

      Você pode verificar as informações técnicas sobre a mensagem de e-mail em seu cliente para ver que a mensagem está de fato criptografada.

      Conclusão

      Agora, você tem um servidor de e-mail apenas para envio, equipado com o Postfix. Criptografar todas as mensagens de saída é um bom primeiro passo eficaz para os provedores de e-mail não marcarem suas mensagens como spam imediatamente. Se você estiver fazendo isso em um cenário de desenvolvimento, então, esta medida deve ser o suficiente.

      No entanto, se o seu caso de uso for enviar e-mails para usuários do site em potencial (como e-mails de confirmação para uma inscrição no quadro de mensagens), verifique a configuração de registros SPF, para que os e-mails do seu servidor tenham ainda mais probabilidade de serem considerados legítimos.



      Source link

      Установка и настройка Postfix в качестве сервера SMTP только для отправки в Ubuntu 20.04


      Автор выбрал фонд Free and Open Source Fund для получения пожертвования в рамках программы Write for DOnations.

      Введение

      Postfix — это агент передачи почты (MTA), т. е. приложение для отправки и приема электронной почты. Его можно настроить так, чтобы только локальные приложения могли использовать его для отправки электронной почты. Это может быть полезно, если вам нужно регулярно рассылать по электронной почте уведомления от ваших приложений или у вас много исходящего трафика, а сторонний поставщик услуг электронной почты не разрешает такие объемы. Это облегченная альтернатива развертыванию полноценного сервера SMTP, позволяющая сохранить требуемые функции.

      В этом обучающем модуле мы установим и настроим Postfix как сервер SMTP, доступный только для отправки. Также мы запросим бесплатные сертификаты TLS от Let’s Encrypt для вашего домена и настроим их использование для шифрования исходящей электронной почты.

      Предварительные требования

      • Один сервер Ubuntu 20.04, настроенный в соответствии с инструкциями по начальной настройке сервера с Ubuntu 20.04, а также пользователь без привилегий root с привилегиями sudo.
      • Зарегистрированное полное доменное имя. В этом обучающем руководстве мы будем использовать your_domain. Вы можете купить доменное имя на Namecheap, получить его бесплатно на Freenom или воспользоваться услугами любого предпочитаемого регистратора доменных имен.
      • Запись DNS A с your_domain​​​, указывающая на публичный IP-адрес вашего сервера. В руководстве Введение в DigitalOcean DNS содержится подробная информация по их добавлению.

      Примечание. Имя хоста вашего сервера и имя вашего дроплета должны соответствовать your_domain, т. к. DigitalOcean автоматически задает записи PTR для IP-адреса дроплета по его имени.

      Для проверки имени хоста сервера можно ввести hostname в командной строке. Вывод должен соответствовать имени, которое вы присвоили дроплету при его создании.

      Шаг 1 — Установка Postfix

      На этом шаге мы выполним установку Postfix. Быстрее всего будет установить пакет mailutils, включающий Postfix и несколько дополнительных программ, которые можно использовать для тестирования отправки электронной почты.

      Вначале обновите базу данных пакетов:

      Затем выполните установку Postfix, запустив следующую команду:

      • sudo apt install mailutils

      Перед окончанием установки вы увидите окно настройки конфигурации Postfix:

      Выберите в меню пункт Internet Site (Сайт), нажмите TAB для выбора<Ok>, а затем нажмите ENTER

      По умолчанию используется опция Internet Site (Сайт). Это наиболее подходящая опция для нашего случая, поэтому нажмите TAB, а затем нажмите ENTER. Если вы увидите только текст описания, нажмите TAB для выбора пункта OK, а затем нажмите ENTER.

      Если опция не отображается автоматически, запустите следующую команду:

      • sudo dpkg-reconfigure postfix

      После этого откроется еще один диалог настройки конфигурации System mail name (имя системной почты):

      Введите свое доменное имя, а затем нажмите TAB для выбора<Ok>, ENTER

      Имя системной почты System mail name должно совпадать с именем, которое вы присвоили своему серверу при его создании. После завершения настройки нажмите TAB, а затем нажмите ENTER.

      Мы установили Postfix и готовы приступить к настройке.

      Шаг 2 — Настройка Postfix

      На этом шаге мы настроим Postfix для отправки и приема электронных писем только с сервера, на котором он запущен, т. е. с localhost.

      Для этого нужно настроить Postfix для прослушивания только интерфейса виртуальной сети loopback, который сервер использует для внутренней связи. Для внесения изменений потребуется отредактировать главный файл конфигурации Postfix с именем main.cf, хранящийся в каталоге etc/postfix.

      Откройте его для редактирования в предпочитаемом текстовом редакторе:

      • sudo nano /etc/postfix/main.cf

      Найдите следующие строки:

      /etc/postfix/main.cf

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

      Задайте для параметра inet_interfaces значение loopback-only:

      /etc/postfix/main.cf

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

      Также необходимо изменить директиву mydestination, которая указывает список доменов, почта с которых доставляется через транспорт local_transport. По умолчанию значения выглядят примерно так:

      /etc/postfix/main.cf

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

      Измените строку, чтобы она выглядела следующим образом:

      /etc/postfix/main.cf

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

      Если ваш домен фактически является субдоменом, и вы хотите, чтобы сообщения электронной почты выглядели отправленными с главного домена, вы можете добавить следующую строку в конец файла main.cf:

      /etc/postfix/main.cf

      ...
      masquerade_domains = your_main_domain
      

      Необязательный параметр masquerade_domains указывает, для каких доменов в адресе электронной почты будут урезаться субдомены.

      После внесения изменений сохраните и закройте файл.

      Примечание. В случае хостинга нескольких доменов на одном сервере другие домены также можно передать Postfix с помощью директивы mydestination.

      Затем перезапустите Postfix, выполнив следующую команду:

      • sudo systemctl restart postfix

      Вы настроили Postfix только для отправки почты с вашего сервера. Теперь протестируем настройку, отправив тестовое сообщение на адрес электронной почты.

      Шаг 3 — Тестирование сервера SMTP

      На этом шаге мы проверим, может ли Postfix отправлять электронные сообщения на внешний адрес электронной почты, используя команду mail, которая входит в пакет mailutils, установленный на первом шаге.

      Выполните следующую команду для отправки тестового письма:

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

      Вы можете изменить тело и тему письма по своему желанию. Обязательно замените your_email_address действующим адресом электронной почты, к которому у вас есть доступ.

      Проверьте почтовый ящик, на адрес которого вы отправили сообщение. Вы должны увидеть это сообщение в папке «Входящие». Если его там нет, проверьте папку «Нежелательная почта». Сейчас все электронные письма отправляются без шифрования, и поэтому провайдеры могут посчитать их спамом. Шифрование мы настроим немного позднее, на шаге 5.

      Если при выполнении команды mail появится сообщение об ошибке, или вы не получите письмо в течение длительного времени, проверьте правильность измененной вами конфигурации Postfix и соответствие имени сервера и имени хоста вашему домену.

      С этой конфигурацией адрес в поле «От» в отправляемых тестовых письмах будет иметь вид your_user_name@your_domain, где your_user_name — имя пользователя сервера, от лица которого вы запустили команду.

      Вы отправили с сервера электронное письмо и убедились, что оно успешно получено. На следующем шаге мы настроим переадресацию электронной почты для пользователя root.

      Шаг 4 — Переадресация системной почты

      На этом шаге мы настроим переадресацию электронной почты для пользователя root, чтобы сгенерированные системой сообщения, отправляемые на этот адрес, пересылались на внешний адрес электронной почты.

      Файл /etc/aliases содержит список альтернативных имен получателей электронных писем. Откройте его для редактирования:

      По умолчанию он выглядит так:

      /etc/aliases

      # See man 5 aliases for format
      postmaster:    root
      

      Единственная содержащаяся в нем директива предписывает пересылать сгенерированные системой электронные сообщения пользователю root.

      Добавьте в конец файла следующую строку:

      /etc/aliases

      ...
      root:          your_email_address
      

      Эта строка предписывает пересылать электронные письма, отправленные пользователю root, на указанный адрес электронной почты. Обязательно замените your_email_address своим личным адресом электронной почты. После внесения изменений сохраните и закройте файл.

      Для вступления изменений в силу выполните следующую команду:

      При запуске команды newaliases будет построена база данных псевдонимов, используемых командой mail. Эти псевдонимы берутся из файла конфигурации, который вы только что отредактировали.

      Протестируйте отправку электронных писем пользователю root с помощью следующей команды:

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

      Письмо должно прийти на указанный вами почтовый ящик. Если его там нет, проверьте папку «Нежелательная почта».

      На этом шаге мы настроили переадресацию сгенерированных системой сообщений на ваш адрес электронной почты. Теперь мы можем включить шифрование сообщений, чтобы все отправляемые вашим сервером электронные письма были защищены от модификации во время пересылки и считались легитимными.

      Шаг 5 — Включение шифрования SMTP

      Теперь вы можете включить шифрование SMTP, запросив бесплатный сертификат TLS от Let’s Encrypt для вашего домена (с помощью Certbot) и настроив Postfix для использования этого сертификата при отправке сообщений.

      Certbot содержится в репозиториях пакетов Ubuntu по умолчанию, и вы можете установить его с помощью следующей команды:

      В диалоге подтверждения введите Y и нажмите ENTER.

      При начальной настройке сервера вы установили простой брандмауэр ufw. Вам нужно настроить его, чтобы разрешить трафик через порт HTTP 80, и тем самым завершить подтверждение вашего домена. Запустите следующую команду для его активации:

      Итоговый результат будет выглядеть следующим образом:

      Output

      Rule added Rule added (v6)

      Теперь порт открыт, и мы можем запустить Certbot для получения сертификата:

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

      Эта команда предписывает Certbot выдавать сертификаты с размером ключа RSA 4096 бит, запустить временный отдельный веб-сервер (--standalone) для проверки и выполнить проверку через порт 80 (--preferred-challenges http). Перед запуском команды обязательно замените your_domain именем вашего домена и введите свой адрес электронной почты, когда система его запросит.

      Результат будет выглядеть примерно следующим образом:

      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

      Как указано в примечаниях, ваши сертификат и файл закрытого ключа сохранены в каталоге /etc/letsencrypt/live/your_domain.

      Получив сертификат, откройте файл main.cf для редактирования:

      • sudo nano /etc/postfix/main.cf

      Найдите следующий раздел:

      /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
      

      Замените your_domain именем вашего домена, где это необходимо. Ваши настройки TLS для 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
      

      Закончив, сохраните и закройте файл.

      Перезапустите Postfix, чтобы применить изменения:

      • sudo systemctl restart postfix

      Попробуйте отправить электронное письмо еще раз:

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

      Проверьте указанный вами адрес электронной почты. Возможно вы сразу же увидите сообщение в папке «Входящие», поскольку провайдеры с меньшей вероятностью помечают шифрованные сообщения как спам.

      Вы можете использовать клиент для проверки технической информации об электронном сообщении, чтобы убедиться, что сообщение действительно шифруется.

      Заключение

      Теперь у вас имеется сервер электронной почты, предназначенный только для отправки и работающий на базе Postfix. Благодаря шифрованию всех исходящих сообщений мы снизили вероятность того, что провайдеры сразу же пометят ваши сообщения как спам. Если вы делаете это при разработке, данной меры должно быть достаточно.

      Если вы намереваетесь отправлять электронные письма потенциальным пользователям сайта (например, письма для подтверждения регистрации на форуме), попробуйте настроить записи SPF, чтобы электронные письма с вашего сервера выглядели еще более легитимными.



      Source link