Postfix

Postfix SMTP 身份驗證不適用於虛擬郵箱 + SASL + Courier userdb

  • July 8, 2012

所以我已經閱讀了各種教程和操作方法,我正在努力理解如何讓 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/userdbviauserdb並按照教程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 來測試身份驗證。祝你好運!

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