有没有办法识别电子邮件的原始收件人,进程邮件而不是通过标题?
收件人可以在,也可以在/Bcc
之一,我正在寻找如何获取收件人的电子邮件地址。To
Cc
我发现如果procmail
作为邮箱命令那么我可以ORIGINAL_RECIPIENT
按照文档进入环境,但我没有得到它。
答案1
就像老式的信件一样,电子邮件有两组不同的地址信息:信封地址(就像打印在信封外面的地址一样),SMTP 服务器会使用它们来路由和递送电子邮件给预期的收件人,并且邮件标头它们是邮件信息的一部分。
RCPT TO:
SMTP 信封包含SMTP 事务中电子邮件消息的目的地等信息。
邮件头(DATA
SMTP 邮件的有效负载中)大多仅由用户在其邮件客户端/网络邮件中读取和解释,就像在实体信件开头的称呼中附加的日期和地址一样。这些不用于路由电子邮件消息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 配方
脚注:
CC:
(以及类似的)标BCC:
头是邮件标头,通常应由 MUA 在发送邮件时进行解释,并将其转换为附加RCPT TO:
信封地址,通常不进行处理2 通过 SMTP 服务器。请注意,Postfix 会以某种方式处理密件抄送和一些其他邮件头,因为默认情况下清理将删除 MUA 不应包含在邮件中的邮件头:Bcc、Content-Length、Resent-Bcc、Return-Path。