CentOS 6 上的 sendmail 和 sasl 身份验证

CentOS 6 上的 sendmail 和 sasl 身份验证

我正在将邮件服务器从一个 CentOS 6 移到另一个。我使用带有 sasl pam 身份验证的 sendmail。当我尝试发送邮件时,它失败了,因为用户未经过身份验证,并且邮件客户端不需要密码。新旧服务器上的所有配置文件都相同。我使用 telnet(新服务器)对此进行了测试:

# 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

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

以下是 sendmail 配置的部分内容:

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

我使用此命令测试了 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 不提供身份验证的原因是什么?

更新

sendmail 不需要身份验证的主要原因是我没有安装这个数据包:cyrus-sasl-plain

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

更多配置:# 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

答案1

您的 sendmail.mc 看起来不错。除了停止并重新启动 sendmail(我猜您已经这样做了)。我会查看实际的配置文件,该文件名为 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 文件。

答案2

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

相关内容