我似乎无法启动 dovecot。我的日志一直显示以下内容:
connect from localhost[127.0.0.1]
Mar 1 17:15:01 mac postfix/smtpd[32526]: warning: SASL: Connect to private/auth-client failed: No such file or directory
Mar 1 17:15:01 mac postfix/smtpd[32526]: fatal: no SASL authentication mechanisms
Mar 1 17:15:02 mac postfix/master[21369]: warning: process /usr/lib/postfix/smtpd pid 32526 exit status 1
Mar 1 17:15:02 mac postfix/master[21369]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Mar 1 17:15:03 mac postfix/smtpd[32546]: connect from localhost[127.0.0.1]
Mar 1 17:15:03 mac postfix/smtpd[32546]: warning: SASL: Connect to private/auth-client failed: No such file or directory
Mar 1 17:15:03 mac postfix/smtpd[32546]: fatal: no SASL authentication mechanisms
Mar 1 17:15:04 mac postfix/master[21369]: warning: process /usr/lib/postfix/smtpd pid 32546 exit status 1
Mar 1 17:15:04 mac postfix/master[21369]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
我的 /etc/postfix/main.cf 有:
home_mailbox = Maildir/
mailbox_command =
inet_protocols = ipv4
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth-client
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
谷歌搜索后我发现我需要添加一个客户端块,例如:
client {
path = /var/spool/postfix/auth/dovecot
mode = 0660
user = postfix
group = mail
}
但是似乎自从我找到所有示例以来,dovecot 都发生了变化,所以我不知道把它放在哪里。我使用的是 Dovecot 2.0.13
有什么办法可以解决这个问题吗?谢谢!
答案1
我到处找了找,什么也没找到。我使用的是 Dovecot 2.0.19。
最终通过编辑 /etc/dovecot/conf.d/10-master.conf 并设置以下内容找到了修复方法:
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth_client {
mode = 0666
user = postfix
}
然后重启 dovecot ('service restart dovecot')
如果您没有文件 /etc/dovecot/conf.d/10-master.conf,请尝试 grepping /etc/dovecot 来查找其可能被配置的位置:
cd /etc/dovecot
grep -ri postfix *
并查找声明 /var/spool/postfix 中某处路径的文件,并根据需要进行调整。在我的 dovecot 配置中,unix_listener 被注释掉,并指向错误的文件 (/var/spool/postfix/private/auth)。
答案2
当然,您需要在 Dovecot 和 Postfix 中匹配套接字的路径名,否则您将收到“没有这样的文件或目录”错误,原因很明显,您正在连接到一个不存在的套接字。
选择其中一个路径名,并在 Dovecot 和 Postfix 中以相同的方式配置它。例如,让您的 Dovecot 配置与 Postfix 的预期相匹配:
auth default {
...
socket listen {
...
client {
path = /var/spool/postfix/private/auth-client
mode = 0660
user = postfix
group = mail
}
...
}
...
}
答案3
您必须将 auth-client 更改为 dovecot-auth,因为 是新套接字身份验证的名称。位于 中/var/spool/postfix/private/
。因此请输入/var/spool/postfix/private/dovecot-auth
而不是/var/spool/postfix/private/auth-client
。
我遇到了同样的问题并已解决。