使用procmail传递到标准输出和第二台服务器

我希望Postfix服务器将每条消息传递给某个传输器,并将其传递给另一个服务器。 在master.cf中,我有以下的传输:

zarafa unix - nn - 10 pipe flags= user=vmail argv=/usr/bin/zarafa-dagent ${user} 

因为我不能让Postfix交付给两个传输,我可能需要的是一个包装传输,使用procmail也许,传递给zarafa-dagent并中继到第二个服务器(不只是转发到一个地址; 转发到第二服务器)。

它也可以是一个脚本,调用sendmail或任何,但目前,我不知道如何进行。

像bcc_maps这样的东西不起作用,因为它不会产生corrent的X-Original-To和Delivered-To头文件。 它需要被发送到它作为原始服务器被中继到的服务器上的同一个收件人。

编辑:也许我应该澄清一些事情:在备份机器上,我不能有主要相同的邮箱; 只有一个盒子 如果我确实拥有所有的邮箱,那么该服务器的BCC就没问题了。 但是,因为在主要的电子邮件是使用自定义zarafa传输交付,我不能让辅助知道什么邮箱。 因此,我想中继到该服务器,该服务器也认为自己本地的问题。 这样,Delivered-To标题会告诉我原来的RCTP是什么。

有了这个页面的帮助,我想我几乎在那里,但还没有。 我不知道如何从bash中继到第二台服务器。

我在master.cf中做了一个传输:

 filtertest unix - nn - 10 pipe flags=Rq user=filter null_sender= argv=/usr/local/bin/filter-test.sh -f ${sender} -- ${recipient} 

我将content_filter选项包含到了smtp传输中(当它工作时也会将它添加到smtps中):

 smtp inet n - - - - smtpd -o content_filter=filtertest:dummy 

我有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 $? 

剩下的是:如何让这个bash脚本中继 (不转发)tmp文件的内容到第二个服务器?

我需要做类似的事情,关于你的问题,看起来好像postfix一次不允许多个交付。
我设法解决我的问题的方式是使用一个小包装来捕捉请求,然后运行所需的调度。
唯一的问题是,后缀会说“好的,交付!”,但它不知道交付是否成功。
无论如何,这是我的包装的代码:

 #!/bin/bash USER=`echo $2 | awk -F"@" '{print $1}'` NEXTHOP=`echo $2 | awk -F"@" '{print $2}'` /usr/bin/sudo -u vmail /usr/bin/procmail -t -m USER=$USER NEXTHOP=$NEXTHOP /etc/procmailrc 

“USER”是电子邮件中包含的用户名,“NEXTHOP”是电子邮件中包含的域…要清楚:USER @ NEXTHOP。

该消息将作为标准input传递给脚本,允许您获取并根据自己的意愿使用。

我只希望它对你有用:)

您可以尝试使用roundhouse或安装MIMEDefang ,并使用add_recipient将电子邮件转发到您想要的任何其他服务器。