一、首先查看软件包是否被安装
sendmail服务器在RHEL4中是被默认安装的,软件包的名称是sendmail,可以使用rpm命令来查看,m4软件包提供了配置sendmail服务器必需的工具程序,与sendmail软件包一同默认安装在系统中,这两个软件包都在系统的第2张光盘中,如果没有安装的话,则安装上去。
# rpm -qa | grep sendmail
sendmail-8.13.1-2
# rpm -qa | grep m4
m4-1.4.1-16
另外在RHEL4的第4张安装光盘中,包括了文件名以sendmail开始的3个软件包,这些软件包都是与sendmail服务器相关的,需要安装上去。
# mount /dev/cdrom /media/cdrom
# cd /media/cdrom/RedHat/RPMS/
# ls sendmail*
sendmail-cf-8.13.1-2.i386.rpm     sendmail-doc-8.13.1-2.i386.rpm
sendmail-devel-8.13.1-2.i386.rpm
# rpm -ivh sendmail*
warning: sendmail-cf-8.13.1-2.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...                ########################################### [100%]
   1:sendmail-doc           ########################################### [ 33%]
   2:sendmail-cf            ########################################### [ 67%]
   3:sendmail-devel         ########################################### [100%]
二、启动senmdmail服务
# service sendmail start
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]
sendmail服务器的运行将启动sendmail和sm-client两个服务程序。
配置文件sendmail.cf和sendmail.mc
sendmail的主配置文件使sendmial.cf,由于该文件的格式很难理解,所以基本上不直接对它进行编辑,以免出错。正因为如此,sendmail的开发人员提供了容易理解和配置的sendmail.mc文件,我们可以通过修改这个配置文件,然后使用m4命令由sendmail.mc文件生成sendmail.cf文件。
开启sendmail服务器的网络端口
sendmail服务器出于安全考虑,默认只对lo网络端口提供服务,为了使服务能够为主机的的所有网络接口提供服务,需要在sendmail.mc文件中进行配置的修改。
# 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.mc文件生成sendmail.cf文件。
# cd /etc/mail/     //为配置文件所在目录
# m4 sendmail.mc > sendmail.cf
在sendmail服务器中,使用access.db数据库进行基于主机地址的访问控制,为了安全起见,sendmail默认关闭了为除本机以外的任何客户端RELAY邮件的功能,在现实使用中,可以打开其为本地网络RELAY邮件的功能,通过修改access文件来实现。
在sendmail下的.db文件中,都会对应有一个文本文件叫数据库配置文件,它是用来进行管理的。当我们对它进行相应的配置后,需要使用makemap命令将数据库配置文件生成.db的数据库文件,因为sendmail服务器只能识别.db的数据库文件的配置内容。
# vi /etc/mail/access
192.168.0                       RELAY     //允许192.168.0.0网段的所有主机RELAY.
# makemap hash access.db <access
在sendmail服务器的配置目录中,local-host-names文件用于设置邮件服务器提供邮件服务的域名,我们可以在这里指定sendmail服务器所负责接收邮件的域。
# vi /etc/mail/local-host-names   //添加一行
mail.zhen.com    
设置邮件别名
在sendmail服务器中,使用aliases机制实现邮件别名和邮件群发功能,在/etc目录下同时存在名为aliases和aliased.db的两个文件,aliases文件是文本文件,内容都是可编辑的,aliases.db文件是数据库文件,是由aliases文件生成的。
首先需要建立两个测试用户,然后才可以设置别名
# vi /etc/aliases
//在文件尾添加一行:
aa:             bb     //为邮件用户bb设置别名aa,将发往aa的邮件转发到bb用户的邮箱中。
配置完成后使用下列命令将其转换为sendmail可以识别的格式:
# newaliases    
当对所有的配置完成后,需要重新启动服务。
# service sendmail restart
查看端口的监听状态
# netstat -tnlp | grep :25
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LIST
三、发信测试
# telnet localhost 25     //连接本机的25端口
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail.zhen.com ESMTP Sendmail 8.13.1/8.13.1; Tue, 17 Jun 2008 10:12:18 +0800
mail from:root@mail.zhen.com     //设置发信人的地址
250 2.1.0 [email]root@mail.zhen.com[/email]... Sender ok
rcpt to:qq@mail.zhen.com     //设置收信人的地址
250 2.1.5 [email]bb@mail.zhen.com[/email]... Recipient ok
data   //指明邮件正文开始
354 Enter mail, end with "." on a line by itself
subject:     //指明邮件主题
subject:hello bb
nihao bb welcome!
.     //用点号表示结束
quit     //表示退去
# su - bb     //切换到bb用户,进行收信
在上面我们给bb设置了别名,那现在我们验证一下是否可以
# telnet localhost 25
mail from:root@mail.zhen.com
rcpt to:aa@mail.zhen.com
data
subject:nihao aa
welcom welcome welcome
.
quit
下面我们切换到aa里面去看看
# su - aa
$ mail
No mail for aa
去bb中看看
# su - bb
$ mail
 N  3 [email]root@mail.zhen.com[/email]    Tue Jun 17 10:19  13/501   "nihao aa"
& 3
Message 3:
From [email]root@mail.zhen.com[/email]  Tue Jun 17 10:19:58 2008
Date: Tue,
2008 10:19:19 +0800
From: root < [email]root@mail.zhen.com[/email]>
X-Authentication-Warning: mail.zhen.com: benet02 [127.0.0.1] didn't use HELO protocol
subject: nihao aa
welcom welcome welcome
可以看出我们设置的别名生效了。
四、安装及配置可以用于收信的服务器dovecot
sendmail服务器并不为MUA软件提供收取邮件的功能,因此系统中需要单独安装实现POP3或IMAP功能的服务器程序。
安装dovecot软件包,在系统的第4张光盘中。
# rpm -ivh dovecot-0.99.11-2.EL4.1.i386.rpm
warning: dovecot-0.99.11-2.EL4.1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...                ########################################### [100%]
   1:dovecot                ########################################### [100%]
有时会存在依赖关系,应找到相应的依赖的软件包逐一安装上去。
修改配置文件
默认情况下,dovecot服务器可以提供IMAP和POP3服务,但是默认只提供IMAP服务,因此需要在dovecot配置文件中进行配置的修改
# vi /etc/dovecot.conf
//找到下列一行
#protocols = imap imaps
并修改为:
protocols = imap imaps pop3 pop3s
启动dovecot服务,并查看开启状态
# service dovecot start
# netstat -tnlp | grep dovecot
tcp        0      0 :::993                      :::*                        LISTEN      23037/dovecot      
tcp        0      0 :::995                      :::*                        LISTEN      23037/dovecot      
tcp        0      0 :::110                      :::*                        LISTEN      23037/dovecot      
tcp        0      0 :::143                      :::*                        LISTEN      23037/dovecot      
设置dovecot在开机时自动启动
# chkconfig --list dovecot
dovecot         0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig --level 2345 dovecot on
下面我们可以使用OE进行邮件的收发测试
打来OE,设置邮箱账号,选择“工具”—“账号”,添加邮件,
在显示名中填写你的用户名bb,电子邮件地址填写 [email]bb@mail.zhen.com[/email]
在电子邮件服务器名中设置接收和发送邮件的邮件服务器地址
接收邮件服务器为:192.168.0.11
发送邮件的服务器为:192.168.0.11
下面按向导完成
下面就可以发送邮件了
指明收件人为: [email]root@mail.zhen.com[/email]
填写相关内容后,点击发送。
这时回到服务器中,可以看到下面一条信息
You have new mail in /var/spool/mail/root
然后查看一下:
# mail
>N  4 [email]bb@mail.zhen.com[/email]      Tue Jun 17 10:42  24/761   "qqqqqqqqqqqq"
& 4
Message 4:
From [email]bb@mail.zhen.com[/email]  Tue Jun 17 10:42:21 2008
From: "bb" < [email]bb@mail.zhen.com[/email]>
To: < [email]root@mail.zhen.com[/email]>
Subject: qqqqqqqqqqqq
Date: Tue, 17 Jun 2008 10:27:34 +0800
MIME-Version: 1.0
Content-Type: text/plain;
        charset="gb2312"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.3790.1830
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.1830
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from base64 to 8bit by mail.zhen.com id m5H2gLOo023051
222222222
222222222
22222222
sendmail服务器的用户管理
邮件服务器提供发送邮件的功能是很正常的,但是如果为所有人都能够无条件地发送邮件是很危险的,非常容易产生垃圾邮件,因此我们可以在sendmail服务器中设置发送邮件的用户认证,当用户使用MUA软件通过SMTP向邮件服务器发送邮件时,邮件服务器会要求用户提供用户账号和口令进行身份认证,只有通过身份认证的用户才能够通过邮件服务器向外部发送邮件。
在sendmail服务器中,使用sasl的第2版作为SMTP的认证方式
首先查看系统中有没有安装sasl的相关软件包
# rpm -qa | grep cyrus-sasl
cyrus-sasl-md5-2.1.19-5.EL4
cyrus-sasl-2.1.19-5.EL4
cyrus-sasl-plain-2.1.19-5.EL4
cyrus-sasl-devel-2.1.19-5.EL4
cyrus-sasl-gssapi-2.1.19-5.EL4
如果系统没有安装的话,需要使用rpm命令安装一下,软件包在系统的第3张光盘中。

我们需要编辑一下配置文件sendmail.mc来打开sasl2的认证功能
# 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.cf文件
# cd /etc/mail
# m4 sendmail.mc > sendmail.cf
# service sendmail restart
在"/usr/lib/sasl2/"目录中的Sendmail.conf配置文件设置了使用saslauthd服务程序提供用户的认证服务,我们需要编辑一下配置文件
# vi /usr/lib/sasl2/Sendmail.conf
//在文件中添加下列一行
mech_list:login plain digest=md5
启动saslauthd服务,并设置其开机自动启动
# service saslauthd start
Starting saslauthd:                                        [  OK  ]
# chkconfig --level 2345 saslauthd on
为了演示效果我们可以编辑一下"/etc/mail/access"文件
# vi /etc/mail/access
//删除下行
192.168.0                       RELAY
然后重新生成access.db文件
# makemap hash /etc/mail/access.db </etc/mail/access
重新启动sendmail服务
# service sendmail restart
下面我们验证一下效果
打开OE,发送邮件,会发现发送不出去,出现信息:
由于服务器拒绝接受发件人的电子邮件地址,这封邮件无法发送。发件人的电子邮件地址是 “[email]bb@mail.zhen.com[/email]”。 主题 'fdsaf', 帐户: '192.168.0.11', 服务器: '192.168.0.11', 协议: SMTP, 服务器响应: '530 5.7.0 Authentication required', 端口: 25, 安全(SSL): 否, 服务器错误: 530, 错误号: 0x800CCC78
这是我们知道到"工具"—"帐户"—"属性"在弹出的对话框中,选择"服务器",在最下面的"我的服务器要求身份验证"前面的框中打勾,这时再发送邮件,就可以发送出去了。