Outils pour utilisateurs

Outils du site


linux:postfix (lu 37334 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
linux:postfix [10-09-2025 21:03] edmc73linux:postfix [25-05-2026 13:07] (Version actuelle) – [1. Prérequis] edmc73
Ligne 346: Ligne 346:
 ===== Recevoir des mails directement dans une petite interface web de consultation uniquement ===== ===== Recevoir des mails directement dans une petite interface web de consultation uniquement =====
  
-Concrètement, imagine j'envoie des mails de mon site toto.com avec l'adresse noreply@toto.com mais j'aimerais recevoir les mails de retour dans le cas de mailinblack ou autre+Objectif : Vous envoyez des mails depuis noreply@toto.com. Si un destinataire répond (ou si un système comme Mailinblack demande une validation), vous souhaitez intercepter et lire ce mail directement dans une interface web simple, sans créer une vraie boîte mail.
  
 +==== 1. Prérequis ====
 Installer **maildev** -> https://wiki.edmc73.com/devweb/maildev qui écoutera sur le port 1025 et fournira une interface web sur le port 1080 Installer **maildev** -> https://wiki.edmc73.com/devweb/maildev qui écoutera sur le port 1025 et fournira une interface web sur le port 1080
  
-Je commence par ajouter une entrée DNS de type MX+Ou plus optimisé, **Mailpit** via un container ou systemd 
 +  mailpit --smtp-bind 127.0.0.1:1025 --ui-bind 127.0.0.1:1080 
 +==== 2. Configuration DNS ==== 
 + 
 +Ajoutez une entrée de type MX sur votre domaine pour router les mails vers votre serveur Postfix :
   toto.com IN MX 10 mon_serveur_smtp.com   toto.com IN MX 10 mon_serveur_smtp.com
  
-J'ajoute dans mon fichier **/etc/postfix/transport** (ou je le crée s'il n'existe pas) +==== 3Configuration de Postfix ====
-  noreply@toto.com smtp:localhost:1025+
  
-On hash le fichier+On va dire à Postfix de relayer les mails de ce domaine vers le port local de MailDev. \\ 
 +Créez ou modifiez le fichier **/etc/postfix/transport** 
 +  noreply@toto.com smtp:[127.0.0.1]:1025 
 + 
 +Hashez le fichier pour que Postfix puisse le lire :
   postmap /etc/postfix/transport   postmap /etc/postfix/transport
  
-On modifie le fichier **/etc/postfix/main.cf**+Ajoutez ou modifiez ces directives dans **/etc/postfix/main.cf**
 <code> <code>
-prise en compte du fichier de transport+Prise en compte du fichier de routage personnalisé
 transport_maps = hash:/etc/postfix/transport transport_maps = hash:/etc/postfix/transport
  
-on dit que si un mail vient de ce domaine, on ne cherche pas un user en local, on utilise le fichier de transport pour savoir ce qu'on en fait+On indique à Postfix d'accepter les mails pour ce domaine pour les relayer
 relay_domains = toto.com relay_domains = toto.com
 </code> </code>
  
-On restart postfix+==== 4. Application et Vérification ==== 
 +Redémarrez Postfix pour appliquer les changements :
   systemctl restart postfix   systemctl restart postfix
  
-On consulte le journal en temps réel +Inspectez les logs en temps réel pour valider les arrivées : 
-  journactl -xef -u postfix*+  journalctl -xef -u postfix
  
-Et voila, on recevra directement dans maildev les mails adressés à noreply@toto.com !+Envoyez un mail à ''noreply@toto.com'' : il apparaîtra instantanément dans l'interface de ''MailDev'' sur le port ''1080'' ! 
 + 
 +===== Utiliser notre postfix comme un serveur relay via le port 587 avec authentification ===== 
 + 
 +Dans l'exemple, je veux faire au plus simple, créer un seul utilisateur qui pourra s'authentifier sur mon serveur postfix pour envoyer des mails depuis un autre serveur. 
 + 
 +Le port 587 est géré par le service "submission" dans Postfix. Il doit être activé (décommenté) dans /etc/postfix/master.cf. 
 + 
 +<code> 
 +submission inet n                               smtpd 
 +  -o syslog_name=postfix/submission 
 +  -o smtpd_tls_security_level=encrypt 
 +  -o smtpd_sasl_auth_enable=yes 
 +</code> 
 + 
 +Configuration dans **/etc/postfix/main.cf** 
 +<code> 
 +# --- Paramètres SASL (avec Cyrus) --- 
 +smtpd_sasl_auth_enable = yes 
 +smtpd_sasl_security_options = noanonymous 
 +smtpd_sasl_local_domain = $myhostname 
 +# Indique à Postfix d'utiliser saslauthd, le démon d'authentification de Cyrus 
 +smtpd_sasl_type = cyrus 
 +# Chemin vers le fichier de configuration de l'authentificateur 
 +smtpd_sasl_path = smtpd 
 + 
 +# --- Paramètres TLS (toujours obligatoires) --- 
 +smtpd_use_tls = yes 
 +smtpd_tls_security_level = encrypt 
 +smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem 
 +smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key 
 +</code> 
 + 
 +Vous devez dire à l'authentificateur Cyrus SASL comment vérifier les mots de passe. Pour cela, on crée un fichier de configuration pour le service smtpd de Postfix. 
 + 
 +Créez le fichier **/etc/postfix/sasl/smtpd.conf** (le répertoire n'existe peut-être pas) : 
 + 
 +  mkdir /etc/postfix/sasl 
 +  vi /etc/postfix/sasl/smtpd.conf 
 + 
 +Ajoutez le contenu suivant : 
 + 
 +  pwcheck_method: auxprop 
 +  auxprop_plugin: sasldb 
 +  mech_list: plain login 
 + 
 +''pwcheck_method: auxprop'' : Indique d'utiliser une méthode auxiliaire.  \\ 
 +''auxprop_plugin: sasldb'' : Précise que cette méthode est une base de données SASL. 
 + 
 +Maintenant pour générer le fichier de mot de passe utilisé par l'authentificateur Cyrus SASL, il va falloir installer le paquet suivant pour avoir la commande **saslpasswd2** 
 + 
 +Debian 
 +  apt install sasl2-bin 
 +Red Hat 
 +  dnf install cyrus-sasl-plain 
 + 
 +L'installation crée un fichier de base de donnée **/etc/sasldb2** 
 + 
 +Créer un utilisateur 
 +  saslpasswd2 -c -u toto.com toto 
 +Saisissez ensuite le mot de passe. Ceci créera un utilisateur toto@toto.com 
 + 
 +Mettre à jour le mot de passe 
 +  saslpasswd2 -u toto.com toto 
 +Supprimer l'utilisateur 
 +  saslpasswd2 -d -u toto.com toto 
 +Lister les utilisateurs 
 +  sasldblistusers2 
 + 
 +Afin que postfix puisse lire le fichier **/etc/sasldb2**, il faut ajouter l'utilisateur postfix au group sasl 
 +  adduser postfix sasl 
 +  systemctl restart postfix 
 + 
 +On vérifie  
 +<code> 
 +ss -tlpn | grep 587 
 +LISTEN 0      100          0.0.0.0:587       0.0.0.0:   users:(("master",pid=1512221,fd=18)) 
 +</code> 
 + 
 +Dernière étape, comme postfix tourne en chroot (à vérifier dans master.cf) \\ 
 +Modifier le fichier **/etc/default/saslauthd** 
 +<code> 
 +# Example for chroot Postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" 
 +# Example for non-chroot Postfix users: "-c -m /var/run/saslauthd" 
 +
 +# To know if your Postfix is running chroot, check /etc/postfix/master.cf. 
 +# If it has the line "smtp inet n - y - - smtpd" or "smtp inet n - - - - smtpd" 
 +# then your Postfix is running in a chroot. 
 +# If it has the line "smtp inet n - n - - smtpd" then your Postfix is NOT 
 +# running in a chroot. 
 +OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd" 
 +</code> 
 + 
 +Postfix ne pourra pas lire non plus le fichier /etc/sasldb2, il faut le copier dans  
 +  cp /etc/sasldb2 /var/spool/postfix/etc/
 +  chmod 640 /var/spool/postfix/etc/sasldb2 
 +  chown root:sasl /var/spool/postfix/etc/sasldb2 
 +  systemctl restart postfix 
 + 
 +Jusque là, tout semble fonctionner, il faut maintenant configurer les DNS, SPF etc... pour éviter ce genre de problème 
 +<code> 
 +(host gmail-smtp-in.l.google.com[66.102.1.27] said:  
 +550-5.7.26 Your email has been blocked because the sender is unauthenticated.  
 +550-5.7.26 Gmail requires all senders to authenticate with either SPF or DKIM.  
 +550-5.7.26   
 +550-5.7.26  Authentication results:  
 +550-5.7.26  DKIM = did not pass  
 +550-5.7.26  SPF [toto.com] with ip: [55.55.55.55] = did not pass  
 +550-5.7.26   
 +550-5.7.26  For instructions on setting up authentication, go to  
 +550 5.7.26  https://support.google.com/mail/answer/81126#authentication 5b1f17b1804b1-4711442a2e6si2499275e9.31 - gsmtp (in reply to end of DATA command)) 
 +</code>
linux/postfix.1757538214.txt.gz · Dernière modification : de edmc73