我正在编写一个应用程序,它将parsingMTA响应并更新数据库,指示消息是否已成功传递(dns:200)或发生错误(dsn:511)。 因为我不是一个系统专家,所以我决定在这里问一些问题之后,看看哪种方法最能解决我的问题。
我首先遵循了这个指南 ,而且我也是最成功的,因为我可以通过我的脚本parsing这个消息。 但是,内容是发送到远程邮件服务器之前的消息。 所以我读了这篇文章 。 其中解释了如何使用transport_maps。 就好像没有足够的选项一样,这个post是关于如何使用别名的。
哪个解决scheme最好? 再次,我想跟踪所有的反应,而不仅仅是反弹的反应。
都不是。 你想知道服务器做了什么消息,你应该阅读日志。
默认情况下, postfix将日志logging到syslog设施MAIL 。 通常,默认情况下,这些消息将写入/var/log/maillog或/var/log/mail.log 。
鉴于rsyslog和syslog-ng都可以写入SQL数据库,您可能只需要这样做,并写一些适当的查询。
退回消息不仅可以由您的MTA(后缀)生成,也可以由“下一跳”电子邮件服务器生成。 不要指望用简单的脚本parsing所有的反弹。
您可以使用[email protected]作为信封发件人地址,并使用单独的〜/ .forward文件来redirect反弹(邮件到enamename +反弹),如Postfix VERP HOWTO
BTW:
1不要忘记临时交付问题(DSN:400)。
2我build议使用基于VERP的解决scheme来跟踪反弹(每个消息/收件人反弹地址)。