Exim 在 gnutls_handshake 期間說“請求無效”
我有 Debian wheezy 並設置 Exim 來監聽埠 587,使用者可以使用 TLS 進行身份驗證。我正在使用 Thunderbird 31.1.2 對其進行測試。當我嘗試發送消息時,Thunderbird 會顯示:
發送消息失敗。無法發送消息,因為與 SMTP 伺服器 smtp.gaspatchmodels.com 的連接在事務處理過程中失去。重試或聯繫您的網路管理員。
Exim 在主日誌中顯示了這一點:
2014-09-29 18:03:22 從 ppp-94-68-63-22.home.otenet.gr 連接時出現 TLS 錯誤(
$$ 192.168.1. 68 $$)$$ 94.68.63.22 $$(gnutls_handshake):請求無效。
如果我嗅探流量,我看到客戶端說“STARTTLS”,伺服器響應“220 TLS 繼續”,然後客戶端發送二進制數據,之後連接似乎被丟棄。
如果我執行
exim
,-d
這就是我得到的:15332 SMTP<< STARTTLS 15332 initialising GnuTLS as a server 15332 GnuTLS global init required. 15332 initialising GnuTLS server session 15332 Expanding various TLS configuration options for session credentials. 15332 certificate file = /etc/exim4/exim.crt 15332 key file = /etc/exim4/exim.key 15332 TLS: cert/key registered 15332 verify certificates = /etc/ssl/certs/ca-certificates.crt size=245341 15332 Added 159 certificate authorities. 15332 Initialising GnuTLS server params. 15332 Loading default hard-coded DH params 15332 Loaded fixed standard D-H parameters 15332 GnuTLS using default session cipher/priority "NORMAL" 15332 host in tls_verify_hosts? no (option unset) 15332 host in tls_try_verify_hosts? no (option unset) 15332 TLS: a client certificate will not be requested. 15332 SMTP>> 220 TLS go ahead 15332 Received TLS SNI "[my domain name]" (unused for certificate selection) 15332 LOG: MAIN 15332 TLS error on connection from ppp-94-68-63-22.home.otenet.gr ([192.168.1.68]) [94.68.63.22] (gnutls_handshake): The request is invalid. 15332 TLS failed to start
對我來說,“請求無效”的資訊傳達了 Thunderbird 有過錯的意思;但是我不敢相信是這種情況,因為它既不能在我的 Thunderbird 上也不能在我客戶的 Thunderbird 上工作,而且因為它在兩天前工作(然後我從擠壓更新,刪除了配置,並重新創建它
ansible
)。我在配置中看不到任何相關的東西MAIN_TLS_ENABLE = true
在
/etc/exim4/conf.d/main/000_localmacros
.我可以從 gnutls 獲得更多調試資訊嗎?比如為什麼認為請求無效?
我找到了問題所在。我在配置中犯了一個錯誤:
/etc/exim4/exim.crt
,而不是包含主機證書+鏈證書,包含主機私鑰+鏈證書。我想知道這是一個錯誤
exim
還是gnutls
錯誤。“請求無效”似乎是針對此問題的不恰當錯誤消息。