零. 环境简介
Centos 5.7 x64
sendmail-8.13.8-8.1.el5_7
由于测试环境经常需要发送一些邮件,而搭建Exchange实在是大材小用且臃肿不堪,故考虑直接采用CentOS自带的sendmail来实现smtp。
一. 安装流程
1. 安装sendmail及其依赖包
yum install -y sendmail*
2. 为smtp添加别名,此别名即为该邮件服务器的后缀
vi /etc/mail/local-host-names
我这里添加了test.com
3. 开启sendmail的监听范围为internet
vi /etc/mail/sendmail.mc
将 DAEMON_OPTIONS(‘Port=smtp,Addr=127.0.0.1,Name=MTA’)dnl
中的127.0.0.1改为0.0.0.0,这样该smtp server可以让任何人都可以访问。
!注意!这样是很不安全的,非测试环境请慎重!
4. 配置sendmail使之支持smtp认证
vi /etc/mail/sendmail.mc
还是这个文件,将 TRUST_AUTH_MECH 行及下面 define 行开头的 dnl去掉。
这个dnl标志等同于注释“#”,删除即开启该行功能
5. 编辑访问控制文件
vi /etc/mail/access
如有需求,更改该行的域、IP地址范围限制,以便控制邮件发送的用户。
我们这里只是为了本机发邮件方便,故不予更改。
默认不更改的情况下,从本机发送邮件无需用户名密码之类的身份认证,十分方便。
6. 将access生成数据库供sendmail调用
makemap hash /etc/mail/access.db < /etc/mail/access
7. 生成sendmail.cf,即sendmail的conf
我们在3-4步中编辑的sendmail.mc作为模板文件,使用m4命令生成conf。
m4 sendmail.mc > sendmail.cf
8. 启动sendmail相关服务并设置为开机启动
service sendmail restart
service saslauthd restart
# 验证用
chkconfig sendmail on
chkconfig saslauthd on
9. 检测sendmail服务是否已运行
可以采用两种方式:
a) 检查tcp 25端口
lsof -i:25
b) 检查进程
ps aux | grep sendmail
如果正常列举出sendmail的进程,设置完毕。
二. 对sendmail的smtp服务进行测试
telnet 127.0.0.1 25
Trying 127.0.0.1…
Connected to Mornitor (127.0.0.1).
Escape character is ‘^]’.
220 CentOS ESMTP Sendmail 8.13.8/8.13.8; Thu, 2 Feb 2012
17:08:00 +0800
helo test.com
250 CentOS Hello Mornitor [127.0.0.1], pleased to meet you
ehlo test.com
250-CentOS Hello Mornitor [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
可见smtp已经在跑着了,建议在telnet里直接发封邮件试试。
三. 备注
1. sendmail 初始配置较 postfix 简单,当然这是相对于我们本身就简单的需求而决定的;
2. sendmail 的效率不如 postfix,且扩展性、安全性也不如后者,综合1、2两点,按需求确定架设的服务;