私はホーム サーバーを所有しており、/home と /var のシステム ドライブを USB と HDD の組み合わせで使用していたため、SSD に更新しました。USB は以前のバージョンの Debian にあったため、新規インストールを実行しました。これにより、EXIM もバージョン 4.95 にアップグレードされました。以前は 4.94.2 を使用していました。
同じスマートホスト構成にもかかわらず、ISP の SMTP サーバーを使用すると、TLS が使用されなくなり、検証エラーが発生します。
/var/log/exim4/メインログ:
2022-04-12 03:30:25 1ne6I7-000AHw-MF TLS session: (certificate verification failed): delivering unencrypted to H=<DOMAIN> [<IP>] (not in hosts_require_tls)
メールは暗号化されていない状態でも引き続き受け入れられますが、cron ジョブからのメールは ISP によってスパムとしてフラグ付けされるようになりました。唯一の変更点は、メッセージのヘッダーが からにReceived
変わったことです。したがって、おそらくその違いが特別な注意を必要とするフラグ付けになっているものと思われます。with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2)
with esmtp (Exim 4.95)
以前のインストールと同じ自己署名キーと証明書 (2013 年のタイムスタンプ付き) を使用していました。新しいペアの生成も試みましたが、同様に効果はありませんでした。
オンラインでアドバイスを検索したところ、検証できるようにletsencrypt構成を使用することが提案されました。私はすでにそれを使用していますが、EXIMでも同じ動作が発生しました。
これが私の設定です
/etc/exim4/update-exim4.conf: 更新:
dc_eximconfig_configtype='smarthost'
dc_other_hostnames='<LOCAL DOMAIN>'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='<ISP DOMAIN>:587'
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'
/etc/exim4/etc/exim4/conf.d/main/00_local_settings:
MAIN_TLS_ENABLE = yes
MAIN_TLS_CERTIFICATE = /etc/letsencrypt/live/<LOCAL DOMAIN>/fullchain.pem
MAIN_TLS_PRIVATEKEY = /etc/letsencrypt/live/<LOCAL DOMAIN>/privkey.pem
/etc/letsencrypt/archive/<ローカルドメイン>/*15.*
-rw-r--r-- 1 root Debian-exim 1870 Mar 28 00:48 /etc/letsencrypt/archive/<LOCAL DOMAIN>/cert15.pem
-rw-r--r-- 1 root Debian-exim 3749 Mar 28 00:48 /etc/letsencrypt/archive/<LOCAL DOMAIN>/chain15.pem
-rw-r--r-- 1 root Debian-exim 5619 Mar 28 00:48 /etc/letsencrypt/archive/<LOCAL DOMAIN>/fullchain15.pem
-rw------- 1 root Debian-exim 1708 Mar 28 00:48 /etc/letsencrypt/archive/<LOCAL DOMAIN>/privkey15.pem
/etc/exim4/passwd.client
SMTP ログイン詳細を含むファイルも持っていますが、明らかにメールの送信は正常に機能しています。
私の自宅の IP アドレスを指すドメインです。
00_local_settings の letsencrypt キーへのエントリは、現在のバージョンに移動するシンボリックリンクを指します。これらのエントリでは、EXIM が秘密キーを表示できるようにグループ所有権を変更しましたが、アクセス許可はそのままにしています。
以前の作業構成は同じでしたが、 に自己署名されたファイルexim.crt
とexim.key
ファイルがあり/etc/exim4
、00_local_settings ファイルの最後の 2 行がありませんでした。
/etc/exim4
また、letsencrypt ファイルをコピーして名前を付けexim.cert
、exim.key
同じ権限 640 で 00_local_settings に何も設定しないことも試しましたが、何も変わりませんでした。
特に厄介なのは、最終テストとして、何が起こるかを確認するために、構成なしでキーを削除したことです。同じエラーが発生したため、使用したキーに問題があるのか、それともキーがまったく認識されないだけなのかはわかりません。
答え1
調査を続け、ある意味答えを見つけました。誰の証明書が検証されているのかは分かりませんでした。自分の証明書だと思っていましたが、リモート SMTP サーバーの証明書である可能性もあることに気付きました。
以下のエントリを追加して/etc/exim4/etc/exim4/conf.d/main/00_local_settings
検証を無効にすると、TLS が使用できるようになります。
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !*
これは、受信されたことを示すメッセージヘッダーで確認できます。with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95)
これは以前から起こっていたことであり、私の初期設定以降、Debian または Exim のいずれかが検証を必要とするデフォルトに変更されたと想定しています。
おそらく、リモート サーバーが自己生成の証明書を使用する場合、検証できないのでしょうか?