Email-Server
monit Sendmail:無法切換到 SSL
我設置了 monit 來監控在我的伺服器上執行的一些服務。在其中一台伺服器上,我還執行了一個郵件伺服器,它處理我擁有的域(在本例中為 example.com)的郵件傳輸。長期以來,monit 被配置為在服務不再響應時向我的電子郵件地址 (myname@example.com) 發送電子郵件。
現在,自從一段時間以來(不幸的是,我不知道確切的時間),monit 不再發送電子郵件了。在我的日誌中,我發現類似這樣的行:
[CEST Oct 11 11:10:50] debug : Processing postponed events queue [CEST Oct 11 11:10:50] debug : monit: processing queued event /var/lib/monit/events/1476176912_a2e860 [CEST Oct 11 11:10:50] debug : Timestamp failed notification is sent to myname@example.com [CEST Oct 11 11:10:50] error : monit: Cannot get the SSL server certificate! [CEST Oct 11 11:10:50] error : Sendmail: Cannot switch to SSL [CEST Oct 11 11:10:50] error : Alert handler failed, retry scheduled for next cycle
(啟用調試日誌)
monitrc 文件中郵件伺服器的配置如下所示:
set mailserver bits.example.com port 587 username "monit@example.com" password "secret" using tlsv1 with timeout 30 seconds
由於我沒有更改任何內容,並且 monit 中的配置對我來說看起來不錯,我認為我的郵件伺服器不再像預期的那樣工作(即使我沒有發現伺服器的其他使用者有任何問題(一些網路項目) )。但是,我嘗試使用 openssl 直接發送電子郵件(因為伺服器只允許 tls 連接):
myuser@server:~$ openssl s_client -connect bits.example.com:587 -starttls smtp -CApath /etc/ssl/certs CONNECTED(00000003) depth=2 C = IL, O = StartCom Ltd., OU = Secure Digital Certificate Signing, CN = StartCom Certification Authority verify return:1 depth=1 C = IL, O = StartCom Ltd., OU = StartCom Certification Authority, CN = StartCom Class 1 DV Server CA verify return:1 depth=0 CN = bits.example.com verify return:1 --- Certificate chain 0 s:/CN=bits.example.com i:/C=IL/O=StartCom Ltd./OU=StartCom Certification Authority/CN=StartCom Class 1 DV Server CA 1 s:/C=IL/O=StartCom Ltd./OU=StartCom Certification Authority/CN=StartCom Class 1 DV Server CA i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority --- Server certificate -----BEGIN CERTIFICATE----- <removed for a shorter code snippet> -----END CERTIFICATE----- subject=/CN=bits.example.com issuer=/C=IL/O=StartCom Ltd./OU=StartCom Certification Authority/CN=StartCom Class 1 DV Server CA --- No client certificate CA names sent --- SSL handshake has read 3485 bytes and written 456 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: 0B22EB3DDF1E0693E4A6152CEF26206572185112A7C9353397BFADAB5CB552E0 Session-ID-ctx: Master-Key: 29348D1D2EC0819321B1B98C910EB9737BEF54699998ACD2BCB5687D22ED320F42E086D2B263A7DB82661C56AE7A6235 Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1476177537 Timeout : 300 (sec) Verify return code: 0 (ok) --- 250 DSN EHLO bits.example.com 250-example.com 250-PIPELINING 250-SIZE 51200000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN MAIL FROM:monit@example.com 250 2.1.0 Ok rcpt to:myuser@example.com 250 2.1.5 Ok DATA 354 End data with <CR><LF>.<CR><LF> Subject: Test mail This is a test. . 250 2.0.0 Ok: queued as 50C965FAE9 QUIT DONE
就像你看到它工作正常。所以現在我的知識已經結束了:(為什麼不能再使用我自己的電子郵件伺服器監控發送電子郵件了。有人知道問題出在哪裡嗎?如果我需要提供更多資訊,隨意問!:)
提前致謝!
將 monit 從 5.6(Ubuntu 14.04 apt 源附帶)升級到 5.20(最新版本,手動升級)後,發送郵件再次沒有任何問題。到目前為止配置沒有改變,所以這看起來真的像舊版本的 monit 中的一個錯誤。
在帶有 Monit 5.26.0 的 Ubuntu 20.04 LTS 上,我試圖讓 Monit 使用 Mailgun 發送郵件,它不工作的原因
tlsv1
應該是tls
. 根據此 wiki 頁面,monit 5.17 或更高版本應tls
與 Gmail 或類似的電子郵件提供商一起使用。