Centos 5.6搭建构建安全可靠的sendmail邮件服务器

2011-10-29 17:30:00

By zjqiu


所用软件:centos 5.6镜像自带RPM包

测试所用域名:jh.com

Sendmail是UNIX/Linux环境中稳定性较好的一款邮件服务器软件,通过对Sendmail服务器的配置可以实现基本的邮件转发功能;dovecot服务器实现了POP3协议,可以与Sendmail服务器配合工作,实现用户对邮件的收取功能;OpenWebmail是网页形式的邮件应用系统,可实现用户对邮件的发送、收取和管理功能。通过对Sendmail、dovecot和penWebmail的综合管理,系统管理员可以构建出功能完善的邮件应用系统。

本次实验需求: 
(1)DNS域名解析;
(2)SMTP认证功能;
(3)pop3服务的配置; 
(4)用户别名,及群发邮件的功能; 
(5)sendmail结合apache和openwebmail实现网页收发邮件功能. 
一.实验前的准备工作
为了方便相关软件包的安装,我先搭建好本地YUM源。
我们先挂载好安装光盘:
[root@mail ~]# mount
/dev/sda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/hdc on /media type iso9660 (ro)

1. [root@mail mail]# cd /etc/yum.repos.d
2. [root@mail yum.repos.d]# vi CentOS-Media.repo
[c5-media]
name=CentOS-$releasever - Media
baseurl=file:///media/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
修改成以上内容,保存退出!
3. [root@mail yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
4. [root@mail mail]# yum clean all

通过这几步简单的修改,本地YUM源就搭建好了!开始下面的实验.


二.DNS环境搭建

1.安装DNS前先修改主机名

dns可以单独作为服务器也可以与sendmail同一台服务器!这里我将他们都安装在同一台服务器中!

可以通过修改“/etc/hosts”和“/etc/sysconfig/network”两个文件更改主机域名。

Centos可以通过setup 来进行修改,不用重启生效!

2.安装DNS
[root@mail ~]# rpm -qa |grep bind
bind-9.3.6-16.P1.el5
bind-utils-9.3.6-16.P1.el5
bind-libs-9.3.6-16.P1.el5
ypbind-1.19-12.el5
我的机器已经安装好了相关的软件包!
安装好DNS后会在/etc目录下生成以下文件:
[root@mail ~]# ll /etc/named.*
-rw-r----- 1 root named 1230 2011-02-23 /etc/named.caching-nameserver.conf
-rw-r----- 1 root named 1018 10-28 05:44 /etc/named.rfc1912.zones
named.rfc1912.zones是区域定义文件,是BIND 的核心配置文件,它包含了BIND 的基本配置,但其并不包括区域数据。
named.rfc1912.zones 文件定义了DNS 服务器的工作目录所在位置,所有的区域数据文件都存放在该目录中,该文件还定义了DNS 服务器能够管理哪些区域,如果DNS 服务器可以管理某个区域,它将完成该区域内的域名解析工作。
在这里,我们单独建立一个配置文件为:named.conf
[root@mail ~]# vi /etc/named.conf
options {
directory "/var/named"; //这里是全局配置,这里一定要加进去,不然DNS不会解析!
zone "." IN {
type hint;
file "named.ca";
};
zone "jh.com" IN {
type master;
file "jh.zone";
allow-update { none; };
};
[root@mail ~]# chown :named /etc/named.conf
[root@mail ~]# ll /etc/named.*
-rw-r----- 1 root named 1230 2011-02-23 /etc/named.caching-nameserver.conf
-rw-r--r-- 1 root named315 10-28 04:53 /etc/named.conf
-rw-r----- 1 root named975 10-28 04:07 /etc/named.rfc1912.zones
我们再看下区域文件存在的目录:
[root@mail ~]# ll /var/named/
总计 40
drwxr-x--- 5 rootnamed 4096 10-28 03:39 chroot
drwxrwx--- 2 named named 4096 10-28 03:54 data
-rw-r----- 1 rootnamed195 2011-02-23 localhost.zone
-rw-r----- 1 rootnamed427 2011-02-23 named.broadcast
-rw-r----- 1 rootnamed 1892 2011-02-23 named.ca
-rw-r----- 1 rootnamed424 2011-02-23 named.ip6.local
-rw-r----- 1 rootnamed427 2011-02-23 named.zero
drwxrwx--- 2 named named 4096 2011-02-23 slaves
我们在这里手动建立区域文件:jh.zone、jh.rev .
这里的区域文件在上面配置的/etc/named.conf文件中对应!
下面是我创建好的文件内容:
[root@mail ~]# cat /var/named/jh.zone
$TTL86400
@IN SOAmail.jh.com. root.mail.jh.com. (
42; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
@IN NSmail.jh.com.
mailIN A172.28.12.60
@IN MX10mail.jh.com.
[root@mail ~]# cat /var/named/jh.rev
$TTL86400
@INSOAmail.jh.com. root.mail.jh.com.(
1997022700 ; Serial
28800; Refresh
14400; Retry
3600000; Expire
86400 ); Minimum
INNSmail.jh.com.
8INPTRmail.jh.com.

上面的内容意思本文不作重点,不懂得请查阅相关内容!

DNS服务器环境到此为止也搭建好了.

现在重启named服务:

[root@mail ~]# service named start

启动 named:[确定]

DNS服务启动成功!


我们检测下DNS服务是否正常工作:

有两种方法:

[root@mail ~]# ping mail.jh.com
PING mail.jh.com (172.28.12.60) 56(84) bytes of data.
64 bytes from 172.28.12.60: icmp_seq=1 ttl=64 time=0.042 ms
。。。。。。。。。
下面用dig 这个工具来测试:正向和反向解析!
正向测试:
[root@mail ~]# dig -t a jh.com
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> -t a jh.com;; global options:printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13312
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;jh.com.INA

;; AUTHORITY SECTION:
jh.com.86400INSOAmail.jh.com. root.mail.jh.com. 42 10800 900 604800 86400
;; Query time: 7 msec
;; SERVER: 172.28.12.60#53(172.28.12.60)
;; WHEN: Fri Oct 28 16:40:14 2011
;; MSG SIZErcvd: 70
反向测试:
[root@mail ~]# dig -x 172.28.12.60
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> -x 172.28.12.60
;; global options:printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 27751
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;60.12.28.172.in-addr.arpa.INPTR
;; AUTHORITY SECTION:
12.28.172.in-addr.arpa. 86400INSOAmail.jh.com. root.mail.jh.com. 1997022700 28800 14400 3600000 86400
;; Query time: 7 msec
;; SERVER: 172.28.12.60#53(172.28.12.60)
;; WHEN: Fri Oct 28 16:41:14 2011
;; MSG SIZErcvd: 95
通过dig这个工具测试到正向和反向都能正常解析工作,说明DNS服务器搭建成功!
还有一点说明下我们还可以用下面的命令来测试配置文件语法是否正确:
named-checkconf
named-checkzone /etc/named/jh.zone
named-checkzone /etc/named/jh.rev
三.Sendmail服务
一切环境准备就绪,开始正式我们的主角:sendmail。
在系统安装时,默认把sendmial安装好了。
[root@mail mail]# rpm -qa |grep sendmail
sendmail-8.13.8-8.el5
sendmail-cf-8.13.8-8.el5
[root@mail ~]# chkconfig --list |grep sendmail
sendmail0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
安装好后,还是不能配置sendmail,因为sendmail配置文件sendmail.cf不是一般人能搞明白其中的奥妙的,我能只能通过修改sendmail.mc这个配置文件!
m4软件包提供了配置Sendmail服务器必须的工具程序,用来生成sendmail.cf配置文件的,与Sendmail软件包一同默认安装在系统中。
后面会说明如何用m4来生成配置文件的!
[root@mail ~]# rpm -qa |grep m4
m4-1.4.5-3.el5.1
设置local-host-names文件,用于设置邮件服务器提供邮件服务的域名。
[root@mail ~]# vi /etc/mail/local-host-names
[root@mail ~]# cat /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
jh.com
编辑sendmail.mc文件,有两处需要修改的!
[root@mail ~]# vi /etc/mail/sendmail.mc
开启Sendmail服务器的网络接口,Sendmail服务器出于安全考虑,默认只对lo网络接口(IP地址为127.0.0.1)提供服务,为了使服务器能够为主机的所有网络接口(地址为0.0.0.0)提供服务,需要在sendmail.mc文件中进行配置的修改。
dnl # address restriction to accept email from the internet or intranet.
dnl #
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 587 for
开启SMTP的用户认证功能。将TRUST_AUTH_MECH(‘EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)前面的dnl以及空格去掉即可。开启之后,邮件服务器要求用户提供用户账户和口令进行身份认证,只有通过身份认证的用户才能通过邮件服务器向外部发送邮件。
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
现在我们使用m4工具生成sendmail.cf这个配置文件:
[root@mail ~]# cd /etc/mail
[root@mail mail]#
[root@mail mail]# m4 sendmail.mc > sendmail.cf
启动/etc/rc.d/init.d/sendmail服务,使sendmial.cf配置生效!!
[root@mail mail]# service sendmail restart
关闭sm-client:[确定]
关闭 sendmail:确定]
启动 sendmail:[确定]
启动 sm-client:[确定]
开启了Sendmail服务器的认证功能之后,需要确保saslauthd服务程序正确运行。
[root@mail mail]# service saslauthd restart

停止 saslauthd:[确定]

启动 saslauthd:[确定]

邮件用户账户的设置

Sendmail服务器使用Linux系统中的用户账户作为邮件账户,因此为用户添加邮件账户只需要添加Linux账户即可。为了方便用户管理可以将具有同种性质的用户加入某一个组中。

我这里添加一个用户组和三个用户:

[root@mail mail]# groupadd IT
[root@mail mail]# useradd –g IT –s /sbin/nologin zjqiu
[root@mail mail]# passwd zjqiu
[root@mail mail]# useradd –g IT –s /sbin/nologin rfan
[root@mail mail]# passwd rfan
[root@mail mail]# useradd –s /sbin/nologin zsliu
[root@mail mail]# passwd zsliu
zjqiu和rfan 加入到IT组,他们具有相同性质

!zsliu


设置邮件别名和邮件群发功能

在Sendmail服务器中使用aliases机制实现邮件别名和邮件群发功能。在/etc目录下同时存在名为aliases和aliases.db的两个文件。aliases文件是文本文件,其内容是可阅读和编辑的,aliases.db是数据库文件,是由aliases文件生成而来的。

[root@mail mail]# ll /etc/aliases*
-rw-r--r-- 1 root root1532 10-28 04:16 /etc/aliases
-rw-r----- 1 root smmsp 12288 10-28 19:08 /etc/aliases.db

编辑aliases文件,在文件末尾添加”IT:zjqiu,rfan”,

意思是通过给IT@jh.com发邮件,群发到zjqiu@jh.com和rfan@jh.com这两个邮箱中!

[root@mail mail]# vi /etc/aliases
………..
# Person who should get root's mail
#root:marc
IT:zjqiu,rfan
设置完成之后,通过newaliases生成aliases.db文件。
[root@mail mail]# newaliases
/etc/aliases: 77 aliases, longest 10 bytes, 781 bytes total

如果想让一个用户通过匿名的方式向外发送邮件,可以通过修改access文件,然后通过“makemap hash access.db < access”生成数据库文件。

这里只是说明下做法:

vi /etc/mail/access

根据示例用如下格式加入到该文件的最后:

某个用户的IPRELAY

在我的环境里就没有设置!!

全部都安装好后我们测试看DNS有没有与sendmail结合起来:

[root@mail ~]# nslookup
> set q=mx
> jh.com
Server:172.28.12.60
Address:172.28.12.60#53
jh.commail exchanger = 10 mail.jh.com.

可以看了二者已经结合到一起了!!


四、devecot的安装与配置

Sendmail服务器并不为MUA软件提供收取邮件的功能,因此系统中需要单独安装实现POP3或IMAP4功能的服务器程序。

系统默认安装了devecot软件,由于devecot服务器依赖的软件包比较多,因此建议使用上面搭建YUM源来安装!

[root@mail mail]# yum -y install dovecot
Loaded plugins: fastestmirror
Determining fastest mirrors
c5-media| 1.1 kB00:00
c5-media/primary| 954 kB00:00
c5-media2683/2683
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package dovecot.i386 0:1.0.7-7.el5 set to be updated
--> Processing Dependency: libmysqlclient.so.15 for package: dovecot
--> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15) for package: dovecot
--> Running transaction check
---> Package mysql.i386 0:5.0.77-4.el5_5.4 set to be updated
--> Processing Dependency: perl(DBI) for package: mysql
--> Running transaction check
---> Package perl-DBI.i386 0:1.52-2.el5 set to be updated
--> Finished Dependency Resolution
.......................................................
.......................................................
Running Transaction
Installing: perl-DBI1/3
Installing: mysql2/3
Installing: dovecot3/3
Installed:
dovecot.i386 0:1.0.7-7.el5
Dependency Installed:
mysql.i386 0:5.0.77-4.el5_5.4perl-DBI.i386 0:1.52-2.el5
可以看到dovecot依赖的包是:perl-DBI、MYSQL、dovecot!!
[root@mail mail]# rpm -qa |grep dovecot
dovecot-1.0.7-7.el5
安装好dovecot软件包,会在/etc下生成如下配置文件:
[root@mail mail]# ll /etc/dovecot.conf
-rw-r--r-- 1 root root 42901 2009-01-21 /etc/dovecot.conf
安装好的dovecot服务不要作任何修改直接可以启动!
[root@mail mail]# service dovecot start
启动 Dovecot Imap:[确定]
把它加入系统服务,随系统开机启动:
[root@mail mail]# chkconfig --level 35 dovecot on
[root@mail mail]# chkconfig --list |grep dovecot

dovecot0:关闭1:关闭2:关闭3:启用4:关闭5:启用6:关闭

四、邮件客户端Outlook Express的配置

邮件客户可以有多种:oe、OUTLOOK、foxmail等等。。。。

我这里用OE作下说明:一定要在服务器配置栏中勾选:”的服务器要求身份验证”!

centos7 发邮件 centos搭建邮件服务器的方法_centos7 发邮件

有于时间关系我不作测试了~~

五、安装openWebmail,通过web形式发布webmail

OpenWebmail是使用Perl语言编写的Webmail应用系统,可以很好地和Sendmail等邮件系统配合,构建功能强大的Webmail应用。
OpenWebmail所需要的软件包:
[root@mail openwebmaill-soft]# ls
openwebmail-2.53-3.i386.rpmperl-CGI-SpeedyCGI-2.21-RH9.i386.rpm
openwebmail-data-2.53-3.i386.rpmperl-Text-Iconv-1.7-2.el5.i386.rpm
perl-CGI-2.81-88.i386.rpm
perl-Compress-Zlibperl-suidperl 这两个包用YUM安装:
[root@mail openwebmaill-soft]# rpm –ivh *.rpm
安装好OpenWebmail后会在/var/www/cgi-bin/openwebmail/etc 建立dbm.conf配置文件!
[root@mail openwebmaill-soft]# cat /var/www/cgi-bin/openwebmail/etc/dbm.conf
dbm_ext.db
dbmopen_ext.db
dbmopen_haslockno
初始化OpenWebmail系统:
执行“/var/www/cgi-bin/openwebmail/openwebmail”目录中的openwebmail-tool.pl程序,并使用“--init”选项进行OpenWebmail系统的初始化过程。
[root@mail openwebmaill-soft]# cd /var/www/cgi-bin/openwebmail/
[root@mail openwebmail]# ls
authopenwebmail-main.plopenwebmail-vdomain.pl
etcopenwebmail.plopenwebmail-viewatt.pl
miscopenwebmail-prefs.plopenwebmail-webdisk.pl
modulesopenwebmail-read.plpreload.pl
openwebmail-abook.plopenwebmail-saprefs.plquota
openwebmail-advsearch.plopenwebmail-send.plshares
openwebmail-cal.plopenwebmail-spell.pluserstat.pl
openwebmail-folder.plopenwebmail-tool.plvacation.pl
[root@mail openwebmail]# ./openwebmail-tool.pl --init
creating db /var/www/cgi-bin/openwebmail/etc/maps/b2g ...done.
creating db /var/www/cgi-bin/openwebmail/etc/maps/g2b ...done.
creating db /var/www/cgi-bin/openwebmail/etc/maps/lunar ...done.
Creating UTF-8 locales...
langconv ar_AE.CP1256 -> ar_AE.UTF-8
langconv ar_AE.ISO8859-6 -> ar_AE.UTF-8
langconv bg_BG.CP1251 -> bg_BG.UTF-8
langconv ca_ES.ISO8859-1 -> ca_ES.UTF-8
langconv cs_CZ.ISO8859-2 -> cs_CZ.UTF-8
langconv da_DK.ISO8859-1 -> da_DK.UTF-8
langconv de_DE.ISO8859-1 -> de_DE.UTF-8
langconv el_GR.ISO8859-7 -> el_GR.UTF-8
langconv en_US.ISO8859-1 -> en_US.UTF-8
langconv es_AR.ISO8859-1 -> es_AR.UTF-8
langconv fi_FI.ISO8859-1 -> fi_FI.UTF-8
langconv fr_FR.ISO8859-1 -> fr_FR.UTF-8
langconv he_IL.CP1255 -> he_IL.UTF-8
langconv hr_HR.ISO8859-2 -> hr_HR.UTF-8
langconv hu_HU.ISO8859-2 -> hu_HU.UTF-8
langconv id_ID.ISO8859-1 -> id_ID.UTF-8
langconv it_IT.ISO8859-1 -> it_IT.UTF-8
langconv ko_KR.eucKR -> ko_KR.UTF-8
langconv lt_LT.CP1257 -> lt_LT.UTF-8
langconv nl_NL.ISO8859-1 -> nl_NL.UTF-8
langconv no_NO.ISO8859-1 -> no_NO.UTF-8
langconv pl_PL.ISO8859-2 -> pl_PL.UTF-8
langconv pt_BR.ISO8859-1 -> pt_BR.UTF-8
langconv pt_PT.ISO8859-1 -> pt_PT.UTF-8
langconv ro_RO.ISO8859-2 -> ro_RO.UTF-8
langconv ru_RU.KOI8-R -> ru_RU.UTF-8
langconv sk_SK.ISO8859-2 -> sk_SK.UTF-8
langconv sl_SI.CP1250 -> sl_SI.UTF-8
langconv sr_CS.ISO8859-2 -> sr_CS.UTF-8
langconv sv_SE.ISO8859-1 -> sv_SE.UTF-8
langconv th_TH.TIS-620 -> th_TH.UTF-8
langconv tr_TR.ISO8859-9 -> tr_TR.UTF-8
langconv uk_UA.KOI8-U -> uk_UA.UTF-8
...done.

Welcome to the OpenWebMail!

This program is going to send a short message back to the developer,
so we could have the idea that who is installing and how many sites are
using this software, the content to be sent is:

OS: Linux 2.6.18-238.el5 i686
Perl: 5.008008
WebMail: OpenWebMail 2.53 20080123

Send the site report?(Y/n) n//这里我们选择n!!
Thank you.
[root@mail openwebmail]#
系统默认安装好了apache!!!
启动apache服务器:
[root@mail openwebmail]# service httpd start
启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using mail.jh.com for ServerName
[确定]

在浏览器中输入:http://mail.jh.com/cgi-bin/openwebmail/openwebmail.pl


centos7 发邮件 centos搭建邮件服务器的方法_centos7 发邮件_02

我用zjqiu这个账号登入后的画面:

centos7 发邮件 centos搭建邮件服务器的方法_服务器_03

这里不作测试了!!!

到此整个实验搭建完成。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

后续会介绍另一个企业开源邮件系统:postfix



转载于:https://blog.51cto.com/opsmysql/701613