Debian

無法使用郵件客戶端連接到 postfix

  • August 12, 2014

我一直在嘗試在我的伺服器中設置 MX,並且能夠使用 Dovecot 讓 IMAP 部分在 SSL 下工作,但是我無法使用 Dovecot 作為 SASL 身份驗證讓 SMTP 部分工作。

當 Itelnet example.com 587時,ehlo給了我以下資訊:

250-example.com
250-PIPELINING
250-SIZE 30720000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

ehlo 中沒有身份驗證,但是如果我做ehloover openssl s_client -starttls smtp -connect example.com:587,我會得到以下資訊:

250-example.com
250-PIPELINING
250-SIZE 30720000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

而普通登錄,使用 ‘\0username\0password’ 的 base64,返回OK。我認為這裡的問題不是 SASL,因為使用者通過了身份驗證並且問題出在連接中,但我不知道是什麼導致了這樣的問題。由於我的收件人限制不允許非 SASL 身份驗證的使用者通過,預設 telnet 給我一個錯誤。如何將 SASL 添加到預設的非 STARTTLS 連接,以便我可以將它與我的郵件客戶端一起使用?

這是我的 main.cf:

## SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes

## SSL/TLS
smtpd_tls_received_header = yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.cert
smtpd_tls_key_file=/etc/postfix/ssl/smtpd.key
smtpd_tls_ask_ccert = yes
smtpd_use_tls=yes
smtp_use_tls=yes
smtpd_tls_log_level = 2
smtp_tls_note_starttls_offer = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_protocols = SSLv3, TLSv1
tls_random_source = dev:/dev/urandom

message_size_limit = 30720000
smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, 
   reject_invalid_hostname, permit

smtpd_sender_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_sender, 
   reject_unknown_sender_domain, reject_unauth_pipelining, permit

smtpd_recipient_restrictions = reject_unauth_pipelining, 
   permit_mynetworks, reject_non_fqdn_recipient, 
   reject_unknown_recipient_domain, reject_unauth_destination, permit

smtpd_data_restrictions = reject_unauth_pipelining

smtpd_sender_restrictions = reject_unknown_sender_domain

mydestination = localhost, example.com
mynetworks = 127.0.0.0/8
inet_interfaces = all

virtual_transport = lmtp:unix:private/dovecot-lmtp

virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_domain_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
  • 編輯:使上一個問題更具體。*
  • 更新:我安裝了 roundcube 並通過客戶端發送郵件並且它有效,但是,我仍然無法使用外部伺服器進行身份驗證。
  • 更新#2:當我嘗試在埠 587 上通過 SSL 連接到伺服器時,我在日誌文件中發現了這些行
warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
connect from 93.88.82.66
SSL_accept error from 93.88.82.66: lost connection
lost connection after STARTTLS from 93.88.82.66
disconnect from 93.88.82.66
  • 更新#3:在我重新啟動 postfix 和 dovecot 後它工作了(不重新載入)

我知道這並不能真正回答您的問題,但是:

不。

將您的郵件客戶端與 STARTTLS 一起使用,正如您所說,它可以與您的伺服器正常工作。通過未加密的連接發送憑據不是一個好主意。

您根本沒有說明您想要進行未加密的 SMTP 身份驗證的原因,所以我只能猜測 - 如果您有一個無法執行 STARTTLS 的郵件客戶端(或者,TLS 從一開始就連接,即 SMTPS,到埠465),您應該致力於保護客戶端,而不是削弱您的伺服器端。

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