Postfix 如何在发送外发电子邮件状态时触发我的脚本?

Postfix 如何在发送外发电子邮件状态时触发我的脚本?

我想在 postfix 成功发送邮件(本地或远程)后运行一个程序。我想将邮件头传递给程序,如果可能的话,还要传递目标 IP 或地址(不包括垃圾邮件过滤器传递)。

我只是有一个想法:通过独特的传输程序处理传递状态通知,但我更喜欢上述方法。

我的目标是记录电子邮件的生命周期(事件):它来了,它出去了(发件人、收件人、主题、日期时间、邮件 ID、邮件状态:退回、已发送)。我只需要外发邮件的状态,因为收件和退回程序正在运行。

是否有可能触发程序(类似于传输管道/生成)或 DSN“欺骗”停留?

提前感谢任何回复!

答案1

这仅用于记录消息头。

默认情况下,postix 已经记录了大部分此类信息,尽管不是一行。但是,它不会记录主题或消息 ID。我们可以通过使用header_checks 5
注意:对于所有邮件(而不仅仅是外发邮件),请使用header_checks代替smtp_header_checks


#main.cf
smtp_header_checks = regexp:$config_directory/header-logging.cf


#header-logging.cf
/^subject:/      INFO
/^Subject:/      INFO
/^Message-Id:/   INFO

这些消息将被记录到系统日志中指定的设施syslog_facility (default: mail)

Apr  9 15:37:25 mta-msa postfix/smtps/smtpd[14688]: DA75A231C600: client=192-0-2-5.example.com[192.0.2.5], sasl_method=LOGIN, sasl_username=foo
Apr  9 15:37:25 mta-msa postfix/cleanup[14686]: DA75A231C600: message-id=<[email protected]>
Apr  9 15:37:25 mta-msa postfix/qmgr[14653]: DA75A231C600: from=<[email protected]>, size=6495, nrcpt=1 (queue active)
Apr  9 15:37:26 mta-msa postfix/smtp[14675]: DA75A231C600: info: header Subject: RE: please email as you leave
Apr  9 15:37:26 mta-msa postfix/smtp[14675]: DA75A231C600: info: header Message-ID: <[email protected]>
Apr  9 15:37:26 mta-msa postfix/smtp[14675]: DA75A231C600: to=<[email protected]>, relay=mx.example.org[198.51.100.0]:25, delay=0.65, relays=0.01/0/0.33/0.31, dsn=2.0.0, status=sent (250 2.0.0 1tnx2ya0mh-1 Message accepted for delivery)
Apr  9 15:37:26 mta-msa postfix/qmgr[14653]: DA75A231C600: removed

答案2

你可以用插入到后缀处理管道中的某些东西来做到这一点就像 amavisd-new 那样。

简而言之,postfix 配置为在 postfix 中有一项新服务master.conf。该服务将是一个小程序,它保存消息的副本,然后将消息重新插入 postfix。

相关内容