多年来,我一直在 Gentoo 上使用 postfix/sasl/courrier-auth。我刚刚迁移到 Debian 10 postfix/dovecot。我无法让它工作:发送邮件正常,TLS 正常。但无法进行身份验证(SMTP 587,IMAP 993)。我不熟悉 dovecot,我无法弄清楚我错过了什么,因为我在日志中没有找到任何东西(auth.log 中没有任何东西,所以可能与 pam 有关?),而且我找不到任何工具来简单地测试身份验证。
以下是我更新的配置文件:master.cf:
submission inet n - y - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_login_maps=hash:/etc/postfix/virtual
-o smtpd_sender_restrictions=reject_sender_login_mismatch
-o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
...
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
主配置文件:
smtpd_use_tls=yes
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
(连接mysql数据库成功)
dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=***** user=****** password=******
password_query = SELECT username,domain,password FROM mailbox WHERE username='%u';
user_query = SELECT ('5000') as 'uid',('5000') as 'gid'
10-主服务器.conf
service auth {
...
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
...
}
auth-sql.conf.扩展名
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
该命令openssl s_client -connect 127.0.0.1:587 -starttls smtp
有效。我还可以在端口 587 上使用 telnet 并启动 TLS 会话。但是,imap 和 smtp 返回身份验证错误。从邮件客户端和 telnet 会话中尝试使用 base64 编码用户/密码。提前感谢任何线索。
答案1
好的,这就是我在 dovecot.conf 中遗漏的内容:
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
在启用 devcot 调试后,我在同一个配置文件中发现了它:
auth_verbose = yes
auth_debug = yes
并测试身份验证:
/usr/bin/doveadm auth login <user> <password>