A、SMTP身份认证 (SMTP AUTH) 

        SMTP身份认证是一种保证SMTP服务器安全的方法,它要求希望通过SMTP服务器转发邮件(即邮件最终发送给另一个SMTP服务器)的用户在发送消息之前必须先向sendmail表明自己的身份。这样垃圾邮件发送者就不能用你的SMTP服务器发送未经授权的邮件了。
       允许垃圾邮件发送者发送未经授权的email的邮件服务器被称为开放中继,所以SMTP AUTH是一种确保你的邮件服务器不是开放中继的机制。
       邮件系统是否允许中继请查看:http://www.5dmail.net/html/2005-8-25/200582502120.htm

B、配置过程:

1、安装 cyrus-sasl, cyrus-sasl-devel, cyrus-sasl-plain, cyrus-sasl-md5 等包。

SMTP认证的sendmail邮件服务器 

       此处我测试中安装了cyrus-imapd包,不装也可以。

   2、启动 saslauthd 服务:

         sendmail调用cyrus-sasl的saslauthd进程对请求邮件系统25端口的用户进行身份鉴权,saslauthd要求对方输入本地系统用户的用户名和密码,saslauthd通过查找系统的/etc/shadow文件,确认用户是否合法,合法登录成功,否则失败。
         启动saslauthd:

 

      或者编辑/etc/sysconfig/saslauthd,修改 MECH=shadow

 

然后执行:service saslauthd start

3、查看是否开启成功:

4、测试认证是否成功,testsaslauthd -u user -p password:

5、编辑sendmail.mc文件,修改以下几行:

 此处容易出问题。
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
DAEMON_OPTIONS(`Port=25, Name=MSA,M=Ea')dnl

两行内容不能同时出现在配置文件中,否则造成端口冲突,sendmail启动后自动停止。日志中报以下错误:

6、使用M4重新生成sendmail.cf:
7、重启sendmail:

8、查看TCP的25号端口是否开启:

9、测试认证是否开启:

尝试mail from:admin@hunt.com的邮件时提示:530 5.7.0 Authentication required,说明认证成功。

OK~