我在我的 Debian(wheezy)服务器上使用 postfix,并将其配置为使用 policyd-weight,如下所示(在 main.cf 文件中):
smtpd_recipient_restrictions = reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unlisted_recipient,
warn_if_reject check_policy_service inet:127.0.0.1:12525,
check_policy_service inet:127.0.0.1:10023,
permit
不久前,之前正常工作的设置开始退回电子邮件,因为它无法到达 policyd-weight 守护进程(因此使用 warn_if_reject 来覆盖退回行为)。我检查了守护进程,它实际上正在运行并监听端口 12525:
tcp 0 0 127.0.0.1:12525 0.0.0.0:* LISTEN 20005/policyd-weigh
以下错误消息表明了我认为的问题的核心:
Feb 1 12:25:34 ginger postfix/policyd-weight[4446]: warning: child: could not open RBL Lookup Socket to config: IO::Socket::INET: Bad hostname 'config' Invalid argument
Feb 1 12:25:34 ginger postfix/policyd-weight[4446]: warning: child: err: can't resolve "config" to address at /usr/lib/perl5/Net/DNS/Resolver/Base.pm line 755, <GEN14499> line 26.#012
从这一点来看,我认为问题确实与 policyd-weight 有关,并且与 DNS 解析有关。起初,我以为 policyd-weight 之前以某种方式被赋予了主机名“config”,并尝试将 *config 解析为 IP 地址。但是,我没有找到任何关于配置在 policyd-weight 配置文件中。
然后我意识到也许是 policyd-weight 无法连接名称服务器(在大多数引用上述 postfix/policyd-weight 警告消息的帖子中,都没有意识到这一点),例如,它认为有一个名为配置(我的设置中没有,所以这注定会失败)。事实上,在/etc/resolv.conf文件:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver config
nameserver 213.133.100.100
nameserver 213.133.98.98
我认为这行应该如下
# nameserver config
因为这是互联网上大多数帖子所建议的(谷歌搜索的前四个结果“名称服务器配置” hetzner;由于声誉问题,无法发布两个以上的链接),并且此配置很可能继承自我的托管商在其安装中使用的默认配置(指他们的名称服务器):
/etc/resolvconf/resolv.conf.d/original
### Hetzner Online AG installimage
# nameserver 127.0.0.1
nameserver config
nameserver 213.133.100.100
nameserver 213.133.98.98
nameserver 213.133.99.99
nameserver 2a01:4f8:0:a111::add:9898
nameserver 2a01:4f8:0:a102::add:9999
nameserver 2a01:4f8:0:a0a1::add:1010
手动注释掉名称服务器配置在/etc/resolv.conf并重新启动policyd-weight工作正常,我可以从X-策略权重收到的电子邮件中的标题表明一切正常。
然而,我无法永久删除或更改该行。解析配置似乎没有使用/etc/resolvconf/resolv.conf.d/original更新时保存,因此每当我运行解析配置文件 -u它显示的正是/etc/resolv.conf我上面已经引用了。
/etc/网络/接口不包括任何名称服务器,而且据我所知,我也没有使用 NetworkManager。我是否应该使用以下内容来定义名称服务器/etc/网络/接口(正如Debian 手册)?
dns-nameservers 12.34.56.78 12.34.56.79
我还是想找出(未注释的)名称服务器配置这条线来自哪里以及为什么解析配置每次更新都会恢复。从哪里开始查找比较好?