Linux系列-Red Hat5平台下Sendmail邮件服务搭建<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Sendmail是具有较长历史并不断发展的邮件服务器软件,通过对Sendmail服务器的配置管理,可以实现基本的邮件发送功能;dovecot服务器实现了POP3协议,可以与Sendmail服务器配合工作,实现用户对邮件的收取功能。本次我们会看到Sendmaildovecot结合运用的实例。本次分三部分说,先来了解一下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.cfsendmail.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服务器中进行相应的设置,本实验我们DNSSendmail位于同一台服务器上,下面是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”目录下存在名为aliasesaliases.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功能,只实现了邮件的发送功能,收取则需要使用POP3IMAP,下面是邮局基本配置:

一.   安装POP3服务

1.安装dovecot软件包

RHEL5系统中自带了名为dovecotRPM安装包,用于安装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邮件服务器!