Postfix SMTP 身份验证不适用于虚拟邮箱 + SASL + Courier 用户数据库

Postfix SMTP 身份验证不适用于虚拟邮箱 + SASL + Courier 用户数据库

因此,我阅读了各种教程和操作方法,但仍然无法弄清楚如何让 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针对本地主机 IMAP 服务器(读取用户数据库凭证)进行身份验证。

我已更新/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尝试发送电子邮件时请留意。希望您一切顺利!

答案1

这实际上更像是 sasl 问题而不是 Postfix 问题。您已设置好 postfix 以与 sasl 通信 - 到目前为止一切顺利。现在您需要告诉 saslauthd 在哪里找到您的用户名和密码。如果您不给它任何参数,它将默认将它们视为本地用户,这就是您在 auth.log 中看到的内容。

据我所知(就 SASL 而言可能还不算太远),它不会使用与 pop3 虚拟用户相同的数据库。但 saslauthd 有一个选项可以尝试使用相同的凭据登录 IMAP 服务器 - 我认为这应该可以满足您的要求。

为此,您可以像这样启动 saslauthd:

saslauthd -a rimap -O myimap.server.com

您应该能够使用 sasl 安装附带的 testsaslauthd 程序来测试身份验证。祝您好运!

相关内容