はじめに
メールを送信していると X-Authentication-Warning
というメールヘッダーが付いて、送信元(の更に元)のサーバーが外部に見えてしまうことがあります。
あまり気にしなくてもいいのですが、どうにも気になるので対策について調査してみました。
留意事項
例によって例のごとく、本件は Sendmail
に限っての対策とします。Postfix
側でも同じように発生するようですが、こちらは未調査で。
大昔から変わってない機能なので、ここではバージョンを限定しません。環境によって若干の差違がある点についてはご了承ください。
また sendmail
プロセスの再起動、cfファイルの作成方法(通常m4ファイルから作成する)、といった諸々の手順については明記しません。
設定ファイルについては暗黙的にm4ファイルを前提とします。それ以外のファイルは明示しますが、/etc/mail/
ディレクトリ以下に配置されることを想定します。
2つの設定
このヘッダーが付く条件が2つあります。
- 「信頼されていない」ローカルユーザーからメール送信
- 外部サーバーからのメールの送信(付けるのはそのメールを受けるサーバー)
この問題について調べてみると、前者のケースの回答しか見当たらなくて途方に暮れます。
信頼されたユーザー設定
この設定はデフォルトで root
、daemon
あるいは uucp
ユーザーからのメール送信を信頼する=X-Authentication-Warning
が付かないとなっています。
この設定に無いローカルユーザー(たとえば www
など)からのメールを発信する場合 X-Authentication-Warning
が付くというロジックになります。重要なので二度書きました。
対応としては以下の二つになります。
Ct クラスの設定
追加したいユーザーを confTRUSTED_USERS1 マクロでユーザー名を、空白区切りでリストアップします。
confTRUSTED_USERS(`www mail')
変更後はm4ファイルからcfファイルを作成した後、sendmail
にcfファイルを読み直させる必要があります。大抵のユースケースはこれで解決します。
Ft クラスの設定
追加したいユーザーを、一行一ユーザーでファイル2に追加します。そのためには下記の設定が必要になります(デフォルトで機能しない)。
FEATURE(`use_ct_file')
m4ファイルからcfファイルを作成に関しては一度だけで問題ありません。CTファイルの更新自体は sendmail
のリロードを実施する必要があります。
「信頼されたユーザー」をファイルで丁寧に管理したい向けに使用しますが、デフォルトで無効になっていますので、よほど運用上の要請が無いと使用しないと思われます。
外部サーバーからのメールの送信
外部サーバー(localhost
等を含む)からの接続時の情報に基づき、PrivacyOptions
設定によるフラグ管理により X-Authentication-Warning
ヘッダーの付与が判断されます。
具体的には authwarnings
フラグが関係します。デフォルトで設定されていますが、OSによっては更に noexpn
、novrfy
が付加されていることがあります。ただし後者2つのフラグは機能上は無関係です。
この設定(フラグ)が設定されている時、メール受信時(受信または転送設定によるリダイレクト等、用途に限らず)にSMTPプロトコル HELO
/EHLO
で主張したホスト名、接続元IPアドレスおよびその逆引きした結果と合わせて、X-Authentication-Warning
ヘッダーの付与を判断します。
対応としては以下の通りとなります。
authwarnings フラグの削除
この設定を外せば X-Authentication-Warning
付与する評価自体が行われなくなります。具体的には以下のように authwarnings
を消すように記述します。
define(`confPRIVACY_FLAGS', `')
変更後はm4ファイルからcfファイルを作成した後、sendmail
にcfファイルを読み直させる必要があります。
参考文献
オンラインで参照できる Sendmail
の公式ドキュメントが見当たらなくてつらい。