我有一台家庭伺服器,並將系統磁碟機更新為 SSD,因為它位於 /home 和 /var 的 USB 和 HDD 組合上。因為 USB 位於先前版本的 Debian 上,所以我進行了全新安裝,這也將我升級到了 EXIM 版本 4.95,之前我使用的是 4.94.2。
儘管智慧主機配置相同,但要使用 ISP 的 SMTP 伺服器,它不再使用 TLS 並給出驗證錯誤。
/var/log/exim4/mainlog:
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.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 文件中沒有後兩行。
我還嘗試將 LetsEncrypt 檔案複製到其中/etc/exim4
並命名它們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 已將預設設定更改為自我初始配置以來需要驗證。
據推測,如果遠端伺服器使用自行產生的證書,則無法驗證?