TL;博士
如何欺骗我自己的 sendmail 认为电子邮件来自特定的 IP 地址,以便由于 DNSBL 匹配而拒绝该邮件?
细节:
我运行自己的邮件服务器,大多数垃圾邮件都被我添加到 /etc/mail/sendmail.mc 的 DNS 黑名单 (DNSBL) 阻止,如下所示:
dnl FEATURE(`dnsbl',`dnsbl.sorbs.net',`"554 Rejected " $&{client_addr} " found in dnsbl.sorbs.net"')dnl
dnl FEATURE(`dnsbl',`b.barracudacentral.org',`"554 Rejected " $&{client_addr} " found in b.barracudacentral.org"')dnl
今天进来了一些垃圾邮件(通过了所有测试),在检查了MX Toolbox和DNSBL Information之后,可以看到添加几个 DNSBL 中的一个会阻止这个特定的垃圾邮件。
因此,我添加了另一个 DNSBL,现在我想通过将这封电子邮件重新提交到 Sendmail 来对其进行测试,但问题在于:它不会来自正确的 IP 地址,并且 DNSBL 不会认为它很糟糕。
这是我通常会使用的命令:
formail -s /usr/sbin/sendmail -oi -t < testmail.mbox
在我尝试重新发明轮子之前,我想我先在这里问一下。可能的想法:
- 是否有用于发送邮件以伪造源 IP 的 CLI 选项?
- 也许制作一个排队的消息文件并将其直接放入队列中?
- 也许在我的机器上设置另一个IP地址,然后用它发送给自己?
- OpenVPN 或 SSH 隧道会是一个快速解决方案吗?
- 可能可以加载共享库来拦截系统调用,à la LibFakeTime?
- Dtrace 看起来很强大,它可以像这样改变 getsockopt(2) 调用吗?
谢谢!
在上面睡觉之后,解决方案最终变得微不足道:
瞧,生成的标题:
它还显示 IP 地址没有被阻止(DNSBL 不起作用?),所以从这个意义上说,测试是成功的。:-/
更新:哦!sendmail.mc 中的行应该是这样的:
换句话说,前面的“dnl”注释掉了所有的 DNSBL 行。:-(
Aaaa这就是我们测试的原因,女士们,先生们。