2e instance de postfix

Il peut parfois être utile d'avoir une 2e instance de postfix (sur une autre IP, pour d'autres domaines, etc…)

Tout ce qui suit est largement inspiré de http://advosys.ca/papers/postfix-instance.html (publié ici avec l'autorisation de l'auteur). Cette page n'est donc pas sous licence CC, vous devez demander la permission de l'auteur initial pour en reproduire tout ou partie (ma contribution est CC-by-sa).

Dans tout ce qui suit <ip2> doit être remplacé par l'ip spécifique à cette 2e instance.

myhostname = <host_concerné>
alias_maps = hash:/etc/postfix2/conf.d/aliases
alias_database = hash:/etc/postfix2/conf.d/aliases
myorigin = $myhostname
mydestination = $myhostname, localhost
relayhost = 
mynetworks = <ip2>
# on écoute seulement sur cette ip
inet_interfaces = <ip2>
# spécifique à une 2e instance de postfix
queue_directory = /var/spool/postfix2
config_directory = /etc/postfix2
data_directory = /var/lib/postfix2
# les mails sortants partent via cette ip
smtp_bind_address = <ip2>
# facultatif, pour avoir une "facility" spécifique et pouvoir trier les logs dessus
syslog_facility = local2
syslog_name = postfix2

(vous devez ajouter évidemment toutes les autres directives spécifiques à votre cas de figure, comme pour une configuration postfix “standard”)

# création de la 2e file (en root)
mkdir /var/spool/postfix2
# init
postfix -c /etc/postfix2 check
# si postfix est en chroot, faut ajouter ces rep
for r in etc usr lib; do cp -rp /var/spool/postfix/$r  /var/spool/postfix2/; done;
# le data_directory spécifique
cp -a /var/lib/postfix /var/lib/postfix2
alternate_config_directories = /etc/postfix2

Sinon, ça génère dans les logs des :

postfix2/sendmail[XXX]: warning: command "/usr/sbin/postdrop -r" exited with status 1
postfix2/sendmail[XXX]: fatal: user_concerne(id_user): unable to execute /usr/sbin/postdrop -r: Success

Pour debian, ça donne /etc/init.d/postfix2 (script simplifié, j'ai pas réussi à faire fonctionner le stop sur la base de /etc/init.d/postfix avec le start-stop-daemon, pas trop cherché non plus…):

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/postfix
NAME=Postfix2

case "$1" in
    start)  
        echo -n "Starting mail transport agent: Postfix2"
        $DAEMON -c /etc/postfix2 start 2>&1 |
                (grep -v 'starting the Postfix2' 1>&2 || /bin/true)
        echo "."
    ;;

    stop)
        echo -n "Stopping mail transport agent: Postfix2" 
        $DAEMON -c /etc/postfix2 stop 2>&1 |
                (grep -v 'stopping the Postfix2' 1>&2 || /bin/true)
        echo "."
    ;;

    restart)
        $0 stop
        $0 start
    ;;
    *)
        echo "Usage: $0 {start|stop|restart}"                 
        exit 1
    ;;
esac  

exit 0
echo -e "Subject: Test postfix2\r\n\r\nUn message de test">msg
sudo -u <user_local_qui_peut_poster> /usr/sbin/sendmail -i -C /etc/postfix2 user@example.com <msg