Linux의 명령줄에서 메일을 보내면 두 개의 다른 서버에 있는 도메인에 대해 다른 결과가 나타납니다.

Linux의 명령줄에서 메일을 보내면 두 개의 다른 서버에 있는 도메인에 대해 다른 결과가 나타납니다.

나는 Postfix와 모든 적절한 서버 파일을 두 개의 다른 서버에서 동일하게 구성했습니다. 이들은 서로 다른 시간에 구성되었지만 파일과 설정이 일치하므로 , /etc/postfix/main.cf, /etc/hosts, /etc/hostname/etc/resolv.conf/etc/mailname모두 일치합니다.

다른 부분은 mail 명령을 사용하여 명령줄을 통해 그 중 하나에서 메일을 보낼 때마다 각 유닛에서 다른 결과를 얻고 무엇이 다른지, 이것이 어디에 있는지 알아낼 수 없다는 것입니다. 메일 명령에서 변수를 가져오고 있습니다.

  • 호스트 1(/var/log/mail.log에서):uid=1000 from=<operations>

  • 호스트 2(/var/log/mail.log에서):uid=1000 [email protected]

어떤 이유로든 두 번째 호스트는 그 뒤에 호스트 이름을 추가합니다. 그러나 최상위 호스트는 이를 그대로 두고 있기 때문에 Postfix에 설정한 myorigin 변수를 사용하고 있으며 의도한 대로 작동하고 있습니다.

여기에 뭔가 일치하지 않습니다. 내 모든 파일이 동일하다고 말했듯이 단지 비교를 위해 아래에 postconf -n을 게시하고 있습니다(각 호스트에서 동일하므로 두 번 붙여넣을 필요가 없습니다. Notepad++로 비교했습니다.)

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
inet_protocols = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = mail.example.com, localhost.localdomain, localhost
myhostname = mail.example.com
mynetworks = 10.0.0.0/8 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = smtp-relay.gmail.com
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

답변1

나는 그것을 알아. 어떤 이유로든 내 /etc/mailname이 다른 서버와 동일하고 파일에 동일한 MD5sum이 있음에도 불구하고 처리되지 않은 것 같습니다. Postfix 구성이 이를 처리하지 못했습니다. 나는 또한 한 시스템(작동하지 않고 나중에 Postfix가 설치된 시스템)에서 mailutils를 사용하고 있고 다른 시스템은 bsd-mailx를 사용하고 있다는 것을 알아냈습니다. /etc/mailname 변경을 시도하기 전에 이것을 바꿨는데 별 차이가 없는 것 같았지만 가치가 있는 경우를 대비해 언급해 두었습니다. 어쨌든 내 /etc/mailname을 test와 같은 가짜 값으로 변경한 다음 sudo postfix reload 및 sudo service postfix restart를 수행한 다음 내가 의도한 대로(contoso.com) 다시 전환한 다음 동일한 두 명령을 수행했습니다. 구성과 서비스를 새로 고치고 보니 의도한 대로 작동하고 있었습니다. 도움을 주신 모든 분들께 감사드립니다.

답변2

스크래치하세요 - 원래 게시물에 /etc/mailname이라고 말한 것을 놓쳤습니다... 하지만 postfix를 다시 시작하는 것이 여전히 관련이 있을 수 있다고 생각합니다.


시스템에 이 파일이 있으면 /etc/mailname을 확인하십시오. 이는 아웃바운드 메일 이름에 영향을 미칩니다.

root@purgatory:/home/me# cat /etc/hostname
purgatory.corp
root@purgatory:/home/me# cat /etc/mailname
aaaaaapurgatory.corp

postfix/qmgr[33605]: C8FEF2461048: from=<[email protected]>, size=367, nrcpt=1 (queue active)

/etc/mailname을 편집한 후에는 postfix를 다시 시작하십시오.

관련 정보