Postfix gmail

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Relais sortant via un compte Gmail
Fichier credentials /etc/postfix/sasl_passwd
Compilation postmap /etc/postfix/sasl_passwd
Port relais 587 (submission, STARTTLS)
Voir aussi Postfix auth TLS

Configurer Postfix pour utiliser un compte Gmail (ou Google Workspace) comme relais SMTP sortant — cas d'usage classique pour un petit serveur/VPS qui n'a pas de réputation IP établie et dont le courrier direct serait probablement classé en spam ou carrément bloqué (beaucoup de fournisseurs bloquent le SMTP direct sortant des plages d'hébergeurs).

⚠️ Depuis 2022, Google a désactivé l'authentification par simple mot de passe pour les comptes avec validation en deux étapes activée — il faut utiliser un mot de passe d'application (App Password) généré depuis le compte Google, jamais le mot de passe principal du compte (à vérifier selon l'état actuel des comptes concernés, la politique Google évolue).

Installation

# RHEL / CentOS
yum install postfix mailx cyrus-sasl-plain

# Debian / Ubuntu
apt install postfix mailutils libsasl2-modules libsasl2-2 sasl2-bin

Fichier d'identifiants

# /etc/postfix/sasl_passwd
[smtp.gmail.com]:587    compte@gmail.com:mot_de_passe_application
chmod 600 /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd

postmap génère sasl_passwd.db à partir du fichier texte — comme pour Aliases, toute modification du fichier texte doit être suivie d'une recompilation. Le fichier texte en clair peut ensuite être supprimé si on ne conserve que la base compilée (les identifiants restent alors uniquement dans le .db, toujours en clair mais protégé par les permissions 600) :

rm /etc/postfix/sasl_passwd

Configuration main.cf

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain, login

relayhost = [smtp.gmail.com]:587

# Canal chiffré, avec vérification stricte du nom du relais
smtp_tls_security_level = secure
smtp_tls_mandatory_protocols = TLSv1.2
smtp_tls_mandatory_ciphers = high
smtp_tls_secure_cert_match = nexthop
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

smtp_tls_security_level = secure exige un certificat valide correspondant exactement au nom du relais (nexthop) — plus strict que le may opportuniste utilisé côté serveur entrant (voir Postfix auth TLS), logique puisqu'ici on connaît par avance l'identité attendue du relais (Gmail).

Alias virtuels (optionnel)

Pour rediriger une adresse locale vers une autre sans passer par un compte système :

# /etc/postfix/virtual
support@mondomaine.tld    autre-adresse@exemple.tld
postmap /etc/postfix/virtual
postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"

Application et test

systemctl restart postfix
systemctl status postfix

echo "Ceci est un test" | mail -s "Test Postfix" destinataire@exemple.tld
tail -f /var/log/mail.log

Si /var/log/mail.log n'existe pas, c'est que rsyslog n'est pas installé/actif — Postfix journalise via syslog, pas directement dans un fichier.

Voir aussi