linux as3.0 sendmail SMTP 验证 成功总结

一、检查所需的包是否已经安装好
要在Quick Linux AS3里使用SMTP认证,需要安装sendmail和cyrus-sasl,这两个包在Quick AS3安装时默认应该都是安装好了的,如果你在使用Redhat或其他的Linux版本,请检查这两个包是否已经装好
二、我们来改一下几个配置文件
1。先来看一下/usr/lib/sasl2/Sendmail.conf文件,里面的内容应该是pwcheck_method:saslauthd,将这个文件复制成smtpd.conf,即cp Sendmail.conf smtpd.conf,这个文件也要在/usr/lib/sasl2/目录下;
2.然后/etc/init.d/saslauthd start来启动sasl的密码认证(要每次开机自动启动这项服务,就运行ntsysv选中saslauthd,再存盘退出ntsysv)。注意:我把这里添加就 OK
3。修改/etc/mail/sendmail.mc文件,有3个地方要改:
第42行和43行,把最前面的dnl删除,变成:
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
第84行DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl注释掉
这是让sendmail监听在全部网络端口上,而不是只监听在本机上,有很多人抱怨sendmail没办法收信,这是最基本要修改的地方,最简单就事注释 掉
DAEMON_OPTIONS(`Port=587, Name=MSA, M=Ea')dnl 改为
DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
根据这样的配置,sendmail只有在587端口才对用户强制进行身份认证,而在smtp服务默认用的端口25(OutlookExpress上默认用的就是25)上则用户认不认证都无所谓,我在OutlookExpress上选择“我的服务器要求身份认证”sendmail就进行认证,若不选该选项, sendmail服务器不加任何认证就会转发任何邮件。这种策略显然是不合理的,安全的策略是只在默认的25端口强制进行身份认证,否则不予转发邮件,在其他端口根本不打开。在这种配置下,邮件服务器仅在收发双方都是本地用户的时候才不强制进行身份认证,其他情况的时候都要进行认证。
注意千万不要写成 这样
DAEMON_OPTIONS(`Port=25, Name=MTA')dnl
DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
两句同时存在 ,这样 25端口不能打开
好了,都改完了,我们存盘退出。
4.把mc文件编译成sendmail的配置,运行m4 sendmail.mc >sendmail.cf;
5./etc/init.d/sendmail restart(重新启动sendmail)
大功告成,重新测试OUTLOOK吧。注意在OUTLOOK里“邮件发送服务器”选中"我的服务器要求身份验证“,设置里只要选择”使用与邮件接受服务器相同的设置“即可。否则的话出现邮件服务发送的错误。
在access文件中不要设置拒绝转发任何邮件,我是将access文件清空在重新生成access.db,让sendmail完全按照sendmail.cf中的配置去做
大部分都像楼主所说的那样,只不过我的telnet localhost 25后虽然出现:

250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
但是认证后总是提示“535 5.7.0 authentication failed”。后来查看日志文件发现提示“May 24 16: 11:42 DGIT01 saslauthd[1546]: do_auth : auth failure: [user=zj ] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]”
于是我在/etc/pam.d/目录下参照其它文件建立一个“smtp”文件(postfix的是smtp.postfix),内容如下:
#%PAM-1.0
auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth
上面几行是什么意思,可以参考PAM 方面的文档,从此认证成功。
还有,要防止本地用户利用 Sendmail 服务器上的漏洞,最好是让邮件用户只使用电子邮件程序来访问 Sendmail 服务器。邮件服务器上的 Shell 帐号不应该被允许,/etc/passwd 文件中的所有用户 shell 都应该被设置为 /sbin/nologin,在添加系统用户时可以useradd -s /sbin/nologin 用户名,这样添加的用户名就没有了shell,只能收发信而不能登陆到服务器运行其他程序,安全一点。

你可能感兴趣的:(sendmail)