我们在 DMZ 中放置了一个运行 MailCleaner 的新邮件网关,其默认配置将根据 Exim RCPT ACL 拒绝无效收件人。我们收到大量发送到不存在地址的垃圾邮件,因此我调整了 Exim 配置以丢弃而不是拒绝无效收件人,并验证了当向我们的域发出带有错误本地地址部分的 RCPT TO 时,它将丢弃带有 550 错误的连接。
我想知道这样做是否有任何缺点——我宁愿垃圾邮件发送者无法连接并简单地尝试一个又一个错误地址,并且绝对不想接受和/或退回错误地址的邮件。我知道 tar-pitting 是一种选择,但坦率地说,一旦输入了错误地址,保持连接打开似乎是一种资源浪费。将其丢弃在 tarpit 上或直接拒绝是否有我不知道的缺点?提前致谢。
答案1
这对于“合法”的无效收件人投递(旧地址、拼写错误等)来说,听起来有点“不礼貌”。但在我看来,这并不是最大的问题。
你真的在做你自己断开这些连接会造成损害——现在,不仅仅是让发送 MTA(合法或非法)一次性向您发送所有地址并快速获得每个地址的 Yay/Nay,您还要让它连接,获得一堆 Yay,然后当它获得 Nay 时,它将不得不重新连接,HELO/FROM/等,经历上次执行的所有 Yay,到达下一个 Nay,然后断开连接...基本上,对于具有 N 个失败收件人的收件人列表,您将获得 N+1 个连接而不是 1 个。对于合法服务器来说,这不是什么大问题,但对于拥有大量无效收件人的垃圾邮件发送者来说......呃。
如果您认为垃圾邮件发送者在收到无效地址后就会放弃,那么您将大吃一惊。他们是世界上最顽固的家伙,无论被丢弃多少次,他们都会坚持不懈地发送垃圾邮件。
当然,对于在 5xx 错误时重试的垃圾邮件发送者来说,丢弃或拒绝都不起作用……对于他们来说,tarpit 或检测源 IP 和 3xx 初始连接是唯一的选择。或者射击。我更喜欢射击。