====== Autres manips postfix ====== ===== Postfix en MX secondaire ===== Par rapport à une install de base, il faut juste préciser dans main.cf # on est mx2, relay vers mx1 relayhost = IP.mx1 smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination relay_recipient_maps = hash:/etc/postfix/relay_recipient_maps.hash Le fichier relay_recipient_maps.hash contient toutes les adresses pour lesquelles on accepte le courrier, sous la forme user@domaine.tld OK user2@domaine.tld OK //On peut mettre n'importe quoi à la place du OK, il faut juste un 2e champ pour la table de hash// ===== Générer automatiquement relay_recipient_maps sur le primaire ===== Pour mettre à jour automatiquement cette liste depuis le primaire (c'est lui qui a la liste des users), on créé ce petit script (sur le primaire donc) #!/bin/bash echo "Ce script génère /etc/postfix/relay_recipient_maps.hash" echo "à partir de /etc/postfix/virtual_mailbox_maps.hash et /etc/postfix/virtual_alias_maps.hash" echo "Puis essaye de le transférer sur mx2" awk '/@/ {print $1 " OK"}' < /etc/postfix/virtual_mailbox_maps.hash > /etc/postfix/relay_recipient_maps.hash awk '/@/ {print $1 " OK"}' < /etc/postfix/virtual_alias_maps.hash >> /etc/postfix/relay_recipient_maps.hash postmap /etc/postfix/relay_recipient_maps.hash echo "On essaie de copier /etc/postfix/relay_recipient_maps.hash.db sur MX2" echo "En cas d'échec, vous devrez le faire manuellement" scp /etc/postfix/relay_recipient_maps.hash.db mx1@mx2:/etc/postfix/relay_recipient_maps.hash.db Et pour que ça marche (le primaire doit pouvoir modifier ce fichier), sur le secondaire, on créé un user (unix) mx1 : postfix_gid=$(awk -F : '/postfix/ {print $4}'< /etc/passwd) useradd -b /etc/postfix -d /etc/postfix -g $postfix_gid -N mx1 mkdir /etc/postfix/.ssh touch /etc/postfix/.ssh/authorized_keys2 chgrp -R postfix /etc/postfix/.ssh chgrp postfix relay_recipient_maps.hash.db chmod 664 relay_recipient_maps.hash.db Reste à mettre la clé ssh de root@ns1 dans /etc/postfix/.ssh/authorized_keys2 (sur ns2 donc), et à recharger le postfix de ns2 (incron qui tourne sur ns2 et qui surveille ce fichier peut s'en charger). ===== Relai avec authentification ===== Ce qui suit ne marche pas, en attente de correction (pb auth). D'après http://wingloon.com/2008/06/21/setup-relay-host-port-and-smtp-authentication-client-in-postfix/ Sur le postfix "relai", on active "smtps" (sur le port 465) en décommentant dans master.cf smtps inet n - - - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject Sur le postfix client, dans le main.cf # notre relai relayhost = mail.example.com:587 # avec authentification sasl smtp_sasl_auth_enable = yes # via tls smtp_sasl_mechanism_filter = login # liste de users/pass par host smtp_sasl_password_maps = hash:/etc/postfix/conf.d/smtp_sasl_password_maps.hash puis # on met le user/pass (connu du relai) dans le fichier echo "mail.example.com mon_user@example.com:mon_pass" > /etc/postfix/conf.d/smtp_sasl_password_maps.hash postmap /etc/postfix/conf.d/smtp_sasl_password_maps.hash ===== Postfix minimal ===== Pour avoir juste un smtp qui envoie vers l'extérieur (et traite les messages systèmes) alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myhostname = mydestination = $myhostname, localhost myorigin = $myhostname relayhost = mynetworks = 127.0.0.0/8 inet_interfaces = loopback-only recipient_delimiter = + et ensuite, mettre dans /etc/aliases un mail externe pour root et les autres users (bizarre, je me rappelle avoir dû passer par un virtual_alias_maps pour associer user_local@hostname_fqdn à mon mail_perso@mon_vrai_domaine, parce que l'on ne pouvait mettre que des users locaux dans ce fichier, mais là ça marche...)