![接受电子邮件然后默默过滤掉的电子邮件服务器是否符合 SMTP 标准?](https://linux22.com/image/783874/%E6%8E%A5%E5%8F%97%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E7%84%B6%E5%90%8E%E9%BB%98%E9%BB%98%E8%BF%87%E6%BB%A4%E6%8E%89%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%98%AF%E5%90%A6%E7%AC%A6%E5%90%88%20SMTP%20%E6%A0%87%E5%87%86%EF%BC%9F.png)
您能否将电子邮件发送到某个地址,让邮件服务器接受它,然后邮件服务器默默地将其删除?
我正在运行一个电子邮件服务器。我注意到有些电子邮件来自 spamhaus 列表中的 IP 地址。当服务器收到这些电子邮件时,它会使用 2yz(肯定完成回复)代码之一进行响应。但随后它会默默地过滤掉这些电子邮件,以便用户看不到它。我想检查这是否符合 SMTP 标准。
答案1
我强烈建议不要把这看作是最大化合规性的练习,而应该更多地看作是最小化对遭受伤害的人类的练习。附带损害。
相关标准确实描述了服务器在接受后通常必须做什么 - 但它也清楚地指出了例外情况,例如对于滥用客户端:
当接收方 SMTP 接受一封邮件(通过发送“250 OK”消息来响应数据)时,它承担
传递或转达信息的责任。它必须认真对待这一责任。它绝不能因为一些无关紧要的原因而丢失消息,例如
主机后来崩溃或可预见的资源短缺。 下一小节和第 7.8 节将讨论
一些不被视为无关紧要的原因。
(重点是我的,来自https://datatracker.ietf.org/doc/html/rfc5321#section-7.8)
您仍可以将任何一部分收到的邮件直接“投递”到您认为对收件人合理的任何地方,包括垃圾箱。但是,您对待偶尔的垃圾邮件发送者的方式不会给您带来多大的好处或损失(实际上,与人的寿命相比,计算资源微不足道),但我们在对假定的滥用用户实施特殊处理时会损失惨重,最终影响到合法使用。
Spamhaus 的记录非常好,但它偶尔仍会返回一些结果,这些结果可能与用户不想收到的邮件来源不完全一致。它甚至可能会打开合法的挑战在于接受但从未采取行动的信息。请对于抵抗攻击而言并非绝对必要的任何地方明确地让发件人知道——SMTP 阶段优先考虑延迟/拒绝。
答案2
RFC 5429 Sieve 电子邮件过滤:拒绝和扩展的拒绝扩展(https://www.rfc-editor.org/rfc/rfc5429.html)
Sieve 邮件过滤语言最初定义于RFC 3028,指定“拒绝”操作应丢弃消息并发送消息处置通知分子动力学并附上一封说明信息发送给信封发件人。
这意味着 SMTP 可以在 SMTP 交换的各个阶段拒绝邮件。但是,服务器可能会丢弃 Spamhaus 黑名单中高度怀疑是垃圾邮件的邮件,而不会向发件人提供任何通知。在这种情况下,应该有一条日志消息表明拒绝。