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.
cp -a /etcv/postfix /etc/postfix2
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”)
fatal: open lock file /var/lib/postfix/master.lock: unable to set exclusive lock
)# 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
/etc/init.d/postfix reload
et lancer cette 2e instance avec postfix -c /etc/postfix2 start
(et l'arrêter avec postfix -c /etc/postfix2 stop
)cp -a /etc/init.d/postfix /etc/init.d/postfix2
, remplacer dedans toutes les références à /etc/postfix par /etc/postfix2 et ajouter à chaque appel de binaire, postfix ou ${DAEMON}, l'option -c /etc/postfix2
; attention, il faut ajouter cette option avant l'action à faire (start|stop|etc.) )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
sendmail_path = /usr/sbin/sendmail -t -i -C /etc/postfix2
dans le php.ini concerné (ou dans le vhost apache).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