Sendmail的SMTP认证一直是个问题,我们来试验一下最简单的方法。
一、检查所需的包是否已经安装好
要使用SMTP认证,需要安装sendmail和cyrus-sasl,如果你在使用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)。
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把里面的127.0.0.1改成0.0.0.0,这是让sendmail监听在全部网络端口上,而不是只监听在lo上,有很多 人抱怨sendmail没办法收信,这是最基本要修改的地方
好了,都改完了,我们存盘退出。
4.把mc文件编译成sendmail的配置,运行m4 sendmail.mc > sendmail.cf;
5./etc/init.d/sendmail restart(重新启动sendmail)
大功告成,重新测试OUTLOOK吧。注意在OUTLOOK里“邮件发送服务器”选中"我的服务器要求身份验证“,设置里只要选择”使用与邮件接受服务器相同的设置“即可。否则的话出现邮件服务发送的错误。
呵呵,如果有问题可以写信到我的信箱peterdog@peterdog.com或QQ:1547474来跟我交流。
还 有,要防止本地用户利用 Sendmail 服务器上的漏洞,最好是让邮件用户只使用电子邮件程序来访问 Sendmail 服务器。邮件服务器上的 Shell 帐号不应该被允许,/etc/passwd 文件中的所有用户 shell 都应该被设置为 /sbin/nologin,在添加系统用户时可以useradd -s /sbin/nologin 用户名,这样添加的用户名就没有了shell,只能收发信而不能登陆到服务器运行其他程序,安全一点。
FAQ:
1.怎么收发信啊?
&^%@#$%,我晕,useradd 用户名啊,需要这样添加了系统用户才可以收发信
2.为什么没有设定foxmail中的smtp服务器需要验证,也可以发送E-mail?
嘿嘿,要用OUTLOOK来测试,Foxmail似乎可以自动地进行smtp认证,我也发现这个问题。OUTLOOK在smtp服务器验证失败后,有拒绝提示