您好,欢迎来到年旅网。
搜索
您的当前位置:首页postfix总则

postfix总则

来源:年旅网
…………………………………………总结邮件服务器配置过程(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服务及开机时自启动. 命令chkconfig --list sendmail

chkconfig --level 2345 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

那么无论来信的收件人地址是xxx@myemail.com,还是xxx@mail1.myemail.com都会被接收。

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= |。Reply from 172.20.104.100: bytes=32 time<1ms TTL= |。Reply from 172.20.104.100: bytes=32 time<1ms TTL= |。Reply from 172.20.104.100: bytes=32 time<1ms TTL= |。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= |。Reply from 172.20.104.100: bytes=32 time<1ms TTL= |。Reply from 172.20.104.100: bytes=32 time<1ms TTL= |。Reply from 172.20.104.100: bytes=32 time<1ms TTL= |。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)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务