用redhat 8.0自带的sendmail+sasl配置需要认证的邮件服务器,以及把sendmail8.12.5升级到sendmail.8.12.9
redhat8默认安装的是sendmail 8.12.5.
系统安装时,选择的是custom,sendmail默认安装。
一、首先,要生成sendmail.cf文件。
一般是编译sendmail.mc来生成sendmail.cf,这样的好处是通过编译,会查看出一些sendmail的设置错误和漏洞。
# cd /etc/mail
# vi sendmail.mc
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')
其中:
1、2是打开注解的,是打开相应的认证机制,主要是为了支持outlook
3、4是添加的,设置相应的mta and msa的所用端口。
5、6要注掉。 5允许通过网络连接Sendmail,6 禁止不可解析的域名relay邮件
最后保存。
二、编译sendmail.mc 生成sendmail.cf文件
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# /etc/rc.d/init.d/sendmail restart --重起sendmail服务。
假如你在执行m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 报错的话,那么检查是否安装sendmail-cf.*.rpm,redhat8.0自带的是
sendmail-cf-8.12.5-7.i386.rpm,在安装盘的第3张,安装方法:# rpm -ivh sendmail-cf-8.12.5-7.i386.rpm
三、检测编译结果
1、检测SASL被编译到sendmail中。
#/usr/sbin/sendmail -d0.1 -bv root |grep SASL
输出类似如下:
NETUNIX NEWDB NIS PIPELINING SASL SCANF STARTTLS TCPWRAPPERS
保证你看到SASL就是正确的。
2、检测25端口:
- [root@fyhtest mail]# telnet localhost 25
- Trying 127.0.0.1...
- Connected to localhost.
- Escape character is '^]'.
- 220 fyhtest.163.net ESMTP Sendmail 8.12.5/8.12.5; Thu, 10 Apr 2003 16:35:42 -0400
- ehlo test
- 250-fyhtest.163.net Hello localhost [127.0.0.1], pleased to meet you
- 250-ENHANCEDSTATUSCODES
- 250-PIPELINING
- 250-8BITMIME
- 250-SIZE
- 250-DSN
- 250-ETRN
- 250-AUTH LOGIN PLAIN
- 250-DELIVERBY
- 250 HELP
只要输出有LOGIN PLAIN就OK!了,不然,就不能relay mail.
到这里,sendmail就配置完了,你可以天天加一个用户试试看。
邮件用户是系统用户.
#useradd test
#passwd test ----设置密码
设置你的foxmail or outlook,要设置上用户需要smtp认证。
把你的域名添加到/etc/mail/local-host-names中.
#p#
四、pop3安装。
- redhat8.0中有它的rpm包,是imap-2001a-15.i386.rpm
- # rpm -ivh imap-2001a-15.i386.rpm
- 修改/etc/xinetd.d/ipop3
- 把其中disable =yes更改为disable =no
- 修改/etc/xinetd.d/imap
- 把其中disable =yes更改为disable =no
- # /etc/rc.d/init.d/xinetd restart --重起pop3服务
- [root@fyhtest xinetd.d]# telnet localhost 110
- Trying 127.0.0.1...
- Connected to localhost.
- Escape character is '^]'.
- +OK POP3 localhost v2001.78rh server ready
- [root@fyhtest xinetd.d]# telnet localhost 143
- Trying 127.0.0.1...
- Connected to localhost.
- Escape character is '^]'.
- * OK [CAPABILITY IMAP4REV1 LOGIN-REFERRALS STARTTLS AUTH=LOGIN] localhost IMAP4rev1 2001.315rh at Thu, 10 Apr 2003 16:41:06
- -0400 (EDT)
有以上显示,为正确。
五、其他设置
要想更好的使用sendmail,常用到的一些设置:
1、限制最大邮件。
vi /etc/sendmail.cf
# maximum message size
O MaxMessageSize=5000000 (注:5M)
2、最大的群发数目。
vi /etc/sendmail.cf
# maximum number of recipients per SMTP envelope
O MaxRecipientsPerMessage=20 (注:20个)
3、域名文件----local-host-name
可以用他来实现虚拟域名或多域名支持。
/etc/mail/local-host-name
test.com
test1.com
4、mail别名文件--aliases。
vi /etc/aliases
系统内部别名:test:fangyh test是我的用户名,其他的是别名,用逗号隔开。
转发到其他的邮箱:test:test@sina.com
# newaliases --写到库中
5、邮件控制文件--access
relay、ok、reject和discard。relay可以实现转发。ok是用来允许用户的任意访问,它会覆盖任何其它已建立的检查(实际设置中,最好别设
这项,除非你对该用户是绝对信任的);reject可以实现对来访地址的拒绝,它根本就不容许该地址与你的邮件服务器进行连接通信;discard
的作用是在接收到传输的邮件消息后,偷偷地把它丢弃掉(在发送者看来,他的邮件的确是接收了,但他并不知道,发送的目的地址根本不可
能接收到他的邮件,服务器巧妙地欺骗了他。
vi /etc/mail/access.
localhost.localdomain RELAY ---允许
localhost RELAY
127.0.0.1 RELAY
peng@sina.com ok
@sexgirl.net reject
211.77.22.45 discard
# makemap hash access < access --写到库中
6、虚拟用户文件---virtusertable.
这个文件可以mail重名问题。
例如:你有两个域名,virt1.com and virt2.com,但是都有test这个用户:
test@virt1.com 和 test@virt2.com,这是两个用户。但对于系统用户来说,他只认系统用户test,只能通过一下改:
- vi /etc/mail/virtusertable
test@virt2.com r010
这样就可以了。在新开一个用户r010,但是test@virt2.com在客户端的pop3 and smtp server的用户名和口令要用r010的。
- # makemap hask virtusertable.db < virtusertable
【编辑推荐】
- Sendmail 配置具体命令详解
- Sendmail 配置的使用说明
- Sendmail防御DOS攻击手册
- sendmail的安装
- sendmail下设定邮箱大小
- Sendmail 配置下载及安装
- Sendmail 配置E-Mail服务器