8.5.1 邮件服务器概述一个完整的邮件服务器系统由邮件用户代理(MUA,Mail User Agent)和邮件传输代理(MTA,Mail Transport Agent)两部分构成。
MUA向用户提供了E-Mail系统的用户界面,使用户可以读、写和管理邮件。
MTA是指系统中负责邮件发送、接收和路由的程序,是E-Mail服务器的主要部分。MTA收到MUA发来的邮件后,将根据目的地址将该邮件转发到指定用户的邮箱中。
Linux操作系统中最常用的E-Mail服务器软件是sendmail,最初由加州大学组织开发。
下面简要介绍安装的软件包。
sendmail:sendmail服务器。
m4:可以用来生成sendmail服务器的配置文件。
sendmail-cf:与sendmail服务器配置相关的文件和程序。
sendmail-doc:sendmail服务器的文档。
8.5.2 实例—设置sendmail服务器
实例8-18 sendmail服务器的设置第1步:配置DNS邮件交换记录因为E-Mail服务器系统与DNS服务器之间有着密切的联系,故在配置E-Mail服务器之前要对DNS进行正确的设置。
编辑/var/named/chroot/var/named/test.edu.cn.db文件,如下所示。在DNS配置文件中,MX(邮件交换)记录用来标明SMTP邮件服务器。将域名为mail.test.edu.cn的主机作为test.edu.cn域中的SMTP邮件服务器,保存该文件。对于DNS的具体设置过程,见2.2节。
$TTL 1H
@ SOA dns.test.edu.cn. root.test.edu.cn,( 2
3H
1H
1W
1H )
NS dns
IN MX 5 mail //添加邮件交换记录
dns IN A 222.11.22.11
www IN A 192.168.0.10
IN A 192.168.0.20
dns2 IN CNAME dns
www1 IN A 222.11.22.11
www2 IN A 222.11.22.11
ftp IN A 222.11.22.11
mail IN A 222.11.22.11 //添加A记录
第2步:添加对mail.test.edu.cn的逆向解析功能编辑/var/named/chroot/etc/named.conf文件,如下所示(部分),保存该文件。
zone "0.168.192.IN-ADDR.ARPA." IN {
type master;
file "192.168.0.db";
};
zone "22.11.222.IN-ADDR.ARPA." IN { //新添加的逆向解析区声明
type master;
file "222.11.22.db";
};
编辑/var/named/chroot/var/named/222.11.22.db文件,如下所示,保存该文件。
$TTL 1H
@ SOA dns.test.edu.cn. root.test.edu.cn,( 2
3H
1H
1W
1H )
IN NS dns
11 IN PTR dns.test.edu.cn.
11 IN PTR mail.test.edu.cn.
第3步:启动DNS服务器执行命令# service named start启动DNS服务器。
也可以执行命令# rndc reload重新加载DNS配置文件。
第4步:验证DNS服务器的设置执行如下命令验证DNS服务器的设置。
[root@localhost ~]# nslookup -type=mx test.edu.cn
Server,222.11.22.11
Address,222.11.22.11#53
test.edu.cn mail exchanger = 5 mail.test.edu.cn.
[root@localhost ~]# nslookup mail.test.edu.cn
Server,222.11.22.11
Address,222.11.22.11#53
Name,mail.test.edu.cn
Address,222.11.22.11
第5步:给帐号指定别名
sendmail可以给每个帐号起一个别名,别名只是一个虚拟的名称,并不是新创建一个帐号。可以修改别名配置文件/etc/aliases,如图8-40所示的最后两行。这里的别名与帐号的名字是一样的,读者在实际操作中可任给别名,前提是在系统中不能和其他帐号冲突。保存该文件。
第6步:生成/etc/aliases.db文件由于sendmail并不直接读取/etc/aliases文件,而是使用该文件的DBM数据库格式文件/etc/aliases.db,因此要执行newaliases命令,将根据/etc/aliases文件生成/etc/aliases.db文件。
第7步:配置邮件转发功能
sendmail服务器的默认配置会给用户的邮件发送带来麻烦,因为此时该服务器只中继来自服务器自身的邮件。为了解决这一问题,需要对/etc/mail/sendmail.cf文件进行修改,如图8-41所示。其中222.11.22.11为本地邮件服务器的IP地址,保存该文件。
第8步:设置中继域和网络
sendmail服务器默认只中继本机、本域中计算机所发送的邮件,要让sendmail服务器为其他域或网络以及其他的主机中继邮件,则需配置access.db数据库文件,而该文件是由/etc/mail/access生成的,故先对access文件进行修改,如图8-42所示,添加最后4行,保存该文件。
第9步:生成access.db数据库文件执行# makemap -r hash /etc/mail/access.db < /etc/mail/access命令,根据access文件生成access.db数据库文件。
第10步:修改/etc/mail/local-host-names文件如图8-43所示,修改/etc/mail/local-host-names文件。sendmail会将该文件中的内容视为本地主机名,也就是说sendmail 将所有允许中继的本域或主机都放在该文件中,保存该文件。
第11步:重启sendmail服务器执行# service sendmail restart命令,重启sendmail服务器。
第12步:测试sendmail服务器在网络中的任何一台计算机上(操作系统为Windows或Linux等都可以),可以使用telnet命令来连接sendmail服务器。这里是在Linux的终端窗口进行。
测试过程如下:
[root@localhost ~]# telnet mail.test.edu.cn 25
Trying 222.11.22.11...
Connected to mail.test.edu.cn (222.11.22.11).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.8/8.13.8; Sat,24 May 2008 17:35:55 +0800
help //执行help命令,显示出可以使用的SMTP命令
214-2.0.0 This is sendmail
214-2.0.0 Topics:
214-2.0.0 HELO EHLO MAIL RCPT DATA
214-2.0.0 RSET NOOP QUIT HELP VRFY
214-2.0.0 EXPN VERB ETRN DSN AUTH
214-2.0.0 STARTTLS
214-2.0.0 For more info use "HELP <topic>".
214-2.0.0 To report bugs in the implementation see
214-2.0.0 http://www.sendmail.org/email-addresses.html
214-2.0.0 For local information send email to Postmaster at your site.
214 2.0.0 End of HELP info
mail from:ztg@test.edu.cn //告诉服务器发信人的E-Mail地址
250 2.1.0 ztg@test.edu.cn..,Sender ok
rcpt to:ztguang@test.edu.cn //告诉服务器收信人的E-Mail地址。此时sendmail服务器就知
//道了收发双方的E-Mail地址,接下来就可以用data命令输入邮件内容
250 2.1.5 ztguang@test.edu.cn..,Recipient ok
data //执行data命令
354 Enter mail,end with "." on a line by itself
hello ztguang,I am ztg,//输入的信件内容
,//在一行开头输入“.”号,表明信件内容输入完毕
250 2.0.0 m4O9ZtJG008215 Message accepted for delivery
quit //退出
221 2.0.0 localhost.localdomain closing connection
Connection closed by foreign host.
You have new mail in /var/spool/mail/root
[root@localhost ~]#
第13步:查看邮件执行如下命令验证DNS服务器的设置。
[root@localhost ~]# su - ztguang //切换到用户zhang
[ztguang@localhost ~]$ mail //收信
Mail version 8.1 6/6/93,Type? for help.
"/var/spool/mail/ztguang",1 message 1 new
//“N”后面的数字“1”表示有一封收到的信,第11行“U”后面的数字“1”表示有一封未读的信
>N 1 ztg@mail.test.edu.cn Sat May 24 17:19 12/592
& 1 //输入1,查看第1封信的内容
Message 1:
From ztg@mail.test.edu.cn Sat May 24 17:19:00 2008
Date,Sat,24 May 2008 17:16:03 +0800
From,ztg@mail.test.edu.cn
X-Authentication-Warning,localhost.localdomain,mail.test.edu.cn [222.11.22.66] (may be forged) didn't use HELO protocol
hello ztguang,ztg in windows,//信件内容
& q //输入q,退出
Saved 1 message in mbox
[ztguang@localhost ~]$ mail
No mail for ztguang
[ztguang@localhost ~]$ exit
logout
[root@localhost ~]#
至此,表明MTA可以正常工作了。
第14步:开启POP服务功能为了让用户能够访问sendmail邮件服务器中的邮箱,还应该开启装POP或IMAP服务功能。POP或IMAP是从邮件服务器接收邮件的协议。
编辑/etc/dovecot.conf文件,修改的内容如下,保存该文件。
执行# service dovecot start命令,重启dovecot服务。
# Protocols we want to be serving,imap imaps pop3 pop3s
# If you only want to use dovecot-auth,you can set this to "none".
#protocols = imap imaps pop3 pop3s
protocols = imap imaps pop3 pop3s
实例8-19 Open Webmail服务器的设置
Open Webmail是一套由国人开发的、免费的开放源代码的邮件服务软件,安装并且设置好Open Webmail服务器后,使用者可以从任何计算机经由浏览器收发信件。
注意:
Open Webmail是以具体的邮件服务器为基础的,本实例用的是sendmail。
第1步:安装Open Webmail
从http://openwebmail.org/openwebmail/download/redhat/rpm/release/2.53/
下载openwebmail-2.53-3.i386.rpm和openwebmail-data-2.53-3.i386.rpm到桌面。
从
http://openwebmail.org/openwebmail/download/redhat/rpm/packages/rhel5/perl-Text-Iconv/
下载perl-Text-Iconv-1.7-2.el5.i386.rpm到桌面。
从http://linux.web.psi.ch/dist/scientific/50/update/20071201/?C=N;O=D
下载perl-suidperl-5.8.8-10.el5.2.i386.rpm到桌面。
然后执行如下命令:
[root@localhost Desktop]# rpm -ivh perl-suidperl-5.8.8-10.el5.2.i386.rpm
[root@localhost Desktop]# rpm -ivh perl-Text-Iconv-1.7-2.el5.i386.rpm
[root@localhost Desktop]# rpm -ivh openwebmail-*
第2步:初始化Open Webmail
[root@localhost Desktop]# cd /var/www/cgi-bin/openwebmail
[root@localhost openwebmail]#,/openwebmail-tool.pl --init
第3步:编辑/var/www/cgi-bin/openwebmail/etc/dbm.conf文件找到如下三行,并且进行如下修改。
dbm_ext .db
dbmopen_ext none .db
dbmopen_haslock no
第4步:编辑/var/www/cgi-bin/openwebmail/etc/openwebmail.conf文件找到如下两行,并且进行如下修改。
default_language zh_CN.gb2312
default_iconset Cool3D.Chinese.Simplified
第5步:编辑/var/www/cgi-bin/openwebmail/auth/auth_unix.pl文件找到如下三行,并且进行如下修改。
my $passwdfile_plaintext = $conf{'passwdfile_plaintext'} || '/etc/passwd';
my $passwdfile_encrypted = $conf{'passwdfile_encrypted'} || '/etc/shadow';
my $passwdmkdb = $conf{'passwdmkdb'} || 'none';
第6步:再次初始化Open Webmail
[root@localhost openwebmail]#,/openwebmail-tool.pl --init
第7步:编辑/etc/httpd/conf/httpd.conf文件将“AddHandler cgi-script,cgi”前面的#去掉。
第8步:执行命令# chcon -t httpd_log_t /var/log/openwebmail.log
第9步:设置SELinux
执行命令#system-config-securitylevel,在弹出的对话框(图7-42)中,将SELinux设置为允许。或者直接编辑/etc/sysconfig/selinux文件,如:SELINUX=permissive。
第10步:测试在浏览器地址栏中输入http://server_ip/cgi-bin/openwebmail/openwebmail.pl,以Webmail方式来收发电子邮件。注意,不能以root帐号进行测试。
MUA向用户提供了E-Mail系统的用户界面,使用户可以读、写和管理邮件。
MTA是指系统中负责邮件发送、接收和路由的程序,是E-Mail服务器的主要部分。MTA收到MUA发来的邮件后,将根据目的地址将该邮件转发到指定用户的邮箱中。
Linux操作系统中最常用的E-Mail服务器软件是sendmail,最初由加州大学组织开发。
下面简要介绍安装的软件包。
sendmail:sendmail服务器。
m4:可以用来生成sendmail服务器的配置文件。
sendmail-cf:与sendmail服务器配置相关的文件和程序。
sendmail-doc:sendmail服务器的文档。
8.5.2 实例—设置sendmail服务器
实例8-18 sendmail服务器的设置第1步:配置DNS邮件交换记录因为E-Mail服务器系统与DNS服务器之间有着密切的联系,故在配置E-Mail服务器之前要对DNS进行正确的设置。
编辑/var/named/chroot/var/named/test.edu.cn.db文件,如下所示。在DNS配置文件中,MX(邮件交换)记录用来标明SMTP邮件服务器。将域名为mail.test.edu.cn的主机作为test.edu.cn域中的SMTP邮件服务器,保存该文件。对于DNS的具体设置过程,见2.2节。
$TTL 1H
@ SOA dns.test.edu.cn. root.test.edu.cn,( 2
3H
1H
1W
1H )
NS dns
IN MX 5 mail //添加邮件交换记录
dns IN A 222.11.22.11
www IN A 192.168.0.10
IN A 192.168.0.20
dns2 IN CNAME dns
www1 IN A 222.11.22.11
www2 IN A 222.11.22.11
ftp IN A 222.11.22.11
mail IN A 222.11.22.11 //添加A记录
第2步:添加对mail.test.edu.cn的逆向解析功能编辑/var/named/chroot/etc/named.conf文件,如下所示(部分),保存该文件。
zone "0.168.192.IN-ADDR.ARPA." IN {
type master;
file "192.168.0.db";
};
zone "22.11.222.IN-ADDR.ARPA." IN { //新添加的逆向解析区声明
type master;
file "222.11.22.db";
};
编辑/var/named/chroot/var/named/222.11.22.db文件,如下所示,保存该文件。
$TTL 1H
@ SOA dns.test.edu.cn. root.test.edu.cn,( 2
3H
1H
1W
1H )
IN NS dns
11 IN PTR dns.test.edu.cn.
11 IN PTR mail.test.edu.cn.
第3步:启动DNS服务器执行命令# service named start启动DNS服务器。
也可以执行命令# rndc reload重新加载DNS配置文件。
第4步:验证DNS服务器的设置执行如下命令验证DNS服务器的设置。
[root@localhost ~]# nslookup -type=mx test.edu.cn
Server,222.11.22.11
Address,222.11.22.11#53
test.edu.cn mail exchanger = 5 mail.test.edu.cn.
[root@localhost ~]# nslookup mail.test.edu.cn
Server,222.11.22.11
Address,222.11.22.11#53
Name,mail.test.edu.cn
Address,222.11.22.11
第5步:给帐号指定别名
sendmail可以给每个帐号起一个别名,别名只是一个虚拟的名称,并不是新创建一个帐号。可以修改别名配置文件/etc/aliases,如图8-40所示的最后两行。这里的别名与帐号的名字是一样的,读者在实际操作中可任给别名,前提是在系统中不能和其他帐号冲突。保存该文件。
第6步:生成/etc/aliases.db文件由于sendmail并不直接读取/etc/aliases文件,而是使用该文件的DBM数据库格式文件/etc/aliases.db,因此要执行newaliases命令,将根据/etc/aliases文件生成/etc/aliases.db文件。
第7步:配置邮件转发功能
sendmail服务器的默认配置会给用户的邮件发送带来麻烦,因为此时该服务器只中继来自服务器自身的邮件。为了解决这一问题,需要对/etc/mail/sendmail.cf文件进行修改,如图8-41所示。其中222.11.22.11为本地邮件服务器的IP地址,保存该文件。
第8步:设置中继域和网络
sendmail服务器默认只中继本机、本域中计算机所发送的邮件,要让sendmail服务器为其他域或网络以及其他的主机中继邮件,则需配置access.db数据库文件,而该文件是由/etc/mail/access生成的,故先对access文件进行修改,如图8-42所示,添加最后4行,保存该文件。
第9步:生成access.db数据库文件执行# makemap -r hash /etc/mail/access.db < /etc/mail/access命令,根据access文件生成access.db数据库文件。
第10步:修改/etc/mail/local-host-names文件如图8-43所示,修改/etc/mail/local-host-names文件。sendmail会将该文件中的内容视为本地主机名,也就是说sendmail 将所有允许中继的本域或主机都放在该文件中,保存该文件。
第11步:重启sendmail服务器执行# service sendmail restart命令,重启sendmail服务器。
第12步:测试sendmail服务器在网络中的任何一台计算机上(操作系统为Windows或Linux等都可以),可以使用telnet命令来连接sendmail服务器。这里是在Linux的终端窗口进行。
测试过程如下:
[root@localhost ~]# telnet mail.test.edu.cn 25
Trying 222.11.22.11...
Connected to mail.test.edu.cn (222.11.22.11).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.8/8.13.8; Sat,24 May 2008 17:35:55 +0800
help //执行help命令,显示出可以使用的SMTP命令
214-2.0.0 This is sendmail
214-2.0.0 Topics:
214-2.0.0 HELO EHLO MAIL RCPT DATA
214-2.0.0 RSET NOOP QUIT HELP VRFY
214-2.0.0 EXPN VERB ETRN DSN AUTH
214-2.0.0 STARTTLS
214-2.0.0 For more info use "HELP <topic>".
214-2.0.0 To report bugs in the implementation see
214-2.0.0 http://www.sendmail.org/email-addresses.html
214-2.0.0 For local information send email to Postmaster at your site.
214 2.0.0 End of HELP info
mail from:ztg@test.edu.cn //告诉服务器发信人的E-Mail地址
250 2.1.0 ztg@test.edu.cn..,Sender ok
rcpt to:ztguang@test.edu.cn //告诉服务器收信人的E-Mail地址。此时sendmail服务器就知
//道了收发双方的E-Mail地址,接下来就可以用data命令输入邮件内容
250 2.1.5 ztguang@test.edu.cn..,Recipient ok
data //执行data命令
354 Enter mail,end with "." on a line by itself
hello ztguang,I am ztg,//输入的信件内容
,//在一行开头输入“.”号,表明信件内容输入完毕
250 2.0.0 m4O9ZtJG008215 Message accepted for delivery
quit //退出
221 2.0.0 localhost.localdomain closing connection
Connection closed by foreign host.
You have new mail in /var/spool/mail/root
[root@localhost ~]#
第13步:查看邮件执行如下命令验证DNS服务器的设置。
[root@localhost ~]# su - ztguang //切换到用户zhang
[ztguang@localhost ~]$ mail //收信
Mail version 8.1 6/6/93,Type? for help.
"/var/spool/mail/ztguang",1 message 1 new
//“N”后面的数字“1”表示有一封收到的信,第11行“U”后面的数字“1”表示有一封未读的信
>N 1 ztg@mail.test.edu.cn Sat May 24 17:19 12/592
& 1 //输入1,查看第1封信的内容
Message 1:
From ztg@mail.test.edu.cn Sat May 24 17:19:00 2008
Date,Sat,24 May 2008 17:16:03 +0800
From,ztg@mail.test.edu.cn
X-Authentication-Warning,localhost.localdomain,mail.test.edu.cn [222.11.22.66] (may be forged) didn't use HELO protocol
hello ztguang,ztg in windows,//信件内容
& q //输入q,退出
Saved 1 message in mbox
[ztguang@localhost ~]$ mail
No mail for ztguang
[ztguang@localhost ~]$ exit
logout
[root@localhost ~]#
至此,表明MTA可以正常工作了。
第14步:开启POP服务功能为了让用户能够访问sendmail邮件服务器中的邮箱,还应该开启装POP或IMAP服务功能。POP或IMAP是从邮件服务器接收邮件的协议。
编辑/etc/dovecot.conf文件,修改的内容如下,保存该文件。
执行# service dovecot start命令,重启dovecot服务。
# Protocols we want to be serving,imap imaps pop3 pop3s
# If you only want to use dovecot-auth,you can set this to "none".
#protocols = imap imaps pop3 pop3s
protocols = imap imaps pop3 pop3s
实例8-19 Open Webmail服务器的设置
Open Webmail是一套由国人开发的、免费的开放源代码的邮件服务软件,安装并且设置好Open Webmail服务器后,使用者可以从任何计算机经由浏览器收发信件。
注意:
Open Webmail是以具体的邮件服务器为基础的,本实例用的是sendmail。
第1步:安装Open Webmail
从http://openwebmail.org/openwebmail/download/redhat/rpm/release/2.53/
下载openwebmail-2.53-3.i386.rpm和openwebmail-data-2.53-3.i386.rpm到桌面。
从
http://openwebmail.org/openwebmail/download/redhat/rpm/packages/rhel5/perl-Text-Iconv/
下载perl-Text-Iconv-1.7-2.el5.i386.rpm到桌面。
从http://linux.web.psi.ch/dist/scientific/50/update/20071201/?C=N;O=D
下载perl-suidperl-5.8.8-10.el5.2.i386.rpm到桌面。
然后执行如下命令:
[root@localhost Desktop]# rpm -ivh perl-suidperl-5.8.8-10.el5.2.i386.rpm
[root@localhost Desktop]# rpm -ivh perl-Text-Iconv-1.7-2.el5.i386.rpm
[root@localhost Desktop]# rpm -ivh openwebmail-*
第2步:初始化Open Webmail
[root@localhost Desktop]# cd /var/www/cgi-bin/openwebmail
[root@localhost openwebmail]#,/openwebmail-tool.pl --init
第3步:编辑/var/www/cgi-bin/openwebmail/etc/dbm.conf文件找到如下三行,并且进行如下修改。
dbm_ext .db
dbmopen_ext none .db
dbmopen_haslock no
第4步:编辑/var/www/cgi-bin/openwebmail/etc/openwebmail.conf文件找到如下两行,并且进行如下修改。
default_language zh_CN.gb2312
default_iconset Cool3D.Chinese.Simplified
第5步:编辑/var/www/cgi-bin/openwebmail/auth/auth_unix.pl文件找到如下三行,并且进行如下修改。
my $passwdfile_plaintext = $conf{'passwdfile_plaintext'} || '/etc/passwd';
my $passwdfile_encrypted = $conf{'passwdfile_encrypted'} || '/etc/shadow';
my $passwdmkdb = $conf{'passwdmkdb'} || 'none';
第6步:再次初始化Open Webmail
[root@localhost openwebmail]#,/openwebmail-tool.pl --init
第7步:编辑/etc/httpd/conf/httpd.conf文件将“AddHandler cgi-script,cgi”前面的#去掉。
第8步:执行命令# chcon -t httpd_log_t /var/log/openwebmail.log
第9步:设置SELinux
执行命令#system-config-securitylevel,在弹出的对话框(图7-42)中,将SELinux设置为允许。或者直接编辑/etc/sysconfig/selinux文件,如:SELINUX=permissive。
第10步:测试在浏览器地址栏中输入http://server_ip/cgi-bin/openwebmail/openwebmail.pl,以Webmail方式来收发电子邮件。注意,不能以root帐号进行测试。