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
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).
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
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 = <host fqdn> 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…)