Postfix

Postfix 發送錯誤:必鬚髮出 STARTTLS 命令

  • November 24, 2012

執行 Ubuntu 12.04 並嘗試將 postfix 配置為通過 GMAIL 中繼發送和接收。我遇到了連接問題,尤其是 TLS。嘗試了一堆故障排除解決方案,並更改了我的 main.cf 以解決 TLS,但仍然收到以下錯誤。

嘗試調試連接問題:

     `root@mailservice:/etc/postfix# openssl s_client -connect localhost:587 -starttls smtp`

我收到了這些錯誤

   `connect: Connection refused'
    'connect:errno=111`

在我的日誌中我看到:

      Jun 11 13:54:31 mailservice postfix/smtp[3765]: warning: cannot get RSA certificate
      from file /etc/postfix/cert.pem: disabling TLS support

      Jun 11 13:54:31 mailservice postfix/smtp[3765]: warning: TLS library problem: 
      3765:error:0906D06C:PEM routines:PEM_read_bio:no start    
      line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE:

      Jun 11 13:54:31 mailservice postfix/smtp[3765]: warning: TLS library problem:   
      3765:error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM    
      lib:ssl_rsa.c:729:

      Jun 11 13:54:31 mailservice postfix/smtp[3765]: 9986B6846A: to=
      <mary.cutrali@gmail.com>, relay=smtp.gmail.com[173.194.77.109]:587, delay=0.15, 
      delays=0.02/0.02/0.09/0.02, dsn=5.7.0, status=bounced (host 
      smtp.gmail.com[173.194.77.109] said: 530 5.7.0 Must issue a STARTTLS command first.  
      hd9sm12170509obc.6 (in reply to MAIL FROM command))

我的 main.cf 的內容(與 TLS 有關)如下所示:

    #TLS Parameters 
    smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
    smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
    smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
    smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

    #TLS Settings 
    smtp_use_tls = yes 
    smtp_tls_security_level = may 
    smtp_tls_loglevel = 1
    smtp_enforce_tls = yes 
    smtp_tls_CAfile = /etc/postfix/cacert.pem
    smtp_tls_cert_file = /etc/postfix/cert.pem 
    smtp_tls_key_file = $smtp_tls_cert_file 
    smtp_tls_session_cache_dataabase = btree:/var/run/smtp_tls_session_cache 
    smtp_tls_note_starttls_offer = yes 
    smtpd_use_tls = yes 
    smtpd_tls_security)level = may 
    smtpd_tls_auth_only = no 
    smtpd_tls_CAfile = /etc/postfix/cacert.pem
    smtpd_tls_cert_file = /etc/postfix/cert.pem
    smtpd_tls_key_file = /etc/postfix/key.pem
    smtpd_tls_received_header = yes 
    smtpd_tls_session_cache_database = btree:/var/run/smtpd_tls_session_cache 
    smtpd_tls_session_cache_timeout = 3600s 
    tls_random_source = dev:/dev/urandom

據我所知,一切都是為了建立正確的 TLS 連接,我不確定在 main.cf 或其他地方需要更改哪些內容才能發送郵件。

Postix 說它無法訪問證書。它們不是以過於嚴格的權限創建或儲存的。

您需要檢查後綴受限使用者是否可以訪問所有文件。您可以檢查哪個使用者後綴執行:

postconf mail_owner

之後,您應該授予該使用者訪問配置文件中提到的所有密鑰/證書的權限。

例如我的鑰匙看起來像:

-r--r-----  1 postfix  cyrus   668  4 Apr 13:17 somehost.pk

來自: http ://www.postfix.org/TLS_README.html …

伺服器端 TLS 活動日誌記錄…

僅在出現問題時使用日誌級別 3。

更多的…

要獲取有關 Postfix SMTP 伺服器 TLS 活動的更多資訊,您可以將日誌級別從 0..4 提高。每個日誌記錄級別還包括以較低日誌記錄級別記錄的資訊。

級別 Postfix 2.9 和更高版本 早期版本。

  • 0 僅記錄 TLS 握手完成的摘要消息 — 如果不需要客戶端證書驗證,則不記錄客戶端證書信任鏈驗證錯誤。禁用 TLS 活動的日誌記錄。
  • 1 同時記錄信任鏈驗證錯誤和對等證書摘要資訊。同時記錄 TLS 握手和證書資訊。
  • 2 還在 TLS 協商期間記錄級別。
  • 3 同時記錄 TLS 協商過程的十六進制和 ASCII 轉儲。
  • 4 還記錄 STARTTLS 後完整傳輸的十六進制和 ASCII 轉儲。

僅在出現問題時使用日誌級別 3。強烈建議不要使用日誌級別 4。

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