POSTFIX - Configurer postfix pour relayer en SASL
Introduction
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:
- Un wiki de configuration relatif à Gmail
- Un article de forum relatif aux erreurs d'aliases
- Un wiki très complet sur Postfix, pour ArchLinux, cf postaliases
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.
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.
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
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:
# 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
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