/ 中存储网

centos使用postfix代替sendmail发送邮件的配置方法

2014-08-09 13:11:54 来源:中存储网

首先添加MX记录
由于MX记录添加后,可能生效要等待一段时间(通常为数分钟或数十分钟,也可能马上生效),所以在安装配置前,我们首先为域名添加MX记录。添加方法也会因域名ISP的不同而不同,但大致信息如下(例示为DNSPOD):
DNSPOD设置截图
确认MX记录的添加是否生效的方法: # host -t mx naic.cc
naic.cc mail is handled by 15 123.123.123.123(你的IP地址).

然后安装Postfix
因为用的CentOS,所有直接yum命令就可以安装了 # yum -y install postfix

配置Postfix及相关组件 对Postfix进行配置
# vi /etc/postfix/main.cf
#myhostname = host.domain.tld ← 找到此行,将等号后面的部分改写为主机名

myhostname = mail.naic.cc ← 变为此状态,设置系统的主机名
#mydomain = domain.tld ← 找到此行,将等号后面的部分改写为域名

mydomain = naic.cc ← 变为此状态,设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)
#myorigin = $mydomain ← 找到此行,将行首的#去掉

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

inet_interfaces = all ← 变为此状态,接受来自所有网络的请求(只在本机用可以不用改)
#local_recipient_maps = ← 找到此行,去掉前面的#

local_recipient_maps = ← 变为此状态,允许向任何地址发送邮件
#relay_domains = $mydestination ← 找到此行,将行首的#去掉

relay_domains = $mydestination ← 变为此状态,定义允许转发的域名
#mynetworks = 168.100.189.0/28, 127.0.0.0/8 ← 找到此行,依照自己的内网情况修改

mynetworks = 123.123.123.123 ← 变为此状态,指定内网和本地的IP地址范围(因为我只有公网IP)
#home_mailbox = Maildir/ ← 找到这一行,去掉行首的#

home_mailbox = Maildir/ ← 变为此状态,指定用户邮箱目录
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) ← 找到这一行,接此行添加如下行:
smtpd_banner = $myhostname ESMTP unknow ← 添加这一行,不显示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←(very important)
message_size_limit = 15728640 ← 规定邮件最大尺寸为15MB

配置SMTP认证的相关选项
为了提高安全性,我们不将系统用户的密码作为相应用户SMTP认证的密码,而将在后面为用户建立SMTP认证专用的密码。 # vi /usr/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd ← 找到此行,将“saslauthd”改为“auxprop”

pwcheck_method: auxprop ← 不使用系统用户密码作为用户的SMTP认证密码
# vi /etc/sysconfig/saslauthd
MECH=pam ← 找到这一行,在前面加#

#MECH=pam ← 不使用pam机制
FLAGS= ← 找到此行,在等号后面添加“sasldb”

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

建立用户的邮箱目录(单独做SMTP发信此步骤可以省略)
首先建立用户模板下的邮箱目录,以便于建立新用户时,相应用户的邮箱目录自动被建立。 # mkdir /etc/skel/Maildir ← 在用户模板下建立用户邮箱目录
# chmod 700 /etc/skel/Maildir ← 设置用户邮箱目录属性为700
然后再为用户建立相应邮箱目录。 # mkdir /home/mail/Maildir ← 为用户(这里以mail用户为例)建立邮箱目录
# chmod 700 /home/mail/Maildir ← 设置该用户邮箱目录属性为700
# chown mail. /home/mail/Maildir ← 设置该用户邮箱目录为该用户所有

为用户设置SMTP认证密码
为naic用户设置SMTP认证密码(这里的用户名和密码就是SMTP验证的用户名和密码) #saslpasswd2 -u mail.naic.cc -c naic
Password: ← 在这里输入密码(和登录一样不会显示)
Again (for verification): ← 再次输入密码

改变SALS的属性及归属
# chgrp postfix /etc/sasldb2 ← 将数据库归属改为postfix,
# chmod 640 /etc/sasldb2 ← 将数据库属性改为640

KO掉sendmail服务及设置postfix为默认MTA
因为在用Postfix作为SMTP服务器的前提下,我们不准备再用sendmail,所以一不做二不休...将sendmail服务关掉。 # /etc/rc.d/init.d/sendmail stop
Shutting down sendmail:         [ OK ]
Shutting down sm-client:         [ OK ]
# chkconfig sendmail off ← 关闭sendmail自启动
# chkconfig --list sendmail ← 确认sendmail自启动已被关闭(都为off就OK)
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off
然后再将默认的MTA设置为Postfix。 # alternatives –config mta ← 设置默认MTA
There are 2 programs which provide ‘mta’.
Selection Command
———————————————–
*+ 1 /usr/sbin/sendmail.sendmail ← 当前状态:sendmail为默认MTA
2 /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 2 ← 在这里输入2,使Postfix成为默认MTA

启动相应服务
最后,启动SMTP认证及Postfix服务,并设置相应服务为自启动。 # chkconfig saslauthd on ← 将SMTP-Auth设置为自启动
# chkconfig --list saslauthd ← 确认SMTP-Auth服务状态
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← 确认2~5为on的状态就OK
# /etc/rc.d/init.d/saslauthd start ← 启动SMTP-Auth
Starting saslauthd:           [ OK ]
# chkconfig postfix on ← 将Postfix设置为自启动
# chkconfig --list postfix ← 确认Postfix服务状态
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← 确认2~5为on的状态就OK
# /etc/rc.d/init.d/postfix start ← 启动Postfix
Starting postfix:            [ OK ]