只转发邮件到不同的SMTP服务器

我有一个Postfix的SMTP服务器,从Web服务发送交易电子邮件。 这些消息使用VERP作为返回path,所以反弹返回到如下地址:

[email protected] 

e.mydomain.com上运行的这个后缀服务器专门用于发送电子邮件,没有本地邮箱,POP或IMAP访问等等。 只有本地networking上的系统才能通过它传递邮件。

然后,我有一个单独的自定义SMTP应用程序,只处理运行在同一服务器(e.mydomain.com)上,但在不同的端口(8025)上运行的反弹。 它会删除任何不适合正确格式化反弹地址的消息。 具有正确格式的popup地址的电子邮件被接受。

当接受退回时,此自定义应用程序根据退回电子邮件地址在数据库中查找适当的用户,并增加退回计数器。 主要的networking服务只会发送交易电子邮件给反弹计数未超过阈值的用户。

我的问题是这些:

  1. 设置我的反弹处理SMTP(bounces.mydomain.com)服务器直接处理反弹(并在端口25上运行)会更好吗? 还是有所有反弹到我的后缀服务器,然后让后缀只转发到popupSMTP应用程序?

  2. 如果最好有后缀处理所有传入的邮件,我如何configuration它只转发像上述地址格式化邮件到另一个SMTP服务器,运行在非特权端口(8025)?

我总是不愿意把服务放在他们通常不会生活的港口上 – 不是因为软件缺陷,而是因为人的缺陷。 一个inheritance这个设置的系统pipe理员必须非常好地追踪“电子邮件在什么时候跳动”的架构,否则你的文档需要非常清晰(并且很容易find)。

所以,要回答你的第一个问题 – 我的build议是有一个单独的服务器来处理反弹。 这使得事情很好地通过DNSlogging,而不是埋在一个configuration文件的后缀。

如果你select忽略这个build议,利用postfix的交通图可以让你这样做。 例如,将此添加到main.cf中:

 transport_maps = regexp:/etc/postfix/transport 

并在你的传输文件中使用这样的东西:

 /bounce.*/ smtp:bounces.mydomain.com:8025 

(别忘了'postmap / etc / postfix / transport'和'postfix reload')

如果您的8025服务只符合每个收件人的反弹并丢弃它们,那么您还可以通过Postfix运行反弹,并将整个“反弹数据库”function委派到Postfix策略服务中。 策略服务器不需要说SMTP,只需要parsingPostfix与之通信的普通协议即可。