postfix/smtpd DNS 조회가 실패하는 이유는 무엇입니까?

postfix/smtpd DNS 조회가 실패하는 이유는 무엇입니까?

나는 2년 된 메일 서버(Debian의 Postfix)를 교체할 준비를 하고 있습니다. 변경 사항은 다음과 같습니다.

  • amd64 → ARM64
  • 데비안 10.2 → 11.2
  • 접미사 3.4.7 → 3.5.6

구성은 변경되지 않습니다.

이메일을 새 서버에 수동으로 전달 하려고 하면 telnet보낸 사람의 호스트 이름을 조회할 수 없습니다.

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

이전 서버는 잘 작동했습니다.

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:

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:

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관리되는 프로세스 중 하나로 실행됩니다.

답변1

Postfix는 기본적으로 chroot로 실행됩니다. 그것은 /etc/resolv.conf찾는 것 외에는 아무것도 모릅니다 /var/spool/postfix/etc/resolv.conf. 그것을 창조할 무언가가 없다면 그것은 거기에 없을 것입니다.

당면한 문제를 신속하게 해결하려면 다음을 수행하십시오.

cp /etc/resolv.conf /var/spool/postfix/etc/

Debian에서는 Postfix 서비스가 시작/중지될 때 -에서 차례로 /usr/lib/postfix/configure-instance.sh실행하여 자동으로 수행 됩니다./etc/init.d/postfix

도커 컨테이너에서는 명시적으로 실행되지 않는 한 아무것도 수행되지 않습니다. 단순히 해당 명령을 실행하는 것만으로는 /usr/sbin/postfix -c /etc/postfix start-fg문제가 해결되지 않습니다. 단지 Postfix가 시작되지만 표시되지는 않습니다 resolv.conf.

정확하게 말하자면 Postfix는 다음과 같이 실행될 수 있습니다:

/bin/bash -c "/usr/lib/postfix/configure-instance.sh - && /usr/sbin/postfix -c /etc/postfix start-fg"

또는 Postfix가 정상적으로 실행되도록, 즉 chroot가 아닌 상태로 실행되도록 구성할 수 있습니다. 이는 보안 고려 사항입니다. Docker 컨테이너 내에서도 메일 저장소와 같이 악의적인 SMTP 공격을 방지하기 위해 숨겨야 하는 항목이 있는 경우입니다.

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

관련 정보