serveurs:installation:postfix

Ceci est une ancienne révision du document !


Installer et configurer Postfix

  • 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
  • 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 <mot-de-passe> par le mot de passe du compte email mailer@cbn-alpin.fr d'OVH, pas Gmail):
      [ssl0.ovh.net]:587 mailer@cbn-alpin.fr:<mot-de-passe>
  • Créer le fichier de base de données 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 :
      relayhost = [ssl0.ovh.net]:587
      myhostname = localhost
      mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    • 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
      smtp_header_checks = pcre:/etc/postfix/smtp_header_checks
      # Add Sender rewrite
      sender_canonical_classes = envelope_sender, header_sender
      sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps
  • 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

Si l'on souhaite contrôler l'adresse email qui envoie les emails du serveur (le FROM:), deux solutions :

  1. 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
  2. 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@<domaine-sinp>
  • É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
  • 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
  • serveurs/installation/postfix.1683619194.txt.gz
  • Dernière modification : 2023/05/09 07:59
  • de jpmilcent