Postfix dovecot 无法验证

Postfix dovecot 无法验证

多年来,我一直在 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>

相关内容