CentOS安装配置Postfix邮件服务器

源文地址:[url]http://www.5dmail.net/html/2010-7-22/2010722110432.htm

[/url]

由于MX记录添加后,可能生效要等待一段时间(通常为数分钟或数十分钟,也可能马上生效),所以在安装配置前,我们首先为动态域名添加MX记录。添加方法也会因域名ISP的不同而不同,但大致信息如下:

mxmail.centospub.com.10

amail服务器的IP地址

mail为别名,10为优先度。这个别名指向服务器的IP地址.

确认MX记录的添加是否生效的方法:

[root@sample~]#host-tmxcentospub.com

centospub.commailishandledby10mail.centospub.com.←确认MX记录生效

安装Postfix

然后,安装Postfix。

[root@sample~]#yum-yinstallpostfix←在线安装Postfix

SettingupInstallProcess

Settinguprepositories

dag100%|=========================|1.1kB00:00

update100%|=========================|951B00:00

base100%|=========================|1.1kB00:00

addons100%|=========================|951B00:00

extras100%|=========================|1.1kB00:00

Readingrepositorymetadatainfromlocalfiles

primary.xml.gz100%|=========================|28kB00:04

update:##################################################84/84

Added84newpackages,deleted1499oldin3.44seconds

primary.xml.gz100%|=========================|157B00:00

Added0newpackages,deleted1499oldin1.97seconds

primary.xml.gz100%|=========================|26kB00:00

extras:##################################################102/102

Added102newpackages,deleted1499oldin2.73seconds

ReducingDagRPMRepositoryforRedHatEnterpriseLinuxtoincludedpackagesonly

Finished

Parsingpackageinstallarguments

ResolvingDependencies

–>Populatingtransactionsetwithselectedpackages.Pleasewait.

—>Downloadingheaderforpostfixtopackintotransactionset.

postfix-2.2.10-1.RHEL4.2.100%|=========================|40kB00:00

—>Packagepostfix.i3862:2.2.10-1.RHEL4.2settobeupdated

–>Runningtransactioncheck

DependenciesResolved

=============================================================================

PackageArchVersionRepositorySize

=============================================================================

Installing:

postfixi3862:2.2.10-1.RHEL4.2base3.0M

TransactionSummary

=============================================================================

Install1Package(s)

Update0Package(s)

Remove0Package(s)

Totaldownloadsize:3.0M

DownloadingPackages:

(1/1):postfix-2.2.10-1.R100%|=========================|3.0MB00:05

RunningTransactionTest

FinishedTransactionTest

TransactionTestSucceeded

RunningTransaction

Installing:postfix#########################[1/1]

Installed:postfix.i3862:2.2.10-1.RHEL4.2

Complete!

配置Postfix及相关组件

[1]对Postfix进行配置。

[root@sample~]#vi/etc/postfix/main.cf←编辑Postfix的配置文件

#myhostname=host.domain.tld←找到此行,将等号后面的部分改写为主机名

myhostname=sample.centospub.com←变为此状态,设置系统的主机名

#mydomain=domain.tld←找到此行,将等号后面的部分改写为域名

mydomain=centospub.com←变为此状态,设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)

#myorigin=$mydomain←找到此行,将行首的#去掉

myorigin=$mydomain←变为此状态,将发信地址“@”后面的部分设置为域名(非系统主机名)

inet_interfaces=localhost←找到此行,将“localhost”改为“all”

inet_interfaces=all←变为此状态,接受来自所有网络的请求

mydestination=$myhostname,localhost.$mydomain,localhost←找到此行,在行为添加“$mydomain”

mydestination=$myhostname,localhost.$mydomain,localhost,$mydomain←变为此状态,指定发给本地邮件的域名

#relay_domains=$mydestination←找到此行,将行首的#去掉

relay_domains=$mydestination←变为此状态,定义允许转发的域名

#mynetworks=168.100.189.0/28,127.0.0.0/8←找到此行,依照自己的内网情况修改

mynetworks=168.100.189.0/28,127.0.0.0/8←变为此状态,指定内网和本地的IP地址范围

#home_mailbox=Maildir/←找到这一行,去掉行首的#

home_mailbox=Maildir/←变为此状态,指定用户邮箱目录

#SHOWSOFTWAREVERSIONORNOT

#

#Thesmtpd_bannerparameterspecifiesthetextthatfollowsthe220

#codeintheSMTPserver’sgreetingbanner.Somepeopleliketosee

#themailversionadvertised.Bydefault,Postfixshowsnoversion.

#

#YouMUSTspecify$myhostnameatthestartofthetext.Thatisan

#RFCrequirement.Postfixitselfdoesnotcare.

#

#smtpd_banner=$myhostnameESMTP$mail_name

#smtpd_banner=$myhostnameESMTP$mail_name($mail_version)←找到这一行,接此行添加如下行:

smtpd_banner=$myhostnameESMTPunknow←添加这一行,不显示SMTP服务器的相关信息

在配置文件的文尾,添加如下行:

smtpd_sasl_auth_enable=yes←服务器使用SMTP认证

smtpd_sasl_local_domain=$myhostname←指定SMTP认证的本地域名(主机名)

smtpd_sasl_security_options=noanonymous←不允许匿名的方式认证

smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

smtpd_sasl_security_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination←(veryimportant)

message_size_limit=15728640←规定邮件最大尺寸为15MB

[2]配置SMTP认证的相关选项

为了提高安全性,我们不将系统用户的密码作为相应用户SMTP认证的密码,而将在后面为用户建立SMTP认证专用的密码。

[root@sample~]#vi/usr/lib/sasl2/smtpd.conf←编辑SMTP认证的配置文件

pwcheck_method:saslauthd←找到此行,将“saslauthd”改为“auxprop”

pwcheck_method:auxprop←不使用系统用户密码作为用户的SMTP认证密码

[root@sample~]#vi/etc/sysconfig/saslauthd

MECH=shadow←找到这一行,在前面加#

#MECH=shadow←不使用shadow机制

FLAGS=←找到此行,在等号后面添加“sasldb”

FLAGS=sasldb←定义认证方式为sasldb2

[3]建立用户的邮箱目录

首先建立用户模板下的邮箱目录,以便于建立新用户时,相应用户的邮箱目录自动被建立。

[root@sample~]#mkdir/etc/skel/Maildir←在用户模板下建立用户邮箱目录

[root@sample~]#chmod700/etc/skel/Maildir←设置用户邮箱目录属性为700

然后再为已经存在的用户建立相应邮箱目录。

[root@sample~]#mkdir/home/centospub/Maildir←为用户(这里以centospub用户为例)建立邮箱目录

[root@sample~]#chmod700/home/centospub/Maildir←设置该用户邮箱目录属性为700

[root@sample~]#chowncentospub./home/centospub/Maildir←设置该用户邮箱目录为该用户所有

[4]为用户设置SMTP认证密码

[root@sample~]#saslpasswd2-usample.centospub.com-ccentospub←为centospub用户设置SMTP认证密码

Password:←在这里输入密码(不会显示)

Again(forverification):←再次输入密码

[5]改变SALS的属性及归属

[root@sample~]#chgrppostfix/etc/sasldb2←将数据库归属改为postfix,

[root@sample~]#chmod640/etc/sasldb2←将数据库属性改为640

[6]关闭sendmail服务及设置默认MTA

因为在用Postfix作为SMTP服务器的前提下,我们不准备再用sendmail,所以将sendmail服务关掉,以确保安全及节省系统资源。

[root@sample~]#/etc/rc.d/init.d/sendmailstop←关闭sendmail服务

Shuttingdownsendmail:        [OK]

Shuttingdownsm-client:        [OK]

[root@sample~]#chkconfigsendmailoff←关闭sendmail自启动

[root@sample~]#chkconfig–listsendmail←确认sendmail自启动已被关闭(都为off就OK)

sendmail0:off1:off2:off3:off4:off5:off6:off

然后再将默认的MTA设置为Postfix。

[root@sample~]#alternatives–configmta←设置默认MTA

Thereare2programswhichprovide‘mta’.

SelectionCommand

———————————————–

*+1/usr/sbin/sendmail.sendmail←当前状态:sendmail为默认MTA

2/usr/sbin/sendmail.postfix

Entertokeepthecurrentselection[+],ortypeselectionnumber:2←在这里输入2,使Postfix成为默认MTA

启动相应服务

最后,启动SMTP认证及Postfix服务,并设置相应服务为自启动。

[root@sample~]#chkconfigsaslauthdon←将SMTP-Auth设置为自启动

[root@sample~]#chkconfig–listsaslauthd←确认SMTP-Auth服务状态

saslauthd0:off1:off2:on3:on4:on5:on6:off←确认2~5为on的状态就OK

[root@sample~]#/etc/rc.d/init.d/saslauthdstart←启动SMTP-Auth

Startingsaslauthd:          [OK]

[root@sample~]#chkconfigpostfixon←将Postfix设置为自启动

[root@sample~]#chkconfig–listpostfix←确认Postfix服务状态

postfix0:off1:off2:on3:on4:on5:on6:off←确认2~5为on的状态就OK

[root@sample~]#/etc/rc.d/init.d/postfixstart←启动Postfix

Startingpostfix:           [OK]

POP/IMAP服务器的构建

POP/IMAP是MUA从邮件服务器中读取邮件时使用的协议。其中,与POP3是从邮件服务器中下载邮件比起来,IMAP4则是将邮件留在服务器端直接对邮件进行管理、操作。这里,我们用Dovecot来实现对POP3及IMAP4等协议支持的邮件接收服务器的搭建。

Dovecot是一个比较新的软件,由TimoSirainen开发,最初发布于2002年7月。作者将安全性考虑在第一,所以Dovecot在安全性方面比较出众。另外,Dovecot支持多种认证方式,所以在功能方面也比较符合一般的应用。

---------------------------------------------------------------------------------------------------------------------------------------------------

首先,安装Dovecot

[root@sample~]#yum-yinstalldovecot ←在线安装Dovecot

SettingupInstallProcess

Settinguprepositories

dag100%|=========================|1.1kB00:00

update100%|=========================|951B00:00

base100%|=========================|1.1kB00:00

addons100%|=========================|951B00:00

extras100%|=========================|1.1kB00:00

Readingrepositorymetadatainfromlocalfiles

Parsingpackageinstallarguments

ResolvingDependencies

-->Populatingtransactionsetwithselectedpackages.Pleasewait.

--->Downloadingheaderfordovecottopackintotransactionset.

dovecot-0.99.11-4.EL4.i38100%|=========================|15kB00:00

--->Packagedovecot.i3860:0.99.11-4.EL4settobeupdated

-->Runningtransactioncheck

-->ProcessingDependency:libmysqlclient.so.14(libmysqlclient_14)forpackage:dovecot

-->ProcessingDependency:libpq.so.3forpackage:dovecot

-->ProcessingDependency:libmysqlclient.so.14forpackage:dovecot

-->RestartingDependencyResolutionwithnewchanges.

-->Populatingtransactionsetwithselectedpackages.Pleasewait.

--->Downloadingheaderforpostgresql-libstopackintotransactionset.

postgresql-libs-7.4.13-2.100%|=========================|11kB00:00

--->Packagepostgresql-libs.i3860:7.4.13-2.RHEL4.1settobeupdated

--->Downloadingheaderformysqltopackintotransactionset.

mysql-4.1.20-1.RHEL4.1.i3100%|=========================|35kB00:00

--->Packagemysql.i3860:4.1.20-1.RHEL4.1settobeupdated

-->Runningtransactioncheck

-->ProcessingDependency:perl(DBI)forpackage:mysql

-->RestartingDependencyResolutionwithnewchanges.

-->Populatingtransactionsetwithselectedpackages.Pleasewait.

--->Downloadingheaderforperl-DBItopackintotransactionset.

perl-DBI-1.40-8.i386.rpm100%|=========================|11kB00:00

--->Packageperl-DBI.i3860:1.40-8settobeupdated

-->Runningtransactioncheck

DependenciesResolved

------------------------------------------------------------------------------------------------------

PackageArchVersionRepositorySize

------------------------------------------------------------------------------------------------------

Installing:

dovecoti3860.99.11-4.EL4base612k

Installingfordependencies:

mysqli3864.1.20-1.RHEL4.1base2.9M

perl-DBIi3861.40-8base466k

postgresql-libsi3867.4.13-2.RHEL4.1base146k

TransactionSummary

------------------------------------------------------------------------------------------------------

Install4Package(s)

Update0Package(s)

Remove0Package(s)

Totaldownloadsize:4.1M

DownloadingPackages:

(1/4):dovecot-0.99.11-4.100%|=========================|612kB00:00

(2/4):postgresql-libs-7.100%|=========================|146kB00:00

(3/4):mysql-4.1.20-1.RHE100%|=========================|2.9MB00:02

(4/4):perl-DBI-1.40-8.i3100%|=========================|466kB00:00

RunningTransactionTest

FinishedTransactionTest

TransactionTestSucceeded

RunningTransaction

Installing:perl-DBI#########################[1/4]

Installing:mysql#########################[2/4]

Installing:postgresql-libs#########################[3/4]

Installing:dovecot#########################[4/4]

Installed:dovecot.i3860:0.99.11-4.EL4

DependencyInstalled:mysql.i3860:4.1.20-1.RHEL4.1perl-DBI.i3860:1.40-8postgresql-libs.i3860:7.4.13-2.RHEL4.1

Complete!

---------------------------------------------------------------------------------------------------------------------------------------------------

然后,修改相应配置文件,配置Dovecot

[root@sample~]#vi/etc/dovecot.conf ←编辑Dovecot的配置文件

#protocols=imapimaps ←找到这一行,将协议设置为imap与pop3

protocols=imappop3 ←变为此状态

#default_mail_env= ←找到这一行,定义邮件目录

default_mail_env=maildir:~/Maildir ←定义邮件目录为用户目录下的Maildir目录

---------------------------------------------------------------------------------------------------------------------------------------------------

添加防火墙规则

由于POP3协议与IMAP4协议要分别用到110号和143号端口,所以在启动服务前,配置防火墙,开通这两个端口。

[root@sample~]#vi/etc/sysconfig/iptables ←编辑防火墙规则

-ARH-Firewall-1-INPUT-mstate--stateNEW-mtcp-ptcp--dport25-jACCEPT ←找到此行,接着添加如下两行:

-ARH-Firewall-1-INPUT-mstate--stateNEW-mtcp-ptcp--dport110-jACCEPT ←允许POP使用的110号端口

-ARH-Firewall-1-INPUT-mstate--stateNEW-mtcp-ptcp--dport143-jACCEPT ←允许IMAP使用的143号端口

[root@sample~]#/etc/rc.d/init.d/iptablesrestart ←重新启动防火墙,使新的设置生效

Flushingfirewallrules:         [OK]

SettingchainstopolicyACCEPT:filter  [OK]

Unloadingiptablesmodules:      [OK]

Applyingiptablesfirewallrules:     [OK]

---------------------------------------------------------------------------------------------------------------------------------------------------

最后,启动Dovecot,并将其设置为自启动。

[root@sample~]#chkconfigdovecoton ←设置Dovecot为自启动

[root@sample~]#chkconfig--listdovecot

dovecot0:off1:off2:on3:on4:on5:on6:off ←确认2~5为on的状态就OK

[root@sample~]#/etc/rc.d/init.d/dovecotstart ←启动Dovecot服务

StartingDovecotImap:       [OK]

参考:

http://wiki.centos.org/HowTos/postfix