SMTP身份验证失败PAM-MySQL无法进行身份验证

我正在使用Postfix构建邮件服务器,并设置身份验证以使用Postfixadmin检查数据库设置.

我可以通过Courier IMAP进行身份验证,因为它可以正确地验证哈希密码,但我怀疑我的SASL PAM-MySQL SMTP身份验证机制不能.

我在/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: [user=user@domain.com] [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中用于密码加密的相关代码段:

// 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会失败.那就是窗外……

最佳答案
我有完全相同的配置(Postfix Cyrus SASL使用saslauthd PAM),我也花了几个小时来配置它.但要知道它完美无缺.

就我而言,我在/etc/pam.d/smtp中具有与您相同的设置,但在/etc/postfix/sasl/smtp.conf中没有.

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

Postfix documentation说如果你想存储加密密码(自从你在PAM配置中设置“crypt = 2”以来就是这种情况),那么你就不能使用Cyrus SASL sql插件了.

您可以尝试仅使用PAM.为此,您只需要在/etc/postfix/sasl/smtp.conf中进行操作

pwcheck_method: saslauthd
mech_list: login plain
log_level: 4

您不需要在此文件中配置任何数据库/密码,因为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"

检查您是否在MECHANISMS变量中选择了pam,并检查OPTIONS变量中的标志.通常,THREADS变量中应该有多个1.你可以这样说.你不需要像我一样设置“1”.

编辑:我似乎回答了一个非常古老的问题!
没关系,这将由Google引用,对于使用PAM设置SASL的任何人都可能有用.

转载注明原文:SMTP身份验证失败PAM-MySQL无法进行身份验证 - 代码日志