85.1邮件服务器概述 个完整的邮件服务器系统由邮件用户代理(MUA, Mail User Agent)和邮件传输代理 (MIA, Mail Transport Agent)两部分构成 MUA向用户提供了E-Ma系统的用户界面,使用户可以读、写和管理邮件 MIA是指系统中负责邮件发送、接收和路由的程序,是EMai服务器的主要部分 MIA收到MUA发来的邮件后,将根据目的地址将该邮件转发到指定用户的邮箱中。 Linux操作系统中最常用的E-Mai服务器软件是 sendmail,最初由加州大学组织开发。 下面简要介绍安装的软件包 sendmail: sendmail服务器 m4:可以用来生成 sendmail服务器的配置文件 sendmail-ef:与 sendmail服务器配置相关的文件和程序 sendmail-doc: sendmail服务器的文档。 852实例_设置 sendmail服务器 实例818 sendmail服务器的设置 第1步:配置DNS邮件交换记录 因为EMa服务器系统与DNS服务器之间有着密切的联系,故在配置EMa服务器 之前要对DNS进行正确的设置 编辑/ar/ named/ chroot/var/ named/test. edu. cn. db文件,如下所示。在DNS配置文件中, MX(邮件交换)记录用来标明SMTP邮件服务器。将域名为 mail. test. edu.cn的主机作为 test. edu. cn域中的SMIP邮件服务器,保存该文件。对于DNS的具体设置过程,见22节 STTL IH lH IV IH IN MX 5 mail ∥添加邮件交换记录 22.1122.11 dns 2 cnaME dns www2INA222.1122.11 INA222.11.22.11 INA222.11.22.11 ∥添加A记录 第2步:添加对 mail. test. edu.cn的逆向解析功能 编辑/ar/ named/chroot/etc/named. conf文件,如下所示(部分),保存该文件, zone.168. 192 IN-ADDR. ARPA. "IN i file"192.168.0db"; zone 22.1 1.222. IN-ADDR. ARPA. IN i ∥新添加的逆向解析区声明
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;
fle"222.1122db" 编辑/ar/ named/ chroot/ var/named2211.22db文件,如下所示,保存该文件 a Soa dns test. edu. cn. root test. edu. cn. (2 IN ns dns In PtR dns. test. edu. cn IN PTR mail. test. edu.cn 第3步:启动DNS服务器 执行命令# service named start启动DNS服务器 也可以执行命令# rndc reload重新加载DNS配置文件 第4步:验证DNS服务器的设置 执行如下命令验证DNS服务器的设置 [root@localhost -1# nslookup -type=mx test.edu o Server. 2.11.2211 222.11.22.11#53 tested. cn mail exchanger =5 mail. test. edu.cn [root@localhost-]nslookupmailtested.cn 222.11.22.11 222.1122.11#53 Name: mail. test. edu. cn Address:222.11.22.11 第5步:给帐号指定别名 sendai可以给每个帐号起一个别名,别名只是一个虚拟的名称,并不是新创建一个帐 号。可以修改别名配置文件 letc/aliases,如图8-40所示的最后两行。这里的别名与帐号的名 字是一样的,读者在实际操作中可任给别名,前提是在系统中不能和其他帐号冲突。保存该 文件。 第6步:生成/etc/ aliases. db文件 由于 sendmail并不直接读取etc/ aliases文件,而是使用该文件的DBM数据库格式文件 etc/ aliases. db,因此要执行 newaliases命令,将根据etc/ aliases文件生成/etc/ aliases. db文件 第7步:配置邮件转发功能 sendmail服务器的默认配置会给用户的邮件发送带来麻烦,因为此时该服务器只中继来 自服务器自身的邮件。为了解决这一问题,需要对/etc/mai/ sendmailcf文件进行修改,如图 8-41所示。其中222.11.2.11为本地邮件服务器的IP地址,保存该文件。 第8步:设置中继域和网络 sendmail服务器默认只中继本机、本域中计算机所发送的邮件,要让 sendmail服务器为 其他域或网络以及其他的主机中继邮件,则需配置 access. db数据库文件,而该文件是由 etc/ mail/access生成的,故先对 access文件进行修改,如图8-42所示,添加最后4行,保存 该文件
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<letc/ mail/access 1命令,根据aces文件生成 access. db数据库文件。 第10步:修改/etc/ mail/local-host- names文件 如图8-43所示,修改 letc/mail/ocal-host- names文件。 sendmail会将该文件中的内容视为 本地主机名,也就是说 sendmail将所有允许中继的本域或主机都放在该文件中,保存该文 件 第11步:重启 sendmail I服务器 执行# service sendmail restart命令,重启 senda服务器 第12步:测试 sendmail服务器 在网络中的任何一台计算机上(操作系统为 Window或 Linux等都可以),可以使用 telnet 命令来连接 sendmail服务器。这里是在 Linux的终端窗口进行 测试过程如下: [root@localhost-telnetmail.test.edu.cn25 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 MAIL RCPT DATA 214-2.0.0 RSET QUIT HELP VRFY 214-2.0.0 EXPN DSN AUTH 214-20.0 STARTTLS 214-2.0.0 For more info use"HELP <t 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. 2142.0.0 End of help info ailfrom:ztg@test.edu.cn ∥告诉服务器发信人的E-Ma地址 2502.1.0ztg@test.edu.cn..Senderok rcptto;ztguang@test.edu.cn∥告诉服务器收信人的EMal地址。此时sendmail服务器就知 ∥道了收发双方的EMai地址,接下来就可以用data命令输入邮件内容 2502.1.5ztguang@test.edu.cn.Recipientok 执行data命令 354 Enter mail, end with". on a line by itself hello ztguang, I am ztg. ∥输入的信件内容 ∥在一行开头输入“.”号,表明信件内容输入完毕 2502.0.0 m409ZUG008215 Message accepted for delivery 出 221 2.0.0 localhost localdomain closing connection Connection closed by foreign host. You have new mail in /var/spool/mail/root 第13步:查看邮件 执行如下命令验证DNS服务器的设置 root@localhost -# su-ztguang ∥切换到用户 zhang Iztguang@localhost -S ma Mail version 8.1 6/6/93. Type for help /ar/spool/mailztguang": I message I new ∥“N”后面的数字“1”表示有一封收到的信,第11行“U”后面的数字“1”表示有一封未读的信
第 9 步:生成 access.db 数据库文件 执行# makemap -r hash /etc/mail/access.db ". 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”表示有一封未读的信
nIzg@mail.test.edu.cnSatMay2417:1912/592 输入1,查看第1封信的内容 Message I Fromztg@mail.test.edu.cnSatMay2417:19:002008 Date:Sat24May200817:1603+0800 From:ztg@mailtested.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,退出 ztguang@localhost -S mai o mail for ztguang lztguang @localhost -]S exit root@localhost -l# 至此,表明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 f If you only want to use dovecot-auth, you can set this to"none #protocols=imap imaps pop3 pop3s otocols =i 实例8-19 Open Webmail服务器的设置 Open Webmail是一套由国人开发的、免费的开放源代码的邮件服务软件,安装并且设 置好 Open Webmail服务器后,使用者可以从任何计算机经由浏览器收发信件 注意: Open Webm是以具体的邮件服务器为基础的,本实例用的是 sendmail. 第1步:安装 Open Webmail Mhttp://openwebmail.org/openwebmail/download/redhat/rpm/release/2.53/ 下载 openwebmai-253-3386rpm和 openwebmail-data-2.53-3i386rpm到桌面 从 http://openwebmail.org/openwebmail/download/redhat/rpm/packages/rhel5/perl-text-iconv/ 下载 perl-Text- Iconv-17-2cl5386pm到桌面 Ahttp://inux.webpsich/dist/scientific/50/update/20071201/2c=n;O-d 下载 perl-suidperl-588-10.cl52386rpm到桌面。 然后执行如下命令: root(@localhost Desktop rpm-ivh perl-suidperl-588-10el5.2. 1386. rpm root@localhost Desktop]# rpm-ivh perI-Text-Iconv-17-2el5 1386. rpr [root@localhost Desktop]# rpm-ivh openwebmail-* 第2步:初始化 Open Webmail [root@localhost Desktop]# cd /var/www/cgi-bin/openwebmail
>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步:编辑№ar∧ www/cg-bin/ openwebmail/etc/ dbm. conf文件 找到如下三行,并且进行如下修改。 dbm ext dbmopen ext none db dbmopen hadlock 第4步:编辑№ar∧ www/cg-bin/ openwebmail/etc/openwebmail conf文件 找到如下两行,并且进行如下修改。 default language zh CN gb2312 default iconset Cool3D Chinese Simplified 第5步:编辑№ar/ www/cg-bin/ openwebmail/authauth unix. pl文件 找到如下三行,并且进行如下修改。 my Spasswdfile plaintext=Sconf( passwdfile plaintext) Il/etc/passwd my Spasswdfile encrypted=Sconff'passwdfile encrypted; Il/etc/shadow; my passwdmkdb=Sconf'i'passwdmkdb', 'none 第6步:再次初始化 Open Webm root @localhost openwebmail]#f /openwebmail-tool pI--init 第7步:编辑etc/htpd/conf/httpd.conf文件 将“ AddHandler cgi-script. cgi”前面的#去掉。 第8步:执行命令#cheon-thttpdlogt/var/log/openwebmaillog 第9步:设置 SELinux 执行命令#ssem- config-securitylevel,在弹出的对话框(图7-42)中,将 SELinuX设置 为允许。或者直接编辑etc/ sysconfig/ selinux文件,如: SELINUX= permissive 第10步:测试 在浏览器地址栏中输入htt/ erver ip/cgi-bin/ openwebmail/ openwebmail pl,以 Webmail 方式来收发电子邮件。注意,不能以root帐号进行测试
[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 帐号进行测试