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

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

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

我刚刚将一台非常老旧的 Centos 5 服务器迁移到 v7,因此我使用的是 postfix-2.10.1-7.el7.x86_64。我升级了旧版 postfix 配置(可能是造成这种困境的原因)和其他似乎有效的补充内容:

  • postfix-perl-脚本-2.10.1-7.el7.x86_64
  • postgrey-1.34-12.el7.noarch
  • amavisd-新-2.11.1-1.el7.noarch
  • spamassassin-3.4.0-4.el7_5.x86_64
  • perl-邮件-SPF-2.8.0-4.el7.noarch
  • perl-邮件-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

和:

Mar 28 14:50:36 tormento postfix/smtp[1700]: 7B6C69C6A2: to=<[email protected]>, orig_to=<[email protected]>, 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=<[email protected]>, orig_to=<[email protected]>, 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)

作为例子。

第一个怀疑是 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

和 /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

我担心我错过了一些非常明显的东西,但是我已经在谷歌上搜索了两天,做了许多测试,现在我不知道该做什么。

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

提前致谢。

答案1

好吧,这很尴尬。正如我所料,我的问题是由最明显和最琐碎的原因引起的:postfix 用户 o_0 缺乏对 /etc/resolv.conf 的读取权限

您可能知道,postfix 子进程(smtp、smtpd、qmgr 等)由 postfix 用户运行。我收到的所有评论和建议都与访问 DNS 解析数据的问题有关,通常怀疑是 SELinux 或 chrooted postfix 造成的。你们最后的原因都是对的。遵循建议并尝试:

# sudo -u postfix -H cat /etc/resolv.conf
cat: /etc/resolv.conf: Permission denied

所以呢??

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

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

我怀疑我是否更改了 resolv.conf 的读取权限,但我不能 100% 确定。所以问题终于解决了,我很抱歉因为这个荒谬的原因而吸引了大家的注意力。谢谢大家。

答案2

步骤1。我检查 gmail.com 是否可以访问我服务器上的 mx 记录。首先,我安装了绑定服务器,yum install bind-utils并使用以下命令检查 gmail.com:

root@host# host -t mx gmail.com
;; connection timed out; no servers could be reached

因此,我将我的 dns 服务器更改为8.8.8.8使用 nmtui 命令并重新启动我的服务器...

重启后我执行 host -t mx gmail.com 并且我的超时被这个输出修复了:

root#host# host -t mx gmail.com
gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 5 gmail-smtp-in.l.google.com.

但对我来说主要问题还没有解决...所以,我执行了第 2 步...

第2步。嗯,我的服务器上不存在 etc 文件夹/var/spool/postfix/。因此,我手动创建了 etc 文件夹...然后,在上面复制三个文件。/etc/host.conf/etc/resolv.conf and /etc/servoces

root@host# mkdir /var/spool/postfix/etc
root@host# cp /etc/host.conf /var/spool/postfix/etc/
root@host# cp /etc/resolv.conf /var/spool/postfix/etc/
root@host# cp /etc/services /var/spool/postfix/etc/

MX的主要问题还没有解决...

步骤3.我改变了模式/etc/resolv.conf并解决/var/pool/postfix/etc/*1777我的问题

root@host# chmod 1777 /etc/resolve.conf
root@host# chmod 1777 -R /var/spool/postfix/etc

最后我重新启动了 postfix 服务systemctl restart postfix.service并且我的 smtp 工作正常!

答案3

仅供参考,此问题可能是由 SELinux 引起的。Postfix 没有权限读取 /etc/resolv.conf。要解决此问题,您可以通过该命令完全禁用 SELinux setenforce 0,或通过该命令重置 /etc/resolv.conf 的 SELinux 上下文sudo restorecon /etc/resolv.conf

相关内容