总结邮件服务器配置过程(Red Hat Enterprise Linux 4)

…………………………………………总结邮件服务器配置过程(Red Hat Enterprise Linux 4)

Red Hat Enterprise Linux提供了Sendmail和Posfix两种STMP邮件服务软件.
默认情况已经安装Sendmail.如果要使用Postfix,就必须先将Sendmail服务停止。然后再安装Postfix服务软件。
#Step1:安装Postfix服务,首先检查Sendmail服务是否启动。
命令:netstat -nutlp | grep :25
[root@localhost ~]# netstat -nutlp | grep :25
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LIST EN      10696/master
[root@localhost ~]#
#Step2:设置关闭Sendmail服务及开机时自启动.
命令:service sendmail stop(或/etc/rc.d/init.d/sendmail stop)
    chkconfig sendmail off
#Step3:安装postfix服务.
命令:[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/postfix-2.2.10-1.RHEL4.2.rpm

接下来对postfix邮件服务进行配置,postfix的配置文件是/etc/postfix/main.cf  默认情况下,它只监听127.0.0.1这个接口的邮件收发.
1.用vim /etc/postfix/main.cf 对配置文件进行配置.
例如:myhostname = mail1.myemail.com(或$mail1.myemail.com)(配置postfix 主机名称)
注意:等号两边要有空格.等号左边为变量名称,右边为变量的值.如果变量有两个以上的设置值,就必须用逗号或者是空格将他们分开!
在main.cf中用myhostname参数指定运行postfix服务的邮件主机的主机名称;缺省下其值为本地主机名.

用mydomain参数指定该主机的域名称.

在postfix中会自动将myhostname参数值的第一部分删除并将其余部分作为mydomain参数的值.
例如:myhostname = mail1.myemail.com  则:mydomain = myemail.com

2.设置本机寄出的邮件所使用的域名或主机名称
myorigin = $myhostname
myorigin参数实际上是设置由本机寄出的每封邮件的邮件头中mail from的地址。
Postfix默认使用本地主机名作为myorigin参数的值;一般情况下将myorigin的值设置为mydomain,即:myorigin = $mydomain

3.设置Postfix服务监听的网络接口
inet_interfaces参数默认为localhost,表明只能接收在本地邮件主机上寄信。通常情况下,所有的网络接口都开放,以便接收任何网络接口来的邮件,即:inet_interfaces = all

4.设置可接收邮件的主机名称或域名
参数mydestination,只有当发来的邮件的收件人的地址与该参数值相匹配时,Postfix才会将该邮件接收下来。
例如:mydestination = $mydomain,$myhostname
那么无论来信的收件人地址是[email protected],还是[email protected]都会被接收。

5.设置可转发哪些网络的邮件
参数mynetworks.例如,设置mynetwork = 192.168.16.0/24,则表示这台邮件服务器只转发子网192.168.16.0/24中的客户端所发来的邮件,而拒绝为其他子网转发邮件。

6.设置可转发哪些网域的邮件
参数mynetworks是针对邮件来源的ip来设置的。而relay_domains参数则是针对邮件来源的域名或主机名来设置的。
例如:relay_domains = myemail.com 则表示任何由域名myemail.com发来的邮件都会被认为是可信的,Postfix会自动对这些邮件进行转发。
完成以上操作之后,需要重新启动Postfix服务,service postfix restart。

但是现在,它只是支持客户端发信,还不支持收信。

|—————————————————————————————————————————————————————————————
|。接下来要配置DNS服务。。。。。。。。。。。。。。。。。。。。。。
|。
|。1.Linux下架设DNS服务器通常是使用bind程序来实现的。
|。检查是否安装了DNS服务:rpm -q bind
|。安装bind程序:rpm -ivh /media/cdrom/RedHat/RPMS/bind-9.2.4-16.EL4
|。介绍chroot程序:它是change root的缩写,它可以改变程序运行时所参考的"/"目录位置,即将某个特定的子目录作为程序的虚拟"/"根|。目录程序只在这个虚拟的跟目录具有权限,一旦跳出该目录就无任何权限了。从而保证了系统的安全。
|。
|。2.配置
|。bind程序的虚拟根目录是"/var/named/chroot/",bind的配置文件为/etc/named.conf,但其真实的位置

|。是/var/named/chroot/etc/named.conf,即etc前面的|。|。"/"代表的是"/var/named/chroot/"。
|。用vim编辑器编辑配置文件:vim /var/named/chroot/etc/named.conf
|。在其中添加一个主区域配置,即Postfix邮件服务的主区域,如下:
|。zone "myemail.com" {//zone 后面跟的是主区域的名称
|。        type master;
|。        file "myemail.com.zone";//file定义了主区域文件的名称,一个区域内的所有数据必须存放在区域文件中
|。        allow-transfer{ none;};
|。};
|。注意:每条语句要以分号结尾。
|。下面为设置反向域名解析
|。zone "104.20.172.in-addr.arpa" {
|。        type master;
|。        file "172.20.104.arpa";
|。        allow-transfer{172.20.104.100;};
|。};
|。介绍named.ca
|。/var/named/named.ca,其真实目录为/var/named/chroot/var/named/named.ca。它是一个非常重要的文件,该文件包含了

|。Internet的根服务器名字和地|。址,bind接到客户端主机的查询请求时,如果在Cache中找不到相应的数据,就会通过根服务器进行逐|。级查询。
|。
|。
|。设置区域文件:
|。一个区域内的所有数据(包括主机名和对应的IP地址,刷新时间和过期时间等)必须存放在DNS服务器内,而用来存放这些数据的文件就称|。为区域文件(区域文件中|。使用|分号表示注释)。一台DNS服务器可以存放多个区域文件,同一个区域文件也可以存放在多台DNS服务器|。中。
|。区域文件一般存放在/var/named/目录下,其实际为/var/named/chroot/var/named/。
|。如下面为/var/named/chroot/var/named/myemail.com.zone区域文件的配置信息:
|。$TTL    38400
|。myemail.com.            IN SOA  dns.myemail.com.   admin.myenail.com. (
|。                                        2010050103
|。                                        10800
|。                                        3600
|。                                        604800
|。                                        38400)
|。
|。myemail.com.            IN NS           dns.myemail.com.
|。dns                     IN A            172.20.104.100
|。mail1.myemail.com.      IN A            172.20.104.100
|。
|。
|。
|。myemail.com.            IN MX   10 mail1.myemail.com.
|。保存并退出Vim编辑器,":wq"
|。启动DNS服务器:service named start   (service named restart)
|。
|。配置/etc/resolv.conf(决定使用哪台DNS服务器来完成域名解析工作)
|。nameserver   172.20.104.100
|。domain       myemail.com
|。
|。使用nslookup程序测试,它提供了执行DNS服务器查询并获取详细信息的功能。
|。[root@localhost ~]#
|。[root@localhost ~]#
|。[root@localhost ~]#
|。[root@localhost ~]# nslookup mail1.myemail.com
|。Server:         127.0.0.1
|。Address:        127.0.0.1#53
|。
|。Name:   mail1.myemail.com
|。Address: 172.20.104.100
|。
|。[root@localhost ~]#
|。[root@localhost ~]#
|。[root@localhost ~]# vim /etc/resolv.conf
|。[root@localhost ~]# cp /etc/resolv.conf /etc/resolv_copy.conf
|。[root@localhost ~]# vim /etc/resolv.conf
|。[root@localhost ~]# service named restart
|。停止 named:                                               [  确定  ]
|。启动 named:                                               [  确定  ]
|。[root@localhost ~]# nslookup mail1.myemail.com
|。Server:         172.20.104.100
|。Address:        172.20.104.100#53
|。
|。Name:   mail1.myemail.com
|。Address: 172.20.104.100
|。
|。
|。[root@localhost ~]#
|。[root@localhost ~]#
|。
|。测试DNS服务:
|。C:/Documents and Settings/Administrator>ping 172.20.104.100
|。
|。Pinging 172.20.104.100 with 32 bytes of data:
|。
|。Reply from 172.20.104.100: bytes=32 time=17ms TTL=64
|。Reply from 172.20.104.100: bytes=32 time<1ms TTL=64
|。Reply from 172.20.104.100: bytes=32 time<1ms TTL=64
|。Reply from 172.20.104.100: bytes=32 time<1ms TTL=64
|。
|。Ping statistics for 172.20.104.100:
|。    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
|。Approximate round trip times in milli-seconds:
|。    Minimum = 0ms, Maximum = 17ms, Average = 4ms
|。
|。C:/Documents and Settings/Administrator>ping mail1.myemail.com
|。
|。Pinging mail1.myemail.com [172.20.104.100] with 32 bytes of data:
|。
|。Reply from 172.20.104.100: bytes=32 time=1ms TTL=64
|。Reply from 172.20.104.100: bytes=32 time<1ms TTL=64
|。Reply from 172.20.104.100: bytes=32 time<1ms TTL=64
|。Reply from 172.20.104.100: bytes=32 time<1ms TTL=64
|。
|。Ping statistics for 172.20.104.100:
|。    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
|。Approximate round trip times in milli-seconds:
|。    Minimum = 0ms, Maximum = 1ms, Average = 0ms
|。
|。C:/Documents and Settings/Administrator>
|____________________________________________________________________________________________________________________________________________

 


####################################################################################################################################
==========smtp认证的配置============
通过设置smtp认证,对要求转发邮件的客户端进行用户身份验证。只有通过了验证,才能接收该用户寄来的邮件并帮助转发。目前,比较常用的smtp认证机制是通过cyrus sasl包来实现的。
cyrus sasl是cyrus simple authentication and security layer的简写,它最大的功能是为应用程序提供了认证函数库。应用程序可以通过函数库所提供的功能定义认证方式,并让sasl通过与邮件服务器主机的沟通从而提供认证的功能。
默认情况下,系统会自动安装Cyrus-SASL认证包,可以用命令:rpm -qa | grep sasl来检查。
[root@localhost ~]#
[root@localhost ~]# rpm -qa | grep sasl
cyrus-sasl-md5-2.1.19-5.EL4
cyrus-sasl-plain-2.1.19-5.EL4
cyrus-sasl-gssapi-2.1.19-5.EL4
cyrus-sasl-sql-2.1.19-5.EL4
cyrus-sasl-ntlm-2.1.19-5.EL4
cyrus-sasl-2.1.19-5.EL4
cyrus-sasl-devel-2.1.19-5.EL4
[root@localhost ~]#
如果没有安装的话,用命令rpm -ivh 包文件目录来分别安装包文件


Cyrus-SASL V2版使用saslauthd这个守护进程进行密码认证,用命令saslauthd -v 来查看密码验证的方法.
[root@localhost ~]# saslauthd -v
saslauthd 2.1.19
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

[root@localhost ~]#

这里采用shadow验证方法,所以在配置文件/etc/sysconfig/saslauthd中,应修改当前系统所采用的密码验证机制为shadow,即:MECH=shadow
用命令来查看saslauthd进程是否已经运行:ps aux | grep saslauthd
启动saslauthd进程:/etc/init.d/saslauthd start
设置开机自动启动:chkconfig saslauthd on
测试saslauthd进程的认证功能
/usr/sbin/testsaslauthd -u lbt -p '123456'
其中lbt为Linux系统中的用户账户,是已经建立好的,其密码为123456
[root@localhost ~]# /usr/sbin/testsaslauthd -u lbt -p '123456'
0: OK "Success."
[root@localhost ~]#
以上表示认证功能已起作用。

============设置Postfix启用smtp认证===============
默认情况下Postfix并没有启用smtp认证机制。所以就必须配置Postfix的主配置文件/etc/postfix/main.cf。
配置如下:
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = ''
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients = yes
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous

此外,当Postfix要使用SMTP认证时,会读取/usr/lib/sasl2/smtpd.conf文件的内容,以确定所采用的认证方式,因此如果要使用saslauthd这个守护进程来进行密码认证,就必须确保有pwcheck_method: saslauthd
最后,测试Postfix是否启动了smtp认证,可采用telnet命令连接到Postfix服务器端口25来进行测试。

C:/Documents and Settings/Administrator>telnet mail1.myemail.com 25
220 mail1.myemail.com ESMTP Postfix
ehlo 163.com(用户输入)
250-mail1.myemail.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH GSSAPI PLAIN DIGEST-MD5 NTLM LOGIN CRAM-MD5
250-AUTH=GSSAPI PLAIN DIGEST-MD5 NTLM LOGIN CRAM-MD5
250 8BITMIME
221 Bye


失去了跟主机的连接。

C:/Documents and Settings/Administrator>

####################################################################


Postfix服务只是一个MTA(邮件传输代理),它只是提供SMTP服务,也就是只能提供邮件的转发及本地的分发功能。
要实现邮件的异地接收,还必须安装POP或IMAP服务。通常情况下,都是将SMTP服务和POP或IMAP服务安装在同一台主机上,那么这台主机就称为电子邮件服务器。dovecot和cyrus-imapd两个软件可以同时提供POP和IMAP服务。

======================dovecot服务的实现=========================
同样,用rpm -q dovecot来检查是否已安装
[root@localhost ~]# rpm -q dovecot
dovecot-0.99.11-4.EL4
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/perl-DBI-1.40-8.i386.rpm
準備中...                ########################################### [100%]
        已經安裝 perl-DBI-1.40-8 套件
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/mysql-4.1.20-1.RHEL4.1.i38 6.rpm
準備中...                ########################################### [100%]
        已經安裝 mysql-4.1.20-1.RHEL4.1 套件
[root@localhost ~]#

接着对dovecot服务的基本配置,其配置文件为:/etc/dovecot.conf
修该内容为:
# Protocols we want to be serving:
#  imap imaps pop3 pop3s
#protocols = imap imaps

protocols = pop3 pop3s

# IP or host address where to listen in for connections. It's not currently
# possible to specify multiple addresses. "*" listens in all IPv4 interfaces.
# "[::]" listens in all IPv6 interfaces, but may also listen in all IPv4
# interfaces depending on the operating system. You can specify ports with
# "host:port".
imap_listen = [::]
#pop3_listen = [::]
pop3_listen = [*]
"*"表示监听本机上的所有网络接口。

最后启动dovecot服务:/etc/rc.d/init.d/dovecot start
设置自启动:chkconfig --level 345 dovecot on

[root@localhost ~]# /etc/rc.d/init.d/dovecot start
启动 Dovecot Imap:Fatal: listen(110) failed: Address already in use
                                                           [失败]
[root@localhost ~]# netstat -nutlp | grep :110
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      7322/dovecot
tcp        0      0 :::110                      :::*                        LISTEN      3753/cyrus-master
[root@localhost ~]# service dovecot stop
停止 Dovecot Imap:                                        [  确定  ]
[root@localhost ~]# service dovecot start
启动 Dovecot Imap:                                        [  确定  ]
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#


====================cyrus-imapd服务的实现===========================
默认没有安装cyrus-imapd服务。
安装服务相关的rpm包有:(最好按顺序依次按照下列包文件)
cyrus-imapd-2.2.12-3.RHEL4.1.rpm
cyrus-imapd-devel-2.2.12-3.RHEL4.1.rpm
db4-utils-4.2.52-7.1.i386. rpm
perl-Cyrus-2.2.12-3.RHEL4.1.i386.rpm
cyrus-imapd-utils-2.2.12-3.RHEL4.1.i386.rpm
lm_sensors-2.8.7-2.40.3.i386.rpm


[root@localhost ~]#
[root@localhost ~]# rpm -qa | grep cyrus-imapd
cyrus-imapd-utils-2.2.12-3.RHEL4.1
cyrus-imapd-nntp-2.2.12-3.RHEL4.1
cyrus-imapd-devel-2.2.12-3.RHEL4.1
cyrus-imapd-murder-2.2.12-3.RHEL4.1
cyrus-imapd-2.2.12-3.RHEL4.1
[root@localhost ~]#
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/db4-utils-4.2.52-7.1.i386. rpm
警告:/media/cdrom/RedHat/RPMS/db4-utils-4.2.52-7.1.i386.rpm: V3 DSA 簽章:NOKEY , key ID db42a60e
準備中...                ########################################### [100%]
        已經安裝 db4-utils-4.2.52-7.1 套件
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/cyrus-imapd-utils-2.2.12-3 .RHEL4.1.i386.rpm
警告:/media/cdrom/RedHat/RPMS/cyrus-imapd-utils-2.2.12-3.RHEL4.1.i386.rpm: V3 D SA 簽章:NOKEY, key ID db42a60e
錯誤:相依性失敗:
        perl-Cyrus = 2.2.12-3.RHEL4.1 是 cyrus-imapd-utils-2.2.12-3.RHEL4.1.i386  所需要的
        perl(Cyrus::IMAP::Admin) 是 cyrus-imapd-utils-2.2.12-3.RHEL4.1.i386 所需 要的
    建議的解決方法:
        perl-Cyrus-2.2.12-3.RHEL4.1.i386.rpm
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/lm_sensors-devel-2.8.7-2.4 0.3.i386.rpm
警告:/media/cdrom/RedHat/RPMS/lm_sensors-devel-2.8.7-2.40.3.i386.rpm: V3 DSA 簽 章:NOKEY, key ID db42a60e
準備中...                ########################################### [100%]
   1:lm_sensors-devel       ########################################### [100%]
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/lm_sensors-2.8.7-2.40.3.i3 86.rpm
/media/cdrom/RedHat/RPMS/lm_sensors-2.8.7-2.40.3.i386.rpm:非 rpm 套件(或套件? ?):输入/输出错误
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/lm_sensors-2.8.7-2.40.3.i386.rpm
/media/cdrom/RedHat/RPMS/lm_sensors-2.8.7-2.40.3.i386.rpm:非 rpm 套件(或套件??):输入/输 出错误
[root@localhost ~]#
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/perl-Cyrus-2.2.12-3.RHEL4.1.i386.rpm
警告:/media/cdrom/RedHat/RPMS/perl-Cyrus-2.2.12-3.RHEL4.1.i386.rpm: V3 DSA 簽章:NOKEY, key ID db42a60e
準備中...                ########################################### [100%]
   1:perl-Cyrus             ########################################### [100%]
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/cyrus-imapd-utils-2.2.12-3.RHEL4.1.i386.rpm
警告:/media/cdrom/RedHat/RPMS/cyrus-imapd-utils-2.2.12-3.RHEL4.1.i386.rpm: V3 DSA 簽章:NOKEY, key ID db42a60e
準備中...                ########################################### [100%]
   1:cyrus-imapd-utils      ########################################### [100%]
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/lm_sensors-2.8.7-2.40.3.i386.rpm
警告:/media/cdrom/RedHat/RPMS/lm_sensors-2.8.7-2.40.3.i386.rpm: V3 DSA 簽章:NOKEY, key ID db42a60e
準備中...                ########################################### [100%]
        已經安裝 lm_sensors-2.8.7-2.40.3 套件
[root@localhost ~]#
[root@localhost ~]#

接着用/etc/sysconfig/cyrus-imapd命令来启动cyrus-imapd服务的配置文件。
/etc/cyrus.conf是cyrus-imapd服务的主要配置文件。
/etc/imapd.conf是cyrus-imapd服务中IMAP服务的配置文件。
默认情况下,只要启动cyrus-imapd服务就可以同时提供POP和IMAP服务。

但是Postfix默认不支持cyrus-imapd信箱,因此需要把Postfix与cyrus-imapd结合在一起,必须在Postfix的主配置文件/etc/postfix/main.cf中加入以下内容:
mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp

最后,启动cyrus-imapd服务并设置自启动:
注意:如果已经安装了dovecot服务,则应该先关掉dovecot服务及开机自启动,然后启动cyrus-imapd服务并设置开机自启动。
service cyrus-imapd start
chkconfig cyrus-imapd on


=======================用户邮件信箱的设置==============================
cyrus-imapd可以为每个用户创建一个邮件信箱,默认情况下,cyrus-imapd的邮件信箱位于/var/spool/imap目录下。
格式:信箱类型.名称.[.文件夹名称[.文件夹名称]]....
例如:user.lbt(收件箱),其中user表示信箱的类型为用户信箱,lbt为Linux系统中的用户账户名。则用户的发件箱(user.lbt.Sent),垃圾箱(user.lbt.Trash)和草稿箱(user.lbt.Drafts)。

为cyrus-imapd管理员账户cyrus设置密码(该账户名在安装cyrus-imapd是自动创建)
[root@localhost ~]# passwd cyrus
Changing password for user cyrus.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#


补充:起先没有装cyrus-sasl认证时,即没有配置smtp认证信息时,会出现以下出错信息:
[root@localhost bin]# /usr/bin/cyradm -u cyrus localhost
IMAP Password:
              Login failed: generic failure at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/Cyrus/IMAP/Admin.pm line 118
cyradm: cannot authenticate to server with  as cyrus

 

使用cyradm管理工具为用户创建邮箱
[root@localhost ~]# /usr/bin/cyradm -u cyrus localhost
IMAP Password:
              localhost.localdomain>
localhost.localdomain>
localhost.localdomain>
localhost.localdomain>
localhost.localdomain>
localhost.localdomain> createmailbox user.lbt
localhost.localdomain> listmailbox
user.lbt (/HasNoChildren)
localhost.localdomain> createmailbox user.lbt.Send
localhost.localdomain> createmailbox user.lbt.Trash
localhost.localdomain> createmailbox user.lbt.Drafts

设置配额,限制用户信箱使用磁盘空间的容量。
localhost.localdomain> setquota  user.lbt  5210
quota:5210
localhost.localdomain> listquota
usage: listquota root
localhost.localdomain> listquota user.lbt
 STORAGE 0/5210 (0%)

查看用户邮箱的使用情况。
localhost.localdomain> su -l cyrus -c /usr/lib/cyrus-imapd/quota
   Quota  % Used    Used Root
    5210       0       0 user.lbt
localhost.localdomain>
localhost.localdomain>

创建了用户邮箱user.lbt后,只有该用户对该邮件信箱具有完全控制的权限。即使是管理员cyrus也无权。
想要删除它,必须赋予管理员完全控制的权限(setacl命令),可以用listacl命令查看用户对该信箱的访问权限。
localhost.localdomain>
localhost.localdomain> deletemailbox user.lbt
deletemailbox: Permission denied
localhost.localdomain> setacl user.lbt cyrus all
localhost.localdomain> listacl
usage: listaclmailbox mailbox
localhost.localdomain> listacl user.lbt
lbt lrswipcda
cyrus lrswipcda
localhost.localdomain>

 


以上为电子邮件服务器的配置过程。Red Hat Enterprise Linux 4 虚拟机环境下的配置。(2010-05-03)

你可能感兴趣的:(总结邮件服务器配置过程(Red Hat Enterprise Linux 4))