Postfix(MySQL):encryption密码不起作用

更新:我试图在数据库中以纯文本格式插入密码。 这是有效的,我现在也可以发送邮件。 我试着再次设置整个事情(使用提到的指南),但结果相同。 有任何想法吗?

原始问题:只需按照本教程设置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问题更加困难。

系统

  • Ubuntu 12.04
  • 后缀
  • 信使
  • SASL与SSL和TLS
  • SpamAssassin的
  • ClamAV的
  • AMaViS对

在上面的教程中 ,作者使用了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