我正在尝试在新的 Ubuntu 16.04 机器上设置邮件服务器,但无法使其正常工作。
我正在使用带有 MySQL 的 Postfix/Courier 设置进行身份验证。
使用任何电子邮件客户端(使用 POP3 和 IMAP)接收和阅读电子邮件均按预期工作,但是当我尝试发送某些内容时,我得到的只是身份验证错误,并且这些错误出现在日志中:
saslauthd[29975]: PAM unable to dlopen(pam_mysql.so): /lib/security/pam_mysql.so: undefined symbol: make_scrambled_password
saslauthd[29975]: PAM adding faulty module: pam_mysql.so
saslauthd[29975]: DEBUG: auth_pam: pam_authenticate failed: Module is unknown
saslauthd[29975]: do_auth : auth failure: [[email protected]] [service=smtp] [realm=testubuntu1604.com] [mech=pam] [reason=PAM auth error]
这在 Ubuntu 14.04 中曾经运行良好。
我应该了解 Ubuntu 16.04 中与 PAM 身份验证相关的任何变化吗?
答案1
使用 Courier 的 authdaemon 是可行的,但需要执行以下操作才能使 courier authdaemon 在 Postfix 的 chroot 中可用:
sudo service courier-authdaemon stop
sudo rm -rf /var/run/courier/authdaemon/ /var/spool/postfix/var/run/courier/authdaemon/
sudo mkdir -p /var/spool/postfix/var/run/courier/authdaemon/
sudo ln -s /var/spool/postfix/var/run/courier/authdaemon/ /var/run/courier/authdaemon
sudo service courier-authdaemon start
然后只需在 /etc/postfix/sasl/smtpd.conf 中包含以下内容
pwcheck_method: authdaemond
authdaemond_path: /var/run/courier/authdaemon/socket
mech_list: plain login
log_level: 9
来源:https://www.hostsom.com/postfix-mysql-courier-imap-ubuntu-16-04-part3/
来源:http://wiki.tolien.co.uk/Postfix_w/o_Maildrop#Courier-Authdaemon
(将其作为新解决方案发布而不是对现有解决方案的评论,因为我还没有评论的声誉,并且现有解决方案缺少一个重要步骤)
答案2
打开并将这些行添加到sudo vim /etc/default/saslauthd
文件中,
MECHANISMS="rimap"
MECH_OPTIONS="127.0.0.1"
答案3
据我所知,pam_mysql 已不再开发,其中的这一特定功能几年前就被弃用了,新的更新终于“破坏”了它。到目前为止,我还没有找到其他解决方案,除了将身份验证从 mysql 中迁移出来,但对我来说这真的不是一个选择,所以我仍在寻找解决方案。
更新:我刚刚发现这个页面,但我还没有测试过: http://osdir.com/ml/ubuntu-bugs/2016-04/msg23005.html
答案4
如果你使用 courier IMAP,也可以使用它的 authdaemon 进行身份验证,如下所示https://www.hostsom.com/postfix-mysql-courier-imap-ubuntu-16-04-part3/