最一段日子工作得很不开心,原因多多,回想当年自己学linux的时候真是无限的感慨。那个时候我是多么的认真、多么的努力啊,我的努力也得到认可,可现在呢?打开过去的笔记真的,全是眼泪啊。最近很想写blog,主要是因为我已经不做linux很多年了,今天把笔记拿出来,在温习一下,并记录在blog上,慰记一下自己。
当年使用的系统是redhat 8 ,目的是搭建成公司的Linux邮件服务器,能够使用web方式和outlook分别收发邮件,并做身份验证。
我看过很多文章,都说通过编译源代码安装,配置sendmail.mc文件,不过我觉得这样做比较麻烦,好像容易出错,我从没有试验过,我都是直接修改 /etc/mail/sendmail.cf文件来配置sendmail的,只是在做身份验证的时候才使用sendmail.mc文件的,不过这不影响最终效果。
假设邮件的域名为abc.com,邮件的MX记录主机为 mail.abc.com
首先备份sendmail.cf文件。
使用vi 编辑sendmail.cf文件。
1.修改 Cwlocalhost localdomain一行为
Cwlocalhost abc.com mail.abc.com
2.修改 O DaemonPortOption=Port=smtp,Addr=127.0.0.1,Name=MTA这行,将127.0.0.1 改为本机的IP或0.0.0.0都可以。
3.需要安装光盘上的imap文件,这个文件的用处是充当pop服务器。
4.修改access文件,这个文件记录着在没有身份验证的情况下,那些网段的用户可以使用这台邮件服务器发信。
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
abc.com RELAY
mail.abc.com RELAY
10.0.0 RELAY
这样就允许了10.0.0网段的用户通过该邮件服务器发送邮件了。
不要忘了,修改access文件后不能马上生效,要使用命令将其写入数据,如下
makemap hash /etc/mail/access.db < /etc/mail/access
5.在local-hosts-name 文件中加入abc.com 和mail.abc.com两行。
这样最简单的邮件系统sendmail就可以使用了。
6.关于身份验证部分如下,参考了CU中peng的精华帖子。
修改sendmail.mc文件。
1、2是去掉注解的,是打开相应的认证机制,主要是为了支持outlook
3、4是添加的,设置相应的mta and msa的所用端口。
5、6要注掉。
1、TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
2、define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
3、DAEMON_OPTIONS(`Port=25,Name=MTA')dnl
4、DAEMON_OPTIONS(`Port=587,Name=MSA,M=Ea')dnl
5、dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
6、dnl FEATURE(`accept_unresolvable_domains')dnl
最后保存。
二、编译sendmail.mc 生成sendmail.cf文件
# m4 /etc/mail/sendmail.mc >; /etc/sendmail.cf
#/etc/rc.d/init.d/sendmail restart --重起sendmail服务。
三、检测编译结果。
1、检测SASL被编译到sendmail中。
#/usr/sbin/sendmail -d0.1 -bv root |grep SASL
输出类似如下:
NETUNIX NEWDB NIS PIPELINING SASL SCANF STARTTLS TCPWRAPPERS
保证你看到SASL就是正确的。
2、检测25端口:
# telnet localhost 25
Trying 127.0.0.1.....
Connected to localhost (127.0.0.1).
Escape character is '^]'.
220 webmail.readchina.com ESMTP SENDMAIL 8.12.5/8.12.5;THU,13 FEB 2003.19:12:59 +0800
EHLO localhost
250-webmail.readchina.com hello localhost [127.0.0.1],pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH GSSAPI LOGIN PLAIN
250-DELIVERBY
250-HELP
出现 AUTH GSSAPI LOGIN PLAIN 就说明成功了。