更新:我试图在数据库中以纯文本格式插入密码。 这是有效的,我现在也可以发送邮件。 我试着再次设置整个事情(使用提到的指南),但结果相同。 有任何想法吗?
原始问题:只需按照本教程设置Postfix / Courier包。 我以前用过这个教程,但是这一次我在发送电子邮件时遇到了问题。 我的主要问题是,我不知道在哪里寻找导致这个错误的线索。 Mail.log只给了我以下几行,
Apr 21 17:38:50 gordon postfix/smtpd[5059]: connect from xxx.xx-xxx-xx.my.isp.carrier[xx.xxx.xx.xxx] Apr 21 17:38:51 gordon imapd: LOGIN, [email protected], ip=[::ffff:xx.xxx.xx.xxx], port=[57701], protocol=IMAP Apr 21 17:38:51 gordon postfix/smtpd[5059]: warning: xxx.xx-xxx-xx.my.isp.carrier[xx.xxx.xx.xxx]: SASL LOGIN authentication failed: authentication failure
当search出现“身份validation失败”是一个非常通用的错误信息,可能是由一些不同的错误引起的 – 这使得像我这样的新手find问题更加困难。
系统
在上面的教程中 ,作者使用了CRYPT哈希algorithm。 这个事实可以在SQL查询中查看:
INSERT INTO `user` (`email`, `password`, `name`) VALUES ("[email protected]", ENCRYPT("adminpassword"), "Administrator");
Saslauthd使用pam-mysql来authentication用户,所以我们需要configurationpam-mysql使用相同的散列algorithm。 configuration文件在/etc/pam.d/smtp定义
auth required pam_mysql.so user=mail passwd=mailpassword host=127.0.0.1 db=mail table=user usercolumn=email passwdcolumn=password crypt=1 account sufficient pam_mysql.so user=mail passwd=mailpassword host=127.0.0.1 db=mail table=user usercolumn=email passwdcolumn=password crypt=1
重要的参数是crypt因为它指定了encryption用户密码的方法
- 0(或“普通”)=不encryption。 以明文forms存储的密码。 高度失望。
- 1(或“Y”)=使用crypt(3)function
- 2(或“mysql”)=使用MySQL PASSWORD()函数。 pam-mysql使用的encryption函数可能与MySQL服务器的encryption函数不同,因为pam-mysql使用MySQL的C-client API中定义的函数,而不是在查询中使用PASSWORD()SQL函数。
- 3(或“md5”)=使用MySQL MD5()函数
因此,如果您需要使用encryption的密码进行身份validation,请将crypt参数设置为与您的原始查询匹配。
另一个重要的参数是verbose 。 你可以将它设置为1,这样你就可以知道pam-mysql在做什么了。
更多信息: PAM-MySQL软件包README readme.php