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

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

更新:我尝试在数据库中以纯文本形式插入密码。这有效,我现在也可以发送邮件了。我尝试再次设置整个过程(使用提到的指南),但结果相同。有什么想法吗?

原始问题:只需按照以下步骤设置 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

搜索时发现“身份验证失败”是一个非常通用的错误消息,可能由许多不同的错误引起 - 这使得像我这样的新手更难以找到问题所在。

系统

  • Ubuntu 12.04
  • 后缀
  • 导游
  • 带有 SSL 和 TLS 的 SASL
  • 垃圾邮件杀手
  • ClamAV
  • 阿马维斯

答案1

在里面上面有教程链接,作者使用了 CRYPT 哈希算法。这个事实可以在 SQL 查询中看到:

INSERT INTO `user` (`email`, `password`, `name`) VALUES ("[email protected]", ENCRYPT("adminpassword"), "Administrator");

Saslauthd 使用 pam-mysql 来验证用户身份,因此我们需要配置 pam-mysql 以使用相同的哈希算法。配置文件定义在/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因为它指定了加密用户密码的方法

  • 0(或“纯文本”)= 不加密。密码以纯文本形式存储。强烈不建议这么做。
  • 1(或“Y”)= 使用 crypt(3) 函数
  • 2(或“mysql”)= 使用 MySQL PASSWORD() 函数。pam-mysql 使用的加密函数可能与 MySQL 服务器的加密函数不同,因为 pam-mysql 使用 MySQL 的 C 客户端 API 中定义的函数,而不是在查询中使用 PASSWORD() SQL 函数。
  • 3(或“md5”)= 使用 MySQL MD5() 函数

因此,如果您需要使用加密密码进行身份验证,请设置crypt参数以使其与您的原始查询相匹配。


另一个重要参数是verbose。您可以将其设置为 1,这样您就可以知道 pam-mysql 正在做什么。

更多信息:PAM-MySQL 包自述文件 readme.php

相关内容