后缀:name=domain.com type=MX 的名称服务错误:找不到主机,请重试

Ism*_*lea 3 postfix mx-record

我被 Postfix MX 相关的问题困住了。

我刚刚将一个非常旧的 Centos 5 服务器迁移到 v7,所以我使用的是 postfix-2.10.1-7.el7.x86_64。我已经升级了旧的 postfix 配置(可能是这个地狱的原因)和其他似乎有效的补充内容:

  • postfix-perl-scripts-2.10.1-7.el7.x86_64
  • postgrey-1.34-12.el7.noarch
  • amavisd-new-2.11.1-1.el7.noarch
  • spamassassin-3.4.0-4.el7_5.x86_64
  • perl-Mail-SPF-2.8.0-4.el7.noarch
  • perl-Mail-DKIM-0.39-8.el7.noarch
  • dovecot-2.2.36-3.el7.x86_64

在经历了许多磨难之后,我认为除了烦人的 MX 相关问题外,我的大部分系统都在运行,如(来自 /var/log/maillog):

Mar 28 14:26:48 tormento postfix/smtpd[1021]: warning: Unable to look up MX host for spmailtechn.com: Host not found, try again
Mar 28 14:26:51 tormento postfix/smtpd[1052]: warning: Unable to look up MX host for inlumine.ual.es: Host not found, try again
Mar 28 14:31:38 tormento postfix/smtpd[1442]: warning: Unable to look up MX host for aol.com: Host not found, try again
Mar 28 13:07:53 tormento postfix/smtpd[26556]: warning: Unable to look up MX host for hotmail.com: Host not found, try again
Mar 28 13:12:06 tormento postfix/smtpd[26650]: warning: Unable to look up MX host for facebookmail.com: Host not found, try again
Mar 28 13:12:31 tormento postfix/smtpd[26650]: warning: Unable to look up MX host for joker.com: Host not found, try again
Mar 28 13:13:02 tormento postfix/smtpd[26650]: warning: Unable to look up MX host for bounce.linkedin.com: Host not found, try again
Run Code Online (Sandbox Code Playgroud)

和:

Mar 28 14:50:36 tormento postfix/smtp[1700]: 7B6C69C6A2: to=<ismael.olea@gmail.com>, orig_to=<ismael@olea.org>, relay=none, delay=1142, delays=1142/0.07/0/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=gmail.com type=MX: Host not found, try again)
Mar 28 14:32:05 tormento postfix/smtp[1383]: 721A19C688: to=<XXXXX@yahoo.com>, orig_to=<XXXX@olea.org>, relay=none, delay=4742, delays=4742/0/0/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=yahoo.com type=MX: Host not found, try again)
Run Code Online (Sandbox Code Playgroud)

作为例子。

第一个怀疑是 DNS 解析,但这在使用 Hetztner DNS 服务器(其中机器是主机)或 8.8.8.8 或 9.9.9.9 时都有效。

$ cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 213.133.100.100
nameserver 213.133.98.98
nameserver 213.133.99.99
Run Code Online (Sandbox Code Playgroud)

和 /etc/hosts:

195.201.24.84 tormento tormento.olea.org
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4

# The following lines are desirable for IPv6 capable hosts
::1 tormento tormento.olea.org
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
Run Code Online (Sandbox Code Playgroud)

我担心我遗漏了一些非常明显的东西,但我已经用谷歌搜索了两天进行任何数量的测试,现在我不知道该怎么做。

由于 Serverfault 将我的原始问题拒绝为垃圾邮件,因此我已将日志和配置详细信息放在我的个人博客中:http : //olea.org/diario/2019/03/28/Postfix_MX_not_found.html

提前致谢。

Ism*_*lea 7

嗯,这很尴尬。正如我预测的那样,我的问题是由最明显和最微不足道的原因引起的:postfix 用户 o_0 缺乏对 /etc/resolv.conf 的读取访问权限

您可能知道 postfix 子过程(smtp、smtpd、qmgr 等)与 postfix 用户一起运行。我收到的所有评论和建议都与访问 DNS 解析数据的问题有关,通常的嫌疑人是 SELinux 或 chroot 后缀。最后的理由你们都说对了。遵循建议并尝试:

# sudo -u postfix -H cat /etc/resolv.conf
cat: /etc/resolv.conf: Permission denied
Run Code Online (Sandbox Code Playgroud)

所以呢??

# ls -l /etc/resolv.conf
-rw-r-----. 1 root named 118 mar 28 20:34 /etc/resolv.conf

Run Code Online (Sandbox Code Playgroud)

OMG!...然后在 chmod o+r 并重新启动 Postfix 之后,所有保留的电子邮件都可以被处理和发送,新邮件会按预期处理。

我怀疑我是否更改了 resolv.conf 读取权限,但我不能 100% 确定。所以最后问题解决了,我很抱歉因为这个荒谬的原因偷走了你们所有人的注意力。谢谢大家。