|
|
Ligne 1 : |
Ligne 1 : |
| = Introduction =
| | Catégorie de regroupement de tous les articles "Portail" sur un sujet en particulier. |
| | |
| Le contexte: vous avez un serveur, qui porte une application web. Cette application dispose par exemple d'un formulaire de contact, ou fait des traitements nécessitant des notifications par mail, et vous avez besoin de pouvoir envoyer via localhost sur le port 25.
| |
| | |
| Cet article décrit comment j'ai produit une configuration fonctionnelle pour relayer au travers d'un relay de chez Gandi ou Gmail, ces configurations sont valables quel que soit le relay SMTP.
| |
| | |
| = Liens utiles =
| |
| | |
| N'étant pas spécialiste de postfix ou de la messagerie en général, je me suis appuyé sur quelques liens et tutos bien utiles:
| |
| * [https://www.howtoforge.com/tutorial/configure-postfix-to-use-gmail-as-a-mail-relay/ Un wiki de configuration relatif à Gmail]
| |
| * [https://www.linuxquestions.org/questions/linux-software-2/postfix-error-open-database-etc-aliases-db-no-such-file-or-directory-4175423118/ Un article de forum relatif aux erreurs d'aliases]
| |
| * [https://wiki.archlinux.org/index.php/Postfix Un wiki très complet sur Postfix, pour ArchLinux, cf postaliases]
| |
| * [https://www.cyberciti.biz/faq/postfix-receive-mail-on-specific-network-interfaces/ Bind de postfix sur 127.0.0.1]
| |
| | |
| = Pré requis =
| |
| | |
| * connaitre votre OS (Debian 9.5 dans notre cas).
| |
| * avoir un relay (ex: mail.gandi.net ou smtp.google.com).
| |
| * connaitre le port TCP de destination (en général 587 pour le SASL).
| |
| * disposer d'un compte et d'un mot de passe pour pouvoir utiliser ce relai.
| |
| * vérifier que votre hébergeur vous permet de sortir sur les ports SMTP classiques.
| |
| * vous pouvez utiliser [http://wiki.pedrono.fr/index.php/TIPS_-_OpenSSL#Tester_un_port_SSL openssl] pour tester l'accès au serveur de relay.
| |
| | |
| Chez Scaleway par exemple, il est nécessaire de se rendre dans la configuration du Security Group protégeant votre VM, et de cocher une case correspondant à l'autorisation, en sortie, des protocoles de messagerie. Sans cette autorisation explicite, votre configuration pourra être valide, mais vous ne relayerai pas correctement.
| |
| | |
| [[Fichier:SecGroup..PNG]]
| |
| | |
| = Installation et configuration =
| |
| | |
| == Vérifications préalables ==
| |
| | |
| * Vérifier s'il y a déjà un service SMTP installé en local:
| |
| | |
| netstat -tpln '''==> vérifier ce qui écoute sur le port 25'''
| |
| | |
| * Si besoin, désinstaller l'éventuel service SMTP (ex: exim par défaut sur les images Debian Scaleway):
| |
| | |
| apt-get remove exim4 --purge
| |
| | |
| == Installation de postfix ==
| |
| | |
| apt-get update
| |
| apt-get install postfix
| |
| | |
| Dans l'assistant de configuration graphique proposé par l'installer Postfix, choisir "No configuration", on fera tout manuellement ensuite.
| |
| | |
| == Préparation de la configuration ==
| |
| | |
| cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
| |
| vi /etc/postfix/main.cf
| |
| ...
| |
| inet_interfaces = 127.0.0.1
| |
| ...
| |
| | |
| | |
| == Configuration compte SASL ==
| |
| | |
| vi /etc/postfix/sasl_passwd
| |
| ...
| |
| [smtp.gmail.com]:587 username@gmail.com:password '''(ATTENTION A INSTANCIER FONCTION DE VOS PARAM PERSOS)'''
| |
| ...
| |
| chmod 600 /etc/postfix/sasl_passwd
| |
| postmap /etc/postfix/sasl_passwd
| |
| | |
| == Configuration des aliases ==
| |
| | |
| vi /etc/postfix/aliases
| |
| ...
| |
| root: <votre_adresse_d_admin>
| |
| ...
| |
| postalias /etc/postfix/aliases
| |
| cp /etc/postfix/aliases.db /etc/ '''(ON PEUT CONFIGURER LE CHEMIN DANS POSTFIX, MAIS LA FLEMME, DONC ON RECOPIE LE FICHIER OU LA CONF PAR DEFAUT LE CHERCHE)'''
| |
| | |
| == Configuration relaying SASL ==
| |
| | |
| vi /etc/postfix/main.cf
| |
| | |
| Avec l'option "No configuration" votre ''main.cf'' doit ressembler à ça:
| |
| | |
| <pre>
| |
| # See /usr/share/postfix/main.cf.dist for a commented, more complete version
| |
| | |
| | |
| # Debian specific: Specifying a file name will cause the first
| |
| # line of that file to be used as the name. The Debian default
| |
| # is /etc/mailname.
| |
| #myorigin = /etc/mailname
| |
| | |
| smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
| |
| biff = no
| |
| | |
| # appending .domain is the MUA's job.
| |
| append_dot_mydomain = no
| |
| | |
| # Uncomment the next line to generate "delayed mail" warnings
| |
| #delay_warning_time = 4h
| |
| | |
| readme_directory = no
| |
| | |
| # See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
| |
| # fresh installs.
| |
| compatibility_level = 2
| |
| | |
| inet_interfaces = 127.0.0.1
| |
| | |
| </pre>
| |
| | |
| Ajouter en fin de fichier les lignes suivantes:
| |
| | |
| relayhost = [smtp.google.com]:587 '''(ATTENTION LE RELAY DOIT ETRE COHERANT AVEC CELUI DESIGNE DANS sasl_passwd)'''
| |
| smtp_use_tls = yes
| |
| smtp_sasl_auth_enable = yes
| |
| smtp_sasl_security_options =
| |
| smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
| |
| smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
| |
| | |
| == Redémarrer postfix pour prendre la configuration en compte ==
| |
| | |
| systemctl restart postfix.service
| |
| | |
| En principe sur une conf si petite, peu de chance d'avoir des erreurs au démarrage, sauf fichier mal placé ou fautes de frappe. Vous pouvez vérifier que le service tourne bien:
| |
| | |
| netstat -tpln '''=> chercher le port 25, vérifier qu'il n'est bien bindé que sur 127.0.0.1'''
| |
| systemctl status postfix.service
| |
| | |
| = Test du fonctionnement =
| |
| | |
| == Traces ==
| |
| | |
| Mettre en place des traces pour vérifier le bon fonctionnement:
| |
| | |
| tail -f /var/log/mail.log /var/log/mail.err &
| |
| | |
| == Envoi manuel d'un mail avec telnet ==
| |
| | |
| root@machine:~# telnet localhost 25
| |
| Trying ::1...
| |
| Trying 127.0.0.1...
| |
| Connected to localhost.
| |
| Escape character is '^]'.
| |
| 220 machine.localdomain ESMTP Postfix (Debian/GNU)
| |
| | |
| Le log indique:
| |
|
| |
| ==> /var/log/mail.log <==
| |
| Feb 23 11:38:08 machine postfix/smtpd[6555]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
| |
| Feb 23 11:38:08 machine postfix/smtpd[6555]: connect from localhost[127.0.0.1]
| |
| | |
| Pas de pb, les messages en warning peuvent être ignorés.
| |
| | |
| ehlo localhost
| |
| 250-machine.localdomain
| |
| 250-PIPELINING
| |
| 250-SIZE 10240000
| |
| 250-VRFY
| |
| 250-ETRN
| |
| 250-ENHANCEDSTATUSCODES
| |
| 250-8BITMIME
| |
| 250-DSN
| |
| 250 SMTPUTF8
| |
| mail from: contact@domaine.test
| |
| 250 2.1.0 Ok
| |
| rcpt to: adresse@domaine.dest
| |
| 250 2.1.5 Ok
| |
| | |
| Le log indique:
| |
| | |
| Feb 23 11:38:33 machine postfix/smtpd[6555]: 898B22C250D: client=localhost[127.0.0.1]
| |
| | |
| On fournit les données:
| |
| | |
| data
| |
| 354 End data with <CR><LF>.<CR><LF>
| |
| Subject: test relay SASL
| |
| Ca fonctionne?
| |
| .
| |
| | |
| Le log indique:
| |
| | |
| Feb 23 11:38:50 machine postfix/cleanup[6615]: 898B22C250D: message-id=<20190223113833.898B22C250D@machine.localdomain>
| |
| 250 2.0.0 Ok: queued as 898B22C250D
| |
| Feb 23 11:38:50 machine postfix/qmgr[6137]: 898B22C250D: from=<contact@domaine.test>, size=360, nrcpt=1 (queue active)
| |
| Feb 23 11:38:51 machine postfix/smtp[6651]: 898B22C250D: to=<adresse@domaine.dest>, relay=smtp.google.com[A.B.C.D]:587, delay=26, delays=25/0.05/0.06/0.18, dsn=2.0.0, status=sent
| |
| (250 2.0.0 Ok: queued as 25E42240005)
| |
| Feb 23 11:38:51 machine postfix/qmgr[6137]: 898B22C250D: removed
| |
| | |
| '''Le mail est correctement délivré!'''
| |
| | |
| == Vérifier la réception ==
| |
| | |
| Checker la boite de destination. Vérifier que le mail est bien délivré et qu'il n'est pas classé directement en spam.
| |
| | |
| [[Category:Configuration]]
| |
| [[Category:Howto]]
| |
| [[Category:Postfix]]
| |
| [[Category:SASL]]
| |
Catégorie de regroupement de tous les articles "Portail" sur un sujet en particulier.