如何通过 Postfix 将原始收件人传递给 Procmail

如何通过 Postfix 将原始收件人传递给 Procmail

有没有办法识别电子邮件的原始收件人,进程邮件而不是通过标题?

收件人可以在,也可以在/Bcc之一,我正在寻找如何获取收件人的电子邮件地址。ToCc

我发现如果procmail作为邮箱命令那么我可以ORIGINAL_RECIPIENT按照文档进入环境,但我没有得到它。

答案1

就像老式的信件一样,电子邮件有两组不同的地址信息:信封地址(就像打印在信封外面的地址一样),SMTP 服务器会使用它们来路由和递送电子邮件给预期的收件人,并且邮件标头它们是邮件信息的一部分。

RCPT TO:SMTP 信封包含SMTP 事务中电子邮件消息的目的地等信息。

邮件头(DATASMTP 邮件的有效负载中)大多仅由用户在其邮件客户端/网络邮件中读取和解释,就像在实体信件开头的称呼中附加的日期和地址一样。这些不用于路由电子邮件消息1到达目的地。To:标头是那些(不受信任的)邮件标头的一部分,甚至可以与信封上的地址完全不同。

与邮局不同,SMTP 通常在将邮件交给用户之前丢弃大部分信封。

据我所知,Postfix 将 SMTP 信封收件人地址作为X-Original-To:标头添加到邮件头中。 是它在 SMTP 对话框中X-Original-To: 收到的地址。RCPT TO:

它通常还会添加第二个标头,即标Delivered-To: 头,其中包含 Postfix 实际将邮件发送到的邮箱的电子邮件地址。这可能与不同,X-Original-To:因为可能会发生多级别名、虚拟地址和其他地址扩展。(参见:http://www.postfix.org/ADDRESS_REWRITING_README.html

您应该能够依赖这些标头中的任何一个来处理您的 procmail 配方


脚注:

  1. CC:(以及类似的)标BCC:头是邮件标头,通常应由 MUA 在发送邮件时进行解释,并将其转换为附加RCPT TO:信封地址,通常不进行处理2 通过 SMTP 服务器。

  2. 请注意,Postfix 会以某种方式处理密件抄送和一些其他邮件头,因为默认情况下清理将删除 MUA 不应包含在邮件中的邮件头:Bcc、Content-Length、Resent-Bcc、Return-Path。

相关内容