Com a ajuda esta página , acho que estou quase lá, mas ainda não. Eu não sei como retransmitir para o segundo servidor ainda, do bash.
Eu fiz um transporte em master.cf:
filtertest unix - n n - 10 pipe
flags=Rq user=filter null_sender=
argv=/usr/local/bin/filter-test.sh -f ${sender} -- ${recipient}
Eu incluí a opção content_filter para o transporte smtp (irá adicioná-lo ao smtps também quando ele funciona):
smtp inet n - - - - smtpd
-o content_filter=filtertest:dummy
Eu tenho o script filtertest:
#!/bin/bash
# Simple shell-based filter. It is meant to be invoked as follows:
# /path/to/script -f sender recipients...
# Localize these. The -G option does nothing before Postfix 2.3.
INSPECT_DIR=/var/spool/filter
SENDMAIL="/usr/sbin/sendmail -G -i" # NEVER NEVER NEVER use "-t" here.
# Exit codes from <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Clean up when done or when aborting.
trap "rm -f in.$$" 0 1 2 3 15
# Start processing.
cd $INSPECT_DIR || {
echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
cat >in.$$ || {
echo Cannot save mail to file; exit $EX_TEMPFAIL; }
# Relay message to backup server
#TODO: how?
$SENDMAIL "$@" <in.$$
exit $?
O que resta é: como eu faço este script bash retransmitir (não encaminhar) o conteúdo do arquivo tmp para um segundo servidor?