首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么后缀/smtpd DNS查找会失败?

为什么后缀/smtpd DNS查找会失败?
EN

Unix & Linux用户
提问于 2022-02-05 08:39:36
回答 1查看 730关注 0票数 3

我正在准备更换一个2年前的邮件服务器-- Debian上的Postfix。这些变化是:

  • amd64→arm64
  • Debian10.2→11.2
  • 后缀3.4.7→3.5.6

配置保持不变。

当我尝试手动(使用telnet)向新服务器发送电子邮件时,它无法查找发送方的主机名:

代码语言:javascript
复制
postfix/smtpd[146]: lookup gmail.com type A flags 
postfix/smtpd[146]: dns_query: gmail.com (A): Host not found, try again
postfix/smtpd[146]: lookup gmail.com type AAAA flags 
postfix/smtpd[146]: dns_query: gmail.com (AAAA): Host not found, try again
postfix/smtpd[146]: lookup gmail.com type MX flags 
postfix/smtpd[146]: dns_query: gmail.com (MX): Host not found, try again

旧服务器可以很好地执行此操作:

代码语言:javascript
复制
postfix/smtpd[5554]: lookup gmail.com type A flags 
postfix/smtpd[5554]: dns_query: gmail.com (A): OK
postfix/smtpd[5554]: dns_query: reply len=43 ancount=1 nscount=0
postfix/smtpd[5554]: dns_get_answer: type A for gmail.com

sudo -s -u postfix dig +short mx gmail.com在这两台服务器上都能正常工作。

postconf | grep dns在两台服务器上的输出是相同的。/etc/resolv.conf也是。

新的可能出什么问题了?还有什么能被调试出来的呢?

/etc/resolv.conf

代码语言:javascript
复制
options timeout:2 attempts:5
; generated by /usr/sbin/dhclient-script
search us-west-2.compute.internal
nameserver 172.31.0.2

postconf | grep dns

代码语言:javascript
复制
disable_dns_lookups = no
dns_ncache_ttl_fix_enable = no
dnsblog_reply_delay = 0s
dnsblog_service_name = dnsblog
lmtp_dns_reply_filter =
lmtp_dns_resolver_options =
lmtp_dns_support_level =
lmtp_host_lookup = dns
postscreen_dnsbl_action = ignore
postscreen_dnsbl_max_ttl = ${postscreen_dnsbl_ttl?{$postscreen_dnsbl_ttl}:{1}}h
postscreen_dnsbl_min_ttl = 60s
postscreen_dnsbl_reply_map =
postscreen_dnsbl_sites =
postscreen_dnsbl_threshold = 1
postscreen_dnsbl_timeout = 10s
postscreen_dnsbl_whitelist_threshold = 0
smtp_dns_reply_filter =
smtp_dns_resolver_options =
smtp_dns_support_level =
smtp_host_lookup = dns
smtpd_dns_reply_filter =

如果这与此相关,“服务器”实际上是作为主命令运行supervisor的停靠容器,而后者又将/usr/sbin/postfix -c /etc/postfix start-fg作为托管进程之一运行。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-02-05 13:45:02

默认情况下,后缀以色运行。它对/etc/resolv.conf一无所知,而是寻找/var/spool/postfix/etc/resolv.conf。除非有东西在那里创造,否则就不会存在。

要快速解决眼前的问题,只需:

代码语言:javascript
复制
cp /etc/resolv.conf /var/spool/postfix/etc/

在Debian上,这是通过从/usr/lib/postfix/configure-instance.sh运行/etc/init.d/postfix自动完成的--这反过来在后缀服务启动/停止时执行,等等。

在码头容器中,除非显式执行,否则所有这些都不会被执行。简单地运行命令/usr/sbin/postfix -c /etc/postfix start-fg不会切断它-它只是启动后缀,它没有看到resolv.conf

为了使其正确,可以将后缀运行为:

代码语言:javascript
复制
/bin/bash -c "/usr/lib/postfix/configure-instance.sh - && /usr/sbin/postfix -c /etc/postfix start-fg"

或者,后缀可以配置为正常运行,即非着色。这是一个安全考虑--即使在一个码头容器中,如果有什么东西可以隐藏恶意SMTP攻击,例如邮件存储。

相关:https://serverfault.com/questions/661621/why-do-i-have-to-manually-copy-etc-services-and-etc-resolv-conf-into-var-spoo

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/689365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档