====== Installer et configurer Postfix ====== * Ressource : [[https://www.linode.com/docs/email/postfix/configure-postfix-to-send-mail-using-gmail-and-google-apps-on-debian-or-ubuntu/|Utilisation avec un compte Gmail et le SMTP de Google]] L'installation d'un serveur SMTP sur un hôte permet de créer un tampon entre cet hôte et un serveur SMTP distant. Si le serveur SMTP distant n'est pas joignable, le serveur local pourra stocker les emails avant de tenter à nouveau un envoi. ===== 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 / * En prod, utiliser le SMTP d'OVH : * //Hôte// : ssl0.ovh.net * //Port// : 587 * //Username// : mailer@ (si possible, sinon admin@) [mettre l'adresse du compte email et pas un alias] * //Password// : le mot de passe du compte email ci-dessus * //TLS// : true ===== Installer Postfix ===== * Reprise de l'installation de Postfix, la modification majeure est la réécriture du Sender, ce changement permet d envoyer un mail sans la réécriture -r dans la commande d'envoie. * Installation de Postfix : apt install libsasl2-modules postfix bsd-mailx * Choisir : ''site internet'' * Indique le domaine du serveur comme nom de courrier. Ex. : ''silene.eu'' * Ajout des informations du mail permettant l'envoie du message. Dans notre cas l'adresse mail est hébergée sur OVH : vi /etc/postfix/sasl/sasl_passwd * Ajouter le contenu (remplacer '''' par le mot de passe du compte email mailer@ d'**OVH** et par le domaine du SINP, ex. //silene.eu//): [ssl0.ovh.net]:587 mailer@: * Créer le fichier de base de données //sasl_passwd.db// qui contiendra le mot de passe & vérifier qu'elle est bien présente : postmap /etc/postfix/sasl/sasl_passwd ll /etc/postfix/sasl/ * Puis leurs attribuer les droits nécessaire : chown root:root /etc/postfix/sasl/sasl_passwd* chmod 0600 /etc/postfix/sasl/sasl_passwd* * Éditer le fichier de configuration de Postfix : vi /etc/postfix/main.cf * Remplacer le contenu suivant, '''' peut valoir ''web-paca-sinp'' par exemple : smtpd_banner = $myhostname ESMTP relayhost = [ssl0.ovh.net]:587 myhostname = mydestination = $myhostname, localhost.$mydomain, localhost * Commenter le contenu suivant : smtp_tls_security_level=may smtpd_tls_security_level=may * Ajouter le contenu suivant : # 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 # Add Header rewrite (solution 1 🗑️) # smtp_header_checks = pcre:/etc/postfix/smtp_header_checks # Add Sender rewrite (solution 2) sender_canonical_classes = envelope_sender, header_sender sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps ===== 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ètre ''smtp_generic_maps''. Cette solution semble poser problème si l'on souhaite installer OpenDkim. - 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 : apt install postfix-pcre * Vérifier la présence du paramètre suivant dans le 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: "" > * Exemple : /^From:\s+.*/ REPLACE From: "Silene web" * 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@ * É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 : echo "THIS IS A TEST EMAIL sended at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" adminsys@ * Vérifier en parallèle les logs : tail -f /var/log/syslog