Linux
系列-Red Hat5平台下Sendmail邮件服务搭建
Sendmail
是具有较长历史并不断发展的邮件服务器软件,通过对Sendmail服务器的配置管理,可以实现基本的邮件发送功能;dovecot服务器实现了POP3协议,可以与Sendmail服务器配合工作,实现用户对邮件的收取功能。本次我们会看到Sendmail和dovecot结合运用的实例。本次分三部分说,先来了解一下sendmail.
第一部分:sendmail的安装、控制启动及主要配置文件
一. Sendmail安装
Sendmail
服务器在RHEL5系统中是默认安装的,完整的安装应包括四个软件包。如果没安装或是重新安装,可以使用rpm命令进行手动安装。如下:
1>.sendmail //
是sendmail服务器程序的安装包,是最重要的软件包
2>.m4 //
包括了配置sendmail服务器的必要工具
3>.sendmail-cf //
包括了重新配置sendmail服务器的必要配置文件
4>.sendmail-doc //
包括了sendmail服务器的说明文档
注意:Sendmail服务程序在安装后并没有设置在系统启动时自动运行,所以我们还得使用chkconfig命令设置它在系统启动时自动启动
二. Sendmail的控制启动
在启动sendmail服务器程序之前,需要先确保运行sendmail服务器的主机有完整的域名,在internet上能够解析到,并且有相应的邮件交换(MX)记录以及能够反向解析。
Sendmail
服务器使用名为sendmail的启动脚本进行程序的启动与停止,此脚本位于“/etc/init.d/”目录中。也可以使用service命令调用sendmail脚本执行sendmail服务器的启动和停止操作。
三. Sendmail主要配置文件
1. sendmail
服务器的配置目录
sendmail
服务器使用的所有配置文件都保存在目录“/etc/mail”中,该目录中保存了sendmail服务器运行所需要的配置文件以及库文件等多种类型的文件,如下:
[root@mail ~]# ls /etc/mail
access helpfile Makefile submit.cf virtusertable
access.db local-host-names sendmail.cf submit.cf.bak virtusertable.db
domaintable mailertable sendmail.mc submit.mc
domaintable.db mailertable.db spamassassin trusted-users
2.
配置文件sendmail.cf和sendmail.mc
Sendmail
服务器的主配置文件是sendmail.cf。它比较复杂,所以通常我们不会直接去编辑它,而是编辑sendmail.mc文件然后使用m4命令由sendmail.mc文件生成sendmail.cf文件。
3.
数据库配置文件和数据库文件
数据库文件用于进行sendmail服务器的辅助配置。在“/etc/mail”目录中所有扩展名为“.db”的文件都是数据库文件,每个数据库文件在同一目录下都对应有同名的无扩展名文件,例如对于access.db文件,对应有名为access的文本文件,称为数据库配置文件。当我们在数据库配置文件中进行相应的设置后,需要使用makemap命令将数据库配置文件生成“.db”的数据库文件。
4.
日志文件
Sendmail
服务器的日志文件位于“/var/log”目录中,文件名为maillog,通过该文件可以了解到sendmail服务器的运行状态信息。
第二部分:sendmail的配置实例
上面我们大概对sendmail有了一个了解,现在我们来看看具体的做法,拓扑图就用下面这个够简单的吧。
1.
域名设置
邮件服务器的正常工作需要在DNS服务器中进行相应的设置,本实验我们DNS和Sendmail位于同一台服务器上,下面是DNS的设置:
[root@mail ~]# tail -10 /var/named/chroot/etc/named.conf
… …
zone "zpp.com" IN {
type master;
file "zpp.com.zone";
};
zone "1.168.192.in-addr.arpa" IN { //
反向区域必须要有,否则会被当作垃圾邮件服务器
type master;
file "192.168.1.rev";
};
[root@mail ~]# cat /var/named/chroot/var/named/zpp.com.zone
$TTL 86400
@ IN SOA mail.zpp.com. admin.zpp.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS mail.zpp.com.
mail IN A 192.168.1.1
@ IN MX 5 mail.zpp.com. //
设置MX记录之后才可以实现与其它邮件服务器通邮
[root@mail ~]# cat /var/named/chroot/var/named/192.168.1.rev
$TTL 86400
@ IN SOA mail.zpp.com. admin.zpp.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS mail.zpp.com.
1 IN PTR mail.zpp.com.
[root@mail ~]#
2.
设置local-host-names文件
在sendmail服务器的配置目录下,local-host-names文件用于设置邮件服务器提供邮件服务的域名。
[root@mail ~]# cat /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
zpp.com
[root@mail ~]#
3.
开启sendmail服务器的网络接口
Sendmail
服务器出于安全考虑,默认只对lo网络接口(127.0.0.1)提供服务,为了使服务器能够为主机的所有网络接口(地址为0.0.0.0)提供服务,需要在sendmail.mc文件中进行配置的修改。
[root@mail ~]# vi /etc/mail/sendmail.mc
//
查找此行
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
//
改为
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
说明:修改之后,sendmail服务器将监听主机所有网络接口的25端口
4. sendmail
服务器的用户管理
1>.
设置SMTP的用户认证
为避免大量垃圾邮件产生,在sendmail服务器中需要设置发送邮件的用户认证,RHEL5系统中提供的Sendmail服务器提供了SMTP的用户认证功能,默认没有启用,因此需要在sendmail.mc文件中进行如下配置:
[root@mail ~]# vi /etc/mail/sendmail.mc
//
查找此行
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
//
改为
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
说明:在sendmail.mc文件中,行首的dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。
在sendmail服务器中,使用了sasl的第2版(sasl2)作为SMTP的认证方式,在“/usr/lib/sasl2/”目录中的sendmail.conf配置文件设置了使用saslauthd服务程序提供用户的认证服务
[root@mail ~]# cat /usr/lib/sasl2/Sendmail.conf
pwcheck_method:saslauthd
因此当sendmail服务器使用SMTP认证功能时,需要确保saslauthd服务程序正确运行。
[root@mail ~]# chkconfig --list saslauthd
saslauthd 0:off 1:off 2: off 3: off 4: off 5: off 6: off
[root@mail ~]# chkconfig --level 35 saslauthd on
[root@mail ~]# /etc/init.d/saslauthd start
Starting saslauthd: [ OK ]
[root@mail ~]#
2>.
建立用户帐号
[root@mail ~]# groupadd group-zpp
[root@mail ~]# adduser -g group-zpp -s /sbin/nologin zpp001
[root@mail ~]# adduser -g group-zpp -s /sbin/nologin zpp002
[root@mail ~]# passwd zpp001
Changing password for user zpp001.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@mail ~]# passwd zpp002
Changing password for user zpp002.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@mail ~]#
说明:建立邮件用户组是为了便于邮件用户的管理。使用“-s”选项指定用户的shell为“/sbin/nologin”,即不允许用户登录Linux系统,从而起到安全的作用。
3>.
设置邮件别名和邮件群发功能
在sendmail服务器中使用aliases机制实现邮件别名和邮件群发功能,在“/etc”目录下存在名为aliases和aliases.db的两个文件,在对“/etc/aliases”文件的内容进行修改后,需要执行newaliases命令,使aliases文件中的内容重新生成aliases.db文件。
[root@mail ~]# tail -10 /etc/aliases
sales: postmaster
support: postmaster
# trap decode to catch security attacks
decode: root
# Person who should get root's mail
#root: marc
zoupanpan: zpp001,zpp002
[root@mail ~]#newaliases
/etc/aliases: 78 aliases, longest 13 bytes, 787 bytes total
说明:此处我们创建包含用户zpp001,zpp002的别名zoupanpan,稍后验证时,以此实现群发。
5.
访问控制的设置
Sendmail
服务器中使用access.db数据库进行基于主机地址的访问控制
[root@mail ~]# cat /etc/mail/access
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
说明:此处我们保持默认设置即可,以此让sendmail服务器所在主机中的用户任意发送邮件,而
不需要身份验证。
6.
生成sendmail.cf文件
[root@mail ~]# cd /etc/mail
[root@mail mail]# m4 sendmail.mc > sendmail.cf
[root@mail mail]#
7.
重新启动sendmail服务器
[root@mail mail]# /etc/init.d/sendmail restart
Shutting down sendmail: [ OK ]
Shutting down sm-client: [ OK ]
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
至此sendmail服务器就算搭建好了,下面我们来看一下邮局的基本配置。
第三部分:邮局基本配置
sendmail
服务器实现了SMTP功能,只实现了邮件的发送功能,收取则需要使用POP3或IMAP,下面是邮局基本配置:
一. 安装POP3服务
1.
安装dovecot软件包
RHEL5
系统中自带了名为dovecot的RPM安装包,用于安装dovecot服务器,由于该服务器依赖的软件包较多,所以不适合用rpm命令安装,最好是在图形界面下使用软件包管理程序进行安装
2.
设置dovecot软件包
[root@mail mail]# vi /etc/dovecot.conf
//
找到下面的一行
#protocols = imap imaps pop3 pop3s
//
将#注释掉即可如下
protocols = imap imaps pop3 pop3s
3.
启动dovecot服务程序
[root@mail mail]# /etc/init.d/dovecot restart
Stopping Dovecot Imap: [OK]
Starting Dovecot Imap: [OK]
5.
设置dovecto服务的启动状态
[root@mail mail]# chkconfig --list dovecot
dovecot 0:off 1: off 2: off 3: off 4: off 5: off 6: off
[root@mail mail]# chkconfig --level 35 dovecot on
[root@mail mail]# chkconfig --list dovecot
dovecot 0: off 1: off 2: off 3:on 4: off 5:on 6: off
[root@mail mail]# netstat -ntpl | grep 110
tcp 0 0 :::110 :::* LISTEN 6509/dovecot
二. 使用邮件客户端验证
客户端软件我们就使用windows自带的OE。帐号设置就不说了很简单。需要注意的是设置帐户时不要忘了将身份验证的选项卡勾上,因为Sendmail服务器设置了SMTP认证,如下图:
下图显示的是用户zpp001的发件箱,可以看到用户zpp001可以给用户zpp002和用于群发的别名zoupanpan发送邮件。
下图是用户zpp002的收件箱,可以看到他能够正常收信。
现在我们就搭建好了sendmail邮件服务器!