はじめに
本記事では、Eximで送信メールのヘッダーのMTA情報を隠蔽する方法を紹介します。
Postfixについてはおそらくググったら同様の内容が出てくると思います。
メールヘッダーのMTA情報には使用しているMTAやそのバージョンが記載されます。
そのため、隠蔽されている方がよりセキュアと言えるでしょう。
下記はEximでメール配信を行い、受信側でReceivedヘッダーを確認した例です。
Received: from [::1] (port=XXXXX helo=example.com)
by example.com with esmtpa (Exim 4.94.2)
(envelope-from <hoge@example.com>)
id ******-******-**
for user@domain.com; Fri, 25 Mar 2022 16:22:22 +0900
(Exim 4.94.2)という表示がされていますね。
こちらはEximの設定で非表示(削除)できるので、以下に方法を記載します。
使用するEximのバージョンは上記の通り(Exim 4.94.2)です。
実行手順
received_header_textの現在の設定内容の確認
Receivedヘッダーの内容は、EximのConfigurationファイルで設定するオプションの「received_header_text」で指定します。
現在の設定を確認しましょう。
# exim -bP received_header_text
received_header_text = Received: ${if def:sender_rcvhost {from $sender_rcvhost\n\t}{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std\n\t}}(Exim $version_number)\n\t${if def:sender_address {(envelope-from <$sender_address>)\n\t}}id $message_exim_id${if def:received_for {\n\tfor $received_for}}
長いですが、よく見ると中に(Exim $version_number)と書かれていますね。
削除したいのは(Exim 4.94.2)なので、これを括弧ごとまるっと消せば隠蔽できそうです。
EximのConfigurationファイルの編集
設定の際はEximのConfigurationファイルを編集します。
ファイルパスを確認しておきましょう。
# exim -bV
「Configuration file is」と書かれている行に出力されます。
Configuration file is /etc/exim/exim.conf
こちらを編集しましょう。
# vim /etc/exim/exim.conf
このファイルに1行追加する形です。
MAIN CONFIGURATION SETTINGと書かれている箇所の下に記述するとよいでしょう。
######################################################################
# MAIN CONFIGURATION SETTINGS #
######################################################################
#
内容は先程出力した現在の設定内容から(Exim $version_number)を消したものになります。
received_header_textはデフォルトだとファイルで指定されていないと思いますが、念のため検索して設定が無いか確認しましょう。
ファイルで指定されていない場合、デフォルトの設定が適用されるようです。
設定が無いことを確認したら、下記のようにreceived_header_textを指定して記述を追加し、保存しましょう。
received_header_text = Received: ${if def:sender_rcvhost {from $sender_rcvhost\n\t}{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std\n\t}}\n\t${if def:sender_address {(envelope-from <$sender_address>)\n\t}}id $message_exim_id${if def:received_for {\n\tfor $received_for}}
これで設定は完了です。
# exim -bP received_header_text
received_header_text = Received: ${if def:sender_rcvhost {from $sender_rcvhost\n\t}{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std\n\t}}\n\t${if def:sender_address {(envelope-from <$sender_address>)\n\t}}id $message_exim_id${if def:received_for {\n\tfor $received_for}}
実際にメールを送信し受信先でヘッダーを確認します。
Received: from [::1] (port=XXXXX helo=example.com)
by example.com with esmtpa
(envelope-from <hoge@example.com>)
id ******-******-**
for user@domain.com; Fri, 25 Mar 2022 17:45:32 +0900
よくできました。
おわりに
cPanelを使っているならWHMのExim Configuration ManagerのAdvanced Editorから簡単に設定できます。
EximはPostfixに比べて文献が少なめなので、調べるのに苦労しました。