나는 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 공격을 방지하기 위해 숨겨야 하는 항목이 있는 경우입니다.