我的机器上有很多未使用(旧的,已死的)帐户。 他们中的许多人每天收到数以千计的电子邮件,所有垃圾邮件。
如果帐户被某人使用,我会让电子邮件反弹,以便任何试图与他们联系的人知道有问题。 然而,我不确定如何处理用于其他目的的数百个帐户,例如我用于请求我的电子邮件地址的网站的丢弃帐户,或者我曾经在网页上列出的地址。
选项1:
将这些帐户的所有邮件转发到/dev/null 。 发件人没有收到反弹。
选项2:
让电子邮件反弹。
将电子邮件发送到/dev/null的好处是垃圾邮件发送者不能使用我来生成退回邮件(Backscatter spam) 。 即:伪造“从”线成为他们不喜欢的人,然后用我发送大量弹跳信息给那个人。
反弹他们的好处是,这对我来说不那么维护。 我可以从我的别名文件中删除项目,电子邮件将popup。 此外,我一直在发现新的垃圾邮件陷阱,并将其添加到我的“垃圾邮件黑洞”列表中,这是浪费时间。
每种方法的优缺点是什么?
只要你一开始拒绝接收邮件,那么垃圾邮件发送者就不能用你来惹恼那些无辜的人,反弹很多。
您可以在RCPT TO命令上返回一个错误,这通常是在地址不存在的情况下发生,也可以在RCPT TO命令上返回成功,但在DATA结束时返回一个错误。
在这两种情况下,最终的结果都是一样的。 您的邮件服务器不负责邮件,发送邮件服务器现在负责反弹。 在垃圾邮件的情况下,这意味着垃圾邮件发送者将不得不产生反弹。 (如果这就是他们想做的事情,那么他们本来可以做到这一点,甚至没有试图把邮件发送给你。
我认为这种方法没有问题。
但是,我接受邮件时发现问题。 也就是说,如果您的邮件服务器通过包括DATA在内的交易成功完成响应,那么交付邮件成为邮件服务器的责任。 这是个问题,因为你没有合适的出路。
在某些情况下,邮件地址的分配如此有限,您知道不能有任何合法的邮件发送到该地址。 在这种情况下,如果您拒绝RCPT TO命令,或者接受邮件并悄悄丢弃邮件,则几乎没有区别。 但是我不能想出一个这样的情况:在SMTP交易过程中,默默地放弃邮件比拒绝邮件更好。
我将使这个答案相当通用,因为术语和configuration细节将取决于您的特定邮件服务器/垃圾邮件过滤软件。
实际上对于一个无效的收件人有三种方法:
收件人被确定为无效后,发送一个Undeliverable消息回发件人。
消息仍处于“正在运行”状态时closuresSMTP连接。 发件人的SMTP服务器将负责生成Undeliverable消息。
接受消息并以静默方式将其删除。 发件人不知道邮件是否被收到。
再也没有理由使用方法1了。 在Backscatter攻击的情况下,您的服务器将看起来像垃圾邮件发送者(即使它是一个无辜的受害者),您将成为被列入黑名单的人。 它还会在您的服务器上加载更多的负载并上传带宽,因为它必须发送退回消息。
方法2比方法1好得多。 它可以降低您的服务器被列入黑名单或拒绝服务的可能性。 它并不能消除反对无辜的第三方地址的反向散射的可能性,但至less你的服务器不是发送反弹消息的那个服务器。
方法#3消除了反向散射的可能性。 这也有助于防止目录收获攻击 。 但是,这也意味着如果外部发件人错误input了您的地址,他们将永远不会知道。 如果有人离开你的公司,也可能是一个问题,一个客户试图联系前雇员。
由于担心DHA,我inheritance了使用方法3的电子邮件系统。 它造成了比它值得的更多的麻烦。 我们现在使用方法#2。 (请注意,还有其他方法可以缓解DHA。)
如果您的电子邮件服务器configuration正确,则应在SMTP交易过程中拒绝向未知用户发送电子邮件。
在SMTP交易中拒绝电子邮件
您的服务器应configuration为在SMTP交易阶段拒绝给未知用户的电子邮件。 这样做会向发送服务器返回一个550 SMTP错误代码。 由于这种情况发生在SMTP交易中,您的服务器永远不会发送“未送达报告”(又名反弹)。
正确configuration,这可以防止反向散射,因为拒绝是直接发送到发送服务器和其他电子邮件标头被忽略。
优点
这种方法的好处是,您在SMTP交易过程中很快拒绝电子邮件。 这可能意味着:
考虑一下,如果您将电子邮件路由为空,则发送服务器认为邮件已成功传递。 他们没有理由停止发送这些不存在的地址。 因此,随着这些旧地址的堆积,您需要越来越多的服务器资源来处理电子邮件。
要实现这一点,你只需要从电子邮件系统中删除用户。 如果您需要备份当前的电子邮件,那很好,您只需要您的服务器发送550 user unknown响应。