我最近遇到了一个问题,垃圾邮件带有一个包含我自己地址的信封。起初我认为这意味着我的密码已被泄露,错误地认为我的电子邮件服务器的 Received 标头的“by”子句中的“with esmtp (Exim 4.87)”意味着它来自经过身份验证的连接。我的电子邮件提供商很快纠正了我,传入的消息来自 MTA,而 MTA 在传递消息时不进行身份验证。因此,它可以很容易(并且很可能确实)通过开放中继来实现,因为 IP 地址都列在 15 个或更多黑名单上。
当我从 Thunderbird 发送邮件时,我连接到端口 587,并且该端口需要身份验证。如果我可以查看标头并看到与我的 ISP 服务器的连接在端口 587 上,那么我就会知道发件人已通过身份验证,并且如果它有我自己的地址作为其信封发件人,那么我就会知道我的密码已经被妥协了,对吧?好吧,我猜跟踪中的任何服务器都可以修改早期的标头,但是在这些情况下,跟踪中没有任何其他服务器。即使有,也不清楚为什么服务器要修改之前标头中给出的端口号。
我尝试询问电子邮件提供商是否可以将端口添加到他们的“接收者”条款中,但没有得到有意义的回复。我用谷歌搜索了一下,看看 sendmail 是否可以选择这样做,但一无所获。但是,我猜标题实际上告诉我他们使用的是 Exim 而不是 sendmail,并且此链接显示了在 Exim 中配置标题内容的位置,尽管它没有说明如何在文本中引用传入端口号。
但是鉴于端口号似乎为处理来自欺骗发件人的垃圾邮件的任何人提供了一些非常有价值的信息,我想知道为什么默认情况下不包括它。
端口号在 Received: 行中没有用,因为存在用于电子邮件传输的标准端口,并且实际上不可能使用备用端口。
如果您想知道某个邮件是否已被某个邮件程序验证,您可以通过检查接收邮件的协议在 Received: 行中找到此信息。这以“SMTP”开头,然后根据各种标准在开头和结尾添加扩展名。如果消息经过身份验证,则其末尾将有一个“A”,如RFC 3848中所指定。一个例子: