Email-Server

monit Sendmail:無法切換到 SSL

  • February 24, 2021

我設置了 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 或類似的電子郵件提供商一起使用。

引用自:https://serverfault.com/questions/808323