SMTPvalidation失败+ PAM-MySQL无法validation

我正在使用Postfix构build邮件服务器,并使用Postfixadmin设置validation以检查数据库设置。

我可以通过Courier IMAP进行身份validation,因为它可以正确validation哈希密码,但我怀疑我的SASL + PAM-MySQL SMTPvalidation机制不能。

我在/var/log/mail.log得到这些错误:

 pam_unix(smtp:auth): check pass; user unknown Aug 22 03:23:08 omitted saslauthd[26402]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= Aug 22 03:23:10 omitted saslauthd[26402]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure Aug 22 03:23:10 omitted saslauthd[26402]: do_auth : auth failure: [[email protected]] [service=smtp] [realm=domain.com] [mech=pam] [reason=PAM auth error] 

这里是/etc/pam.d/smtp的内容:

 auth required pam_mysql.so user=postfixadmin passwd=omitted host=127.0.0.1 db=postfixadmin table=mailbox usercolumn=username passwdcolumn=password crypt=2 account sufficient pam_mysql.so user=postfixadmin passwd=omitted host=127.0.0.1 db=postfixadmin table=mailbox usercolumn=username passwdcolumn=password crypt=2 

以下是/etc/postfixadmin/config.inc.php密码encryption的相关代码片段:

 // Encrypt // In what way do you want the passwords to be crypted? // md5crypt = internal postfix admin md5 // md5 = md5 sum of the password // system = whatever you have set as your PHP system default // cleartext = clear text passwords (ouch!) // mysql_encrypt = useful for PAM integration // authlib = support for courier-authlib style passwords // dovecot:CRYPT-METHOD = use dovecotpw -s 'CRYPT-METHOD'. Example: dovecot:CRAM-MD5 $CONF['encrypt'] = 'mysql_encrypt'; 

这里是我的/etc/postfix/sasl/smtp.conf的内容:

 pwcheck_method: saslauthd mech_list: plain login log_level: 7 allow_plaintext: true auxprop_plugin: sql sql_engine: mysql sql_hostnames: 127.0.0.1 sql_user: postfixadmin sql_passwd: omitted sql_database: postfixadmin sql_select: select password from mailbox where username='%u@%r' 

我尝试使用MD5哈希但Courier会失败。 所以那个窗口…

我和你的configuration完全一样(Postfix +使用saslauthd + PAM的Cyrus SASL),而且我花了数小时来configuration它。 但知道它完美的作品。

在我的情况下,我在/etc/pam.d/smtp具有与您相同的设置,但不在/etc/postfix/sasl/smtp.conf

看来你正在使用SQL Cyrus插件( auxprop_plugin:sql )与saslauthd和PAM mysql。

Postfix的文档说,如果你想存储encryption的密码(这似乎是因为你在PAMconfiguration中设置“crypt = 2”),那么你不能使用赛勒斯SASL插件。

您只能尝试使用PAM。 为此,您只需要在/etc/postfix/sasl/smtp.conf以下操作

 pwcheck_method: saslauthd mech_list: login plain log_level: 4 

在这个文件中你不需要任何数据库/密码configuration,因为PAM已经知道了一切!

还检查/etc/default/saslautd ,我有以下内容:

 START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="pam" MECH_OPTIONS="" THREADS=1 OPTIONS="-c -r -m /var/spool/postfix/var/run/saslauthd" 

检查您select了MECHANISMSvariables中的pam ,并检查OPTIONSvariables中的标志。 通常, THREADSvariables中应该有1个以上。 你可以让它像这样。 你不需要像我一样设置“1”。

编辑 :我似乎回答了一个非常古老的问题! 这并不重要,这将被Google引用,并且可能对任何使用PAM设置SASL的人有用。