====== 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...)