我最近注意到我的伺服器在 mail.log 上報告了許多針對已知用戶的錯誤身份驗證,而且這不是暴力攻擊。我真的不知道這種身份驗證的原因。我有使用者使用 Gmail 應用程式、IOS 上的郵件、MacOSX 上的郵件應用程式、ThunderBird 和 Outlooks,以及存取此伺服器的網頁郵件服務。在此伺服器中,我有一個自簽名證書,並且還充當郵件智慧主機。本系統為MacOSX 10.9.5。
在所有平台中,Outlook 是唯一一個在連接到該伺服器時出現奇怪行為的平台。不斷地顯示一個煩人的登入彈出窗口,其中包含使用者的憑證,不知從何而來,我的所有 Outlook 用戶都會發生這種情況。用戶可以使用 Outlook 發送和接收,除了登入彈出視窗之外,一切似乎都正常。
從我的 mail.log 中,我遇到了 SAL DIGEST-MD5、SASL PLAIN 和 SASL CRAM-MD5 的問題,例如一些隨機樣本:
Jan 19 11:43:43 remote.x.pt postfix/smtpd[53889]: error: validate response: authentication failed for user=lcg (method=DIGEST-MD5)
Jan 19 11:43:43 remote.x.pt postfix/smtpd[53889]: warning: unknown[192.168.1.72]: SASL DIGEST-MD5 authentication failed
Jan 18 17:10:46 remote.x.pt postfix/smtpd[5838]: error: verify password: authentication failed: [email protected]
Jan 18 17:10:46 remote.x.pt postfix/smtpd[5838]: warning: hq2.pacsis.pt[x]: SASL PLAIN authentication failed
Jan 16 15:13:06 remote.x.pt postfix/smtpd[17510]: error: validate response: authentication failed for user=teste3 (method=CRAM-MD5)
Jan 16 15:13:06 remote.x.pt postfix/smtpd[17510]: warning: remote.x.pt[192.168.1.1]: SASL CRAM-MD5 authentication failed
第一次嘗試來自 Outlook,第二次嘗試來自郵件網路服務,第三次嘗試來自郵件應用程式。
我無法弄清楚是什麼原因造成的,但由於我從幾個不同的軟體用戶端獲得了錯誤的身份驗證,我認為我的後綴或 dovecot 配置中有一些東西。
在這裡您可以檢查這兩個配置:
後綴:http://pastebin.com/EU1iLjAP
鴿舍:http://pastebin.com/N9MfuvkD
正在使用的連接埠:
587 SMTP 啟動
993 IMAP SSL
更新1:
這就是正在發生的事情,在這裡您可以看到,在首先進行了錯誤的身份驗證之後,接下來它就成功進行了身份驗證:
Jan 19 14:33:05 remote.x.pt postfix/smtpd[62409]: error: validate response: authentication failed for user=lcg (method=DIGEST-MD5)
Jan 19 14:33:05 remote.x.pt postfix/smtpd[62409]: warning: unknown[192.168.1.72]: SASL DIGEST-MD5 authentication failed
Jan 19 14:33:05 remote.x.pt postfix/smtpd[62409]: verify password: AUTH PLAIN: authentication succeeded for user=lcg
更新2:
我的伺服器似乎不允許 DIGEST-MD5 和 CRAM-MD5,然後對於某些用戶它會切換到 PLAIN。在本機,我至少可以毫無問題地使用 CRAM-MD5。
答案1
您遇到的問題是 Dovecot 問題而不是 postfix 問題。
所以你可以理解Dovecote Authentication是如何讀取這個的:
你必須明白,如果你的客戶端的密碼以純文字形式保存在資料庫中,那麼你可以使用cram-md5和digest-md5(auth_mechanisms = plain Logincram-md5)摘要-md5)。但如果資料庫中的密碼是加密的;可以說,Dovecote 文件中提到的加密方案如下:
http://wiki2.dovecot.org/Authentication/PasswordSchemes,那麼你就不能使用cram-md5,除非密碼已經用cram-md5哈希保存在資料庫中。這很令人困惑,所以你更好地理解,假設我有一個電子郵件帳戶,所以我登入:
電子郵件用戶端---->密碼--->電子郵件伺服器將檢查資料庫,有3種情況我需要可以看到:
第一個場景資料庫中的密碼以純文字形式儲存:
電子郵件伺服器--(auth_mechanisms =純登入cram-md5摘要-md5)-->您的密碼方案(無)---->資料庫cram-md5(密碼)/或/摘要-md5(密碼)/或/純密碼:因此日誌記錄密碼將與資料庫純文字儲存的密碼相符。第二種情況資料庫中的密碼使用 SHA512-CRYPT 儲存:
電子郵件伺服器-- auth_mechanisms(普通登入)--→電子郵件伺服器--檢查密碼--->default_pass_scheme = SHA512-CRYPT ----SHA512-CRYPT (密碼) ---→資料庫(已經SHA512-CRYPT密碼) – 登入匹配第三種情況資料庫密碼使用carm-md5加密:
電子郵件伺服器---->auth_mechanisms(普通登入cram-md5)--→電子郵件伺服器---檢查密碼---default_pass_scheme =cram-md5-- > cram-md5(密碼)---->資料庫(密碼已儲存在cram-md5密碼中) – 登入匹配
因此,您可以加密或不加密資料庫密碼並使用 SSL/TLS 並使 auth_mechanisms="plain login" 或:
如果您不想使用 SSL,則使 auth_mechanisms=cram-md5 並將密碼作為填塞形式儲存在資料庫中 - md5如果您想使用DIGEST-MD5 和CRAM-MD5,您的密碼必須儲存在PLAIN_TEXT 中。
因此,僅使用 CRAM-MD5,資料庫中的密碼可以是 CRAM-MD5 或純文本,或使用 DIGEST-MD5 和 CRAM-MD5:資料庫中的密碼必須僅以純文字形式儲存。
在下一個連結中,您將找到一些腳本來幫助您加密資料庫中的密碼: http://wiki2.dovecot.org/HowTo/ConvertPasswordSchemes
如果您想將密碼儲存在資料庫中作為 DIGEST-MD5,您必須閱讀此頁面:http://wiki2.dovecot.org/Authentication/Mechanisms/DigestMD5
另外,正如您在我們的聊天中提到的,Dovecote 中使用的 auth_mechanisms 值可以在 postfix 中使用,如 main.cf 中的 smtpd_pw_server_security_options=plain