serveurs:installation:postfix

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@<domaine-sinp> d'OVH et <domaine-sinp> par le domaine du SINP, ex. silene.eu):
      [ssl0.ovh.net]:587 mailer@<domaine-sinp>:<mot-de-passe>
  • 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, <server-name> peut valoir web-paca-sinp par exemple :
      smtpd_banner = $myhostname ESMTP
      relayhost = [ssl0.ovh.net]:587
      myhostname = <server-name>
      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
  • 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. Cette solution semble poser problème si l'on souhaite installer OpenDkim.
  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 :
     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: "<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 :
    echo "THIS IS A TEST EMAIL sended at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" adminsys@<domaine-sinp> 
  • Vérifier en parallèle les logs :
    tail -f /var/log/syslog 
  • serveurs/installation/postfix.txt
  • Dernière modification : 2024/02/20 14:53
  • de jpmilcent