LoginSignup
3
1

More than 1 year has passed since last update.

EximのメールヘッダーのMTA情報を隠蔽する

Posted at

はじめに

本記事では、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と書かれている箇所の下に記述するとよいでしょう。

exim.conf
######################################################################
#                    MAIN CONFIGURATION SETTINGS                     #
######################################################################
#

内容は先程出力した現在の設定内容から(Exim $version_number)を消したものになります。
received_header_textはデフォルトだとファイルで指定されていないと思いますが、念のため検索して設定が無いか確認しましょう。
ファイルで指定されていない場合、デフォルトの設定が適用されるようです。

設定が無いことを確認したら、下記のようにreceived_header_textを指定して記述を追加し、保存しましょう。

exim.conf
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に比べて文献が少なめなので、調べるのに苦労しました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1