Postfix SMTP 身份驗證不適用於虛擬郵箱 + SASL + Courier userdb
所以我已經閱讀了各種教程和操作方法,我正在努力理解如何讓 SMTP 身份驗證與 Postfix 中的虛擬郵箱一起工作。我使用這個Ubuntu 教程進行設置。我正在使用 Courier-IMAP 和 POP3 來閱讀郵件,這似乎沒有問題。
但是,用於讀取郵箱的憑據不適用於 SMTP。我可以看到
/var/log/auth.log
正在使用 PAM,這是否需要 UNIX 使用者帳戶才能工作?因為我使用虛擬郵箱來避免創建使用者帳戶。li305-246 saslauthd[22856]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure li305-246 saslauthd[22856]: do_auth : auth failure: [user=fred] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]
/var/log/mail.log
li305-246 postfix/smtpd[27091]: setting up TLS connection from mail-pb0-f43.google.com[209.85.160.43] li305-246 postfix/smtpd[27091]: Anonymous TLS connection established from mail-pb0-f43.google.com[209.85.160.43]: TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits) li305-246 postfix/smtpd[27091]: warning: SASL authentication failure: Password verification failed li305-246 postfix/smtpd[27091]: warning: mail-pb0-f43.google.com[209.85.160.43]: SASL PLAIN authentication failed: authentication failure
我已經按照本教程在 userdb 中創建了帳戶。Postfix 也使用 authuserdb 嗎?
需要哪些調試資訊來幫助診斷我的問題?
main.cf:
# TLS parameters smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt smtpd_tls_key_file = /etc/ssl/private/smtpd.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # SMTP parameters smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtp_tls_security_level = may smtpd_tls_security_level = may smtpd_tls_auth_only = no smtp_tls_note_starttls_offer = yes smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
/etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd mech_list: plain login
/etc/default/saslauthd
START=yes PWDIR="/var/spool/postfix/var/run/saslauthd" PARAMS="-m ${PWDIR}" PIDFILE="${PWDIR}/saslauthd.pid" DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="pam" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
/etc/courier/authdaemonrc
authmodulelist="authuserdb"
authdaemonrc
根據本教程,我只修改了一行並重新啟動了服務。我已將帳戶添加到/etc/courier/userdb
viauserdb
並按照教程userdbpw
執行。makeuserdb
解決了
感謝 Jenny D 建議
rimap
對 localhost IMAP 伺服器(讀取 userdb 憑據)使用身份驗證。我更新
/etc/default/saslauthd
為正確啟動 saslauthd(此頁面很有用)MECHANISMS="rimap" MECH_OPTIONS="localhost" THREADS=0 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
這樣做後,我收到以下錯誤
/var/log/auth.log
:li305-246 saslauthd[28093]: auth_rimap: unexpected response to auth request: * BYE [ALERT] Fatal error: Account's mailbox directory is not owned by the correct uid or gid: li305-246 saslauthd[28093]: do_auth : auth failure: [user=fred] [service=smtp] [realm=] [mech=rimap] [reason=[ALERT] Unexpected response from remote authentication server]
這篇博文詳細介紹了一個解決方案,方法是
IMAP_MAILBOX_SANITY_CHECK=0
在/etc/courier/imapd
.然後重新啟動您的 courier 和 saslauthd 守護程序以使配置更改生效。
sudo /etc/init.d/courier-imap restart sudo /etc/init.d/courier-authdaemon restart sudo /etc/init.d/saslauthd restart
/var/log/auth.log
在嘗試發送電子郵件時觀看。希望你很好!
這實際上更像是一個 sasl 問題而不是 Postfix 問題。您已經設置了與 sasl 對話的後綴 - 到目前為止,一切都很好。現在您需要告訴 saslauthd 在哪裡可以找到您的使用者名和密碼。如果您不給它任何參數,它將預設將它們視為本地使用者,這就是您在 auth.log 中看到的內容。
據我所知(就 SASL 而言,這可能不是很遠),它不使用與 pop3 的虛擬使用者相同的數據庫。但是 saslauthd 有一個選項可以嘗試使用相同的憑據登錄到 IMAP 伺服器 - 我認為這應該可以滿足您的需求。
為此,您可以像這樣啟動 saslauthd:
saslauthd -a rimap -O myimap.server.com
您應該能夠使用您的 sasl 安裝附帶的程序 testsaslauthd 來測試身份驗證。祝你好運!