Linux のコマンドラインからメールを送信すると、2 つの異なるサーバーのドメインで異なる結果が返されます。

Linux のコマンドラインからメールを送信すると、2 つの異なるサーバーのドメインで異なる結果が返されます。

私は Postfix を設定し、適切なサーバー ファイルもすべて 2 つの異なるサーバー上で同じになるようにしました。これらは異なるタイミングで設定されましたが、ファイルと設定は一致しており、、、、、などは/etc/postfix/main.cfすべて/etc/hosts一致しています。/etc/hostname/etc/resolv.conf/etc/mailname

異なる部分は、mail コマンドを使用してコマンド ライン経由でいずれかのユニットからメールを送信するたびに、各ユニットから異なる結果が返され、何が違うのか、この変数が mail コマンドからどこから取得されているのかがまったくわかりません。

  • ホスト 1 (/var/log/mail.log から):uid=1000 from=<operations>

  • ホスト 2 (/var/log/mail.log から):uid=1000 [email protected]

何らかの理由で、2 番目のホストはホスト名をその後に追加しています。しかし、最上位のホストはホスト名をそのまま残しており、そのため、Postfix で設定した myorigin 変数を使用しており、意図したとおりに動作しています。

ここでは何かが一致していません。前述したように、すべてのファイルは同じですが、比較のために、以下に postconf -n を投稿します (各ホストで同じなので、2 回貼り付ける必要はありません。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 構成がそれを受け入れなかったのです。また、1 つのシステム (動作していなかったシステムで、事後に Postfix をインストールしたもの) では mailutils を使用していましたが、もう 1 つのシステムでは bsd-mailx を使用していました。/etc/mailname の変更を試す前にこれを入れ替えましたが、違いはないようでしたが、念のためメモしておきます。とにかく、/etc/mailname を test などの偽の値に変更し、sudo postfix reload と sudo service postfix restart を実行してから、意図した値 (contoso.com) に戻して、同じ 2 つのコマンドを実行して構成とサービスを更新したところ、なんと意図したとおりに動作しました。ご協力いただいた皆様に感謝します。

答え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 を再起動してください。

関連情報