问题
有没有办法让 spamassassin 绕过我的 Linux 系统的 DNS 服务器来查询 DNSBL?
背景信息
当我的服务器收到电子邮件时,spamassassin 会对其进行检查。其中一项检查是在 DNS 黑名单中查找相关邮件服务器。不幸的是,我的提供商的 DNS 不再允许查询这些黑名单。spamassassin 的标头信息显示了这一点URIBL_BLOCKED在我收到的所有电子邮件中。我也手动测试了这一点:
root@net:# dig 2.0.0.127.multi.uribl.com txt +short
"127.0.0.1 -> Query Refused. See http://uribl.com/refused.shtml for more information [Your DNS IP: 123.123.123.123]"
(123.123.123.123
在我的 DNS 中配置/etc/resolv.conf
为 dns。)
当我手动查询他们的一个域名服务器时直接地 (参见@cc.uribl.com。)无需使用我的提供商的递归器,我就会得到答案:
root@net:# dig 2.0.0.127.multi.uribl.com txt @cc.uribl.com. +short
permanent testpoint
(请注意,这是针对该 BL 的测试查询,应该会给出此结果)
概括
那么,除了在此系统上安装 DNS 递归器之外,还有什么方法可以让 spamassassin 不使用系统默认 DNS 进行 DNSBL 查询?
更新
好的,实际上安装本地 dns-recursor 没有问题。它很轻量且易于设置,现在我不再遇到 BL 问题了。
答案1
Spamassassin(邮件::SpamAssassin::DnsResolver) 用途网络::DNS::解析器perl 模块。
它应该允许您通过以下方式更改 spamassassin 使用的名称服务器RES_NAMESERVERS
环境变量。
答案2
我在笔记本电脑上安装了 BIND Named,使用的是旧版本的Spamassassin 的文档“禁用 DNSBL 查询转发”;它要求我指向/etc/resolv.conf
127.0.0.1。
但我只能通过以下方式才能实现它
static domain_name_servers=127.0.0.1
在结尾处/etc/dhcpcd.conf
。然后我必须复制该值通常放入( )。这个方法很好用,直到我将笔记本电脑带到其他地方,连接到新的 DHCP 服务器后/etc/resolv.conf
,我惊讶地发现 DNS 不起作用,因为我已将 Named 指向旧的本地地址。/etc/named.conf
forwarders { 192.168.1.1; }
我认为,避免这个问题的最好方法是仅有的Spamassassin 使用本地名称;因此我恢复了原始名称dhcpcd.conf
并将 Spamassassin 指向 127.0.0.1。您可以通过以下两种方式之一执行此操作:
按照 AnFi 的回答,您可以更改环境,例如在服务文件中/etc/systemd/system/spamassassin.service
:
[Service]
Environment="RES_NAMESERVERS=127.0.0.1"
...
但是根据上面的文档,你也可以在 Spamassassin 的配置文件中配置这一点local.cf
。这也许更优雅:
dns_server 127.0.0.1