在CentOS 6上的sendmail&sasl auth

我将一个邮件服务器从一个CentOS 6移到另一个。 我用sasl pamauthentication使用sendmail。 当我尝试发送邮件时失败,因为用户没有通过身份validation,邮件客户端不需要密码。 新老服务器上的所有configuration文件都是相同的。 我用telnet(新服务器)testing了这个:

# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 new.mldb.org ESMTP Sendmail 8.14.4/8.14.4; Wed, 4 Feb 2015 14:05:18 +0100 ehlo localhost 250-new.mldb.org Hello localhost.localdomain [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-STARTTLS 250-DELIVERBY 250 HELP 

旧服务器:

 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mldb.org ESMTP Sendmail 8.14.4/8.14.4; Wed, 4 Feb 2015 16:07:23 +0200 ehlo localhost 250-mldb.org Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH LOGIN PLAIN 250-STARTTLS 250-DELIVERBY 250 HELP 

新行服务器上缺less此行250-AUTH LOGIN PLAIN。

这里是sendmailconfiguration的一部分:

 define(`confAUTH_OPTIONS', `A')dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl 

我使用这个命令testing了sasl

 # testsaslauthd -s smtp -u <user> -p <password> 0: OK "Success." 

其他文件,我已经检查:

 # cat /etc/sasl2/Sendmail.conf pwcheck_method:saslauthd saslauthd_path:/var/run/saslauthd mech_list: LOGIN PLAIN # cat /etc/pam.d/smtp #%PAM-1.0 auth include password-auth account include password-auth # cat /etc/sysconfig/saslauthd SOCKETDIR=/var/run/saslauthd MECH=pam FLAGS= 

当我尝试发送邮件时,我在日志中得到这个:

 # tail /var/log/maillog Feb 4 15:17:38 new sendmail[12070]: STARTTLS=server, relay=*******.spectrumnet.bg [****], version=TLSv1/SSLv3, verify=NO, cipher=DHE-RSA-AES256-SHA, bits=256/256 Feb 4 15:17:38 new sendmail[12070]: t14EHba9012070: ruleset=check_rcpt, arg1=<****@mail.bg>, relay=*****.spectrumnet.bg [**********], reject=550 5.7.1 <****@mail.bg>... Relaying denied. Proper authentication required. Feb 4 15:17:40 new sendmail[12070]: t14EHba9012070: from=<*****@*****.eu>, size=422, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=*******.spectrumnet.bg [******] 

在我更改了/ etc / mail之后,我运行“make”

sendmail不应该提供auth的原因是什么?

UPDATE

sendmail不需要auth的主要原因是我没有安装这个包:cyrus-sasl-plain

我安装它,现在邮件客户端要求input密码,但密码总是失败。

更多来自configuration:#grep TrustAuthMech sendmail.cf C {TrustAuthMech} EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN R $ * $ | $ = {TrustAuthMech} $#RELAY#grep AuthMechanisms sendmail.cf O AuthMechanisms = EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN

你的sendmail.mc看起来没问题。 除了停止和再次启动sendmail(我猜你已经完成了)。 我会看看实际的configuration文件,这将被称为sendmail.cf。

确保你看到的线:

 C{TrustAuthMech}DIGEST-MD5 CRAM-MD5 LOGIN PLAIN 

 # list of authentication mechanisms O AuthMechanisms=DIGEST-MD5 CRAM-MD5 LOGIN PLAIN 

如果LOGIN PLAIN不存在,那么你的“make”不会从.mc文件生成.cf文件。

那么它接缝,唯一的问题是,我没有在新的服务器上安装cyrus-sasl-plain软件包。 重新启动所有服务(saslauthd和sendmail)后,邮件客户端发送和身份validation工作正常。