在互联网上我能找到的有关灰名单的所有信息中,我发现以下三元组用于唯一区分传入电子邮件的信息:
- 源IP
- 源电子邮件地址
- 目的地电子邮件地址
现在,源 IP 可能会产生问题,因为大型邮件服务使用多个 IP 地址(可能来自完全不同的 IP 范围)来重新发送被阻止的电子邮件。
问题
为什么要考虑源 IP 地址呢?为什么不直接使用源电子邮件地址和目标电子邮件地址作为识别给定电子邮件的密钥(发件人-收件人链接)?
为什么不使用主题来更唯一地标识特定电子邮件?
推理
即使在对忽略源 IP 时可能会出现什么样的问题进行了相当多的思考之后,我也没有找到源 IP 可能相关的任何原因。
- 当同一 IP 从同一源向同一目标电子邮件地址发送两次(并等待所需时间)时,电子邮件将送达
- 当两个不同的IP从同一源发送到同一目标电子邮件地址时,该电子邮件也应该被传递(例如大型邮件服务)
- 某些灰名单解决方案允许源 IP 使用子网掩码。但这非常不清晰,并且不能适应所有情况 - 特别是不适用于 MTA 位于完全不同子网中的超大型邮件服务。
- 如果合法邮件发件人第一次在“稍后尝试”时间段内向同一目标电子邮件地址发送两封不同的电子邮件,该怎么办?
- 使用三元组:理论上,源和目标电子邮件地址和主题应该更准确地处理灰名单中的每封电子邮件 - 即使来自同一发件人到同一收件人。
但我的主要问题是:为什么要在三元组中包含源 IP?(两个不同的外部实体使用相同的源电子邮件地址发送到相同的目标电子邮件地址的可能性对我来说似乎极不可能)
大多数灰名单技术所做的事情之一是检查指定的源地址是否有权从该 IP 发送,这可以通过 SPF 记录来完成。如果源 IP 在源域的 SPF 记录中列为该域的有效发件人,则许多(我想说的是大多数,但我的经验有限)灰名单过滤器会自动将电子邮件列入白名单。因此,源 IP 不一定是控制三元组的一部分,但对于了解某些内容为何被列入灰名单或未被列入灰名单非常重要,因此应保留。
因此,为了更直接地解决“为什么它在三元组中”,我们必须了解具有多个出站 SMTP 地址的系统使用其邮件服务器的最常见方式。像 GoDaddy 这样的托管组通常会有多个主机为单个服务器提供数据,并且该服务器将有一个传出消息队列。虽然会有多个服务器,在多个 IP 地址上,但每个服务器都有自己的主机和自己的消息队列。如果邮件被拒绝列入灰名单,它仍会在同一 IP 的同一邮件服务器中排队,因此下次尝试时将绑定到同一 IP。
GoDaddy 可能不是最好的例子,因为事实上他们似乎有一个循环队列,可以在三个或更多面向互联网的服务器中选择来自中间服务器的任何消息。然而,尽管我不能确定,但我从他们的输出电子邮件中看到的情况表明,临时错误不会导致该消息被推回到中间服务器;它是面向互联网的服务器收到了临时错误,并正在管理保留时间。因此,该消息仍然与同一 IP 地址绑定,因为它由特定服务器负责。
灰名单最初旨在捕获的特定情况是,受感染的家庭计算机在尝试发送消息后当然不会再次尝试,并且实际上可能已经断开连接并在错误消息返回时转到下一个服务器- 如果垃圾邮件发送者没有看到邮件被拒绝,他可能仍会因发送该邮件而收取费用,并且每条邮件的 0.000001 美元可以累加。
而且主题实际上并不是灰名单的有效密钥,部分原因是可能存在大量具有相同主题的不同有效邮件,部分原因是垃圾邮件发送者 Joe 会向同一发件人发送大量邮件和主题,来自不同的IP地址,希望有一些能够通过。