Ceci est une ancienne révision du document !
Installer et configurer Postfix
Configuration SMTP à utiliser
- En test, si vous ne pouvez pas créer directement le compte email
mailer
sur le domaine du SINP, configurer le service de relai SMTP de Google comme indiqué ici : https://support.google.com/a/answer/2956491- Sélectionner :
- Expéditeurs autorisés : Uniquement les adresses de mes domaines
- Authentification : Accepter uniquement les messages provenant des adresses IP spécifiées
- Adresses/plages IP : mettre celles des 2 instances en IPv4
- Authentification SMTP requise : cocher la case
- Exiger le chiffrement TLS : cocher la case
- Cela permet ensuite d'utiliser les infos suivantes pour les tests :
- l'adresse SMTP : smtp-relay.gmail.com
- le port : 587
- Un utilisateur et son mot de passe : mailer@cbn-alpin.fr / <mot-de-passe-de-mailer>
- En prod, utiliser le SMTP d'OVH :
- Hôte : ssl0.ovh.net
- Port : 587
- Username : mailer@<domaine-sinp> (si possible, sinon admin@<domaine-sinp>) [mettre l'adresse du compte email et pas un alias]
- Password : le mot de passe du compte email ci-dessus
- TLS : true
Installer Postfix
- Installer les paquets nécessaires :
aptitude install libsasl2-modules postfix bsd-mailx
- Réponses à fournir dans l'interface d'installation de Postfix :
- Type : site-internet
- FQDN : web-srv.<domaine-sinp> ou db-srv.<domaine-sinp> ou bkp-srv.<domaine-sinp>
- Par la suite, il est possible de modifier la valeur FQDN en éditant le fichier de conf de Postfix :
vi /etc/postfix/main.cf
- Modifier la propriété myhostname si elle n'est pas correcte :
myhostname = web-srv.<domaine-sinp>
oumyhostname = db-srv.<domaine-sinp>
oumyhostname = bkp-srv.<domaine-sinp>
- Modifier aussi la valeur présente dans le fichier :
vi /etc/mailname
- Redémarrer Postfix :
systemctl restart postfix
- Se connecter au compte Gmail et suivre le lien : https://myaccount.google.com/security
- Activer la validation en 2 étapes
- Générer 3 codes de sécurité pour les Postfix de l'instance Web et DB en suivant ce lien : https://security.google.com/settings/security/apppasswords
- Sélectionner :
Autre (personnalisé)
- Saisir :
Postfix (web-<region>-sinp)
, le secondPostfix (db-<region>-sinp)
et le troisièmePostfix (bkp-<region>-sinp)
- Copier/coller le mot de passe généré
- Ouvrir ou créer le fichier
vi /etc/postfix/sasl/sasl_passwd
et y ajouter le contenu suivant :- En test :
[smtp-relay.gmail.com]:587 <email-gmail>:<mot-de-passe-du-compte-email-gmail>
- En prod :
[ssl0.ovh.net]:587 <email-ovh>:<mot-de-passe-du-compte-email-ovh>
- Créer le fichier de base de données qui contiendra les mots de passe :
postmap /etc/postfix/sasl/sasl_passwd
- Vérifier que le fichier sasl_passwd.db existe :
ls -al /etc/postfix/sasl/
- ATTENTION : Il est nécessaire de relancer la commande
postmap
si le fichier sasl_passwd change !
- Limiter l'accès à root aux fichiers sasl_passwd et sasl_passwd.db :
chown root:root /etc/postfix/sasl/sasl_passwd*
chmod 0600 /etc/postfix/sasl/sasl_passwd*
- Configurer le serveur SMTP relai dans Posfix :
- Éditer le fichier et :
vi /etc/postfix/main.cf
et modifier la propriété suivante :- En test :
relayhost = [smtp-relay.gmail.com]:587
- En prod :
relayhost = [ssl0.ovh.net]:587
- Ajouter les propriétés suivantes en fin de fichier :
# Enable SASL authentication smtp_sasl_auth_enable = yes # Disallow methods that allow anonymous authentication smtp_sasl_security_options = noanonymous # Location of sasl_passwd smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd # Enable STARTTLS encryption smtp_tls_security_level = encrypt # Location of CA certificates smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
- Redémarrer Postfix :
systemctl restart postfix
Note concernant le service Systemd Postfix
- Il en existe plusieurs visible avec la commande :
systemctl status postfix*
- C'est le service nommé postfix@-.service qui correspond au daemon lancé par le service postfix.service
- Pour l'affichage dans Grafana, utiliser celui nommé : postfix@-.service
Définir un "sender" par défaut
Si l'on souhaite contrôler l'adresse email qui envoie les emails du serveur (le FROM:
), deux solutions :
- réécrire l'entête des emails envoyés à l'aide du paramètre
smtp_header_check
et mettre en place un fichier de remplacement à l'aide du paramètresmtp_generic_maps
- réecrire avec le from à l'aide de
sender_canonical_maps
Pour la solution 1 (voir aussi : https://superuser.com/a/695191):
- Installer le paquet supplémentaire suivant :
aptitude install postfix-pcre
- Ajouter le paramètre suivant au fichier /etc/postfix/main.cf :
vi /etc/postfix/main.cf
# Add Header rewrite smtp_header_checks = pcre:/etc/postfix/smtp_header_checks
- Crééer le fichier /etc/postfix/smtp_header_checks avec le contenu suivant :
vi /etc/postfix/smtp_header_checks
/^From:\s+.*/ REPLACE From: "<nom-sinp>" <mailer@<domaine-sinp>>
- Exemple :
/^From:\s+.*/ REPLACE From: "Silene web" <mailer@silene.eu>
- Redémarrer Postfix :
systemctl restart postfix
Pour la solution 2, sender_canonical_maps
:
- Créer le fichier suivant :
vi /etc/postfix/sender_canonical_maps
- Ajouter le contenu :
/.+/ mailer@cbn-alpin.fr
- Éditer le fichier de conf de Postfix :
vi /etc/postfix/main.cf
- Ajouter le contenu :
# Add Sender rewrite sender_canonical_classes = envelope_sender, header_sender sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps
- Redémarrer Postfix :
systemctl restart postfix
Tester l'envoie d'email
- Commande d'envoi d'email :
- En test :
echo "THIS IS A TEST EMAIL sended at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" -r "mailer@cbn-alpin.fr" adminsys@<domaine-sinp>
- En prod :
echo "THIS IS A TEST EMAIL sended at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" -r "mailer@<domaine-sinp>" adminsys@<domaine-sinp>
- Vérifier en parallèle les logs :
tail -f /var/log/syslog