我有Postfix在OpenBSD上运行,而且在后缀或本地DNS服务器(dnsmasq)中没有configuration任何后缀的情况下,遇到了追加search域的问题。
我的域名具有指向myhost.example.com
的通配符CNAME条目( *.example.com
)。
我知道,通常,为了使它像这样行事,我会在我的resolv.conf中有一个“search”条目,但我没有这样的条目。 我的/etc/resolv.conf
包含:
nameserver 127.0.0.1 nameserver <my ISP's DNS 1> nameserver <my ISP's DNS 2>
Dnsmasq知道忽略本地主机条目(并在日志中这样说),但这意味着其他服务在dnsmasq中查找。 dnsmasq只使用默认configuration,根本没有任何改变。
如果我在dnsmasq中启用日志logging,我得到这样的条目:
Dec 15 10:39:56 mail dnsmasq[640]: query[A] ncwfood.com from 127.0.0.1 Dec 15 10:39:56 mail dnsmasq[640]: forwarded ncwfood.com to <my ISP's DNS 1> Dec 15 10:39:56 mail dnsmasq[640]: reply ncwfood.com is NXDOMAIN-IPv4 Dec 15 10:39:56 mail dnsmasq[640]: query[AAAA] ncwfood.com from 127.0.0.1 Dec 15 10:39:56 mail dnsmasq[640]: forwarded ncwfood.com to <my ISP's DNS 1> Dec 15 10:39:56 mail dnsmasq[640]: reply ncwfood.com is NXDOMAIN-IPv6
这对于一个失败的查找来说都是正确的,而且dnsmasq正在做它应该做的事情。 然后postfix做到这一点:
Dec 15 10:39:56 mail dnsmasq[640]: query[A] ncwfood.com.example.com from 127.0.0.1 Dec 15 10:39:56 mail dnsmasq[640]: forwarded ncwfood.com.example.com to <my ISP's DNS 1> Dec 15 10:39:56 mail dnsmasq[640]: reply myhost.example.com is <my IP> Dec 15 10:39:56 mail dnsmasq[640]: query[AAAA] ncwfood.com.example.com from 127.0.0.1 Dec 15 10:39:56 mail dnsmasq[640]: cached ncwfood.com.example.com is <CNAME> Dec 15 10:39:56 mail dnsmasq[640]: cached myhost.example.com is 2001:4b98:...
它追加我的域名,做一个查找,匹配通配符,并最终指向它不应该。 如果我直接向dnsmasq发出名称查找(例如,用dig @localhost ...
),它不会做这些额外的查找,所以这绝对是后缀。
在我的postfixconfiguration中,我已经将它设置为遵循系统DNS服务(dnsmasq),而不是使用它自己的dnsparsing器,而不是追加search域,如下所示:
lmtp_host_lookup = native smtp_host_lookup = native smtp_dns_resolver_options = disable_dns_lookups = yes ignore_mx_lookup_error = no
当我看到dnsmasq日志中的查找时,“native”指令显然正在工作。 根据文档,似乎smtp_dns_resolver_options的行为,如果它设置为res_dnsrch
,但它不是(它是空白的)。
这是来自同一消息事务的我的后缀日志:
Dec 15 10:40:26 mail postfix/smtp[29517]: connect to ncwfood.com[46....]:25: Connection timed out Dec 15 10:40:26 mail postfix/smtp[29517]: connect to ncwfood.com[2001:4b98:...]:25: No route to host Dec 15 10:40:26 mail postfix/smtp[29517]: 22F8A3A4F0F: to=<[email protected]>, relay=none, delay=168442, delays=168412/0.33/30/0, dsn=4.4.1, status=deferred (connect to ncwfood.com[2001:4b98:...]:25: No route to host)
它试图连接到的地址是我的通配符主机,它不运行邮件服务器,因此连接失败。
我发现一个发布说明说,后缀用于自动附加域,但在2.8版停止; 我正在运行2.10。
我怎样才能阻止postfix做这些查找?
我不认为disable_dns_lookups
做你认为它的作用。 从http://www.postfix.org/postconf.5.html
disable_dns_lookups (default: no) Disable DNS lookups in the Postfix SMTP and LMTP clients. When disabled, hosts are looked up with the getaddrinfo() system library routine which normally also looks in /etc/hosts. As of Postfix 2.11, this parameter is deprecated; use smtp_dns_support_level instead. DNS lookups are enabled by default.
我build议看一些其他的后缀参数,如: append_at_myorigin和append_dot_mydomain以及local_header_rewrite_clients
postconf -n的输出也会有帮助。