在CentOS中,默认的邮件服务器(SMTP方面)是sendmail,但sendmail有若干的缺点,比如,配置复杂、安全漏洞曾被多次发现--并且依然存在隐患、邮件发送速度慢等等,这里就不再一一叙述。而另一个被广泛应用于邮件服务方面的“Postfix”的缺点就少得多,或者说它就是针对于sendmail的缺点,而被设计的。对应sendmail的短处,它在各方面也比较成熟。所以,无特殊要求,这里不推荐用sendmail来构建邮件服务器。本站介绍的邮件服务器配置方法,也将基于Postfix。
1. 安装Postfix。
[root@sample ~]# yum -y install postfix ← 在线安装Postfix |
2. 对Postfix进行配置
[root@sample ~]# vi /etc/postfix/main.cf ←
编辑Postfix的配置文件
#myhostname = host.domain.tld ← 找到此行,将等号后面的部分改写为主机名,注意这边需要写域名,不能写ip地址 ↓ 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/ ← 变为此状态,指定用户邮箱目录
# SHOW SOFTWARE VERSION OR NOT
#
# The smtpd_banner parameter specifies the text that follows the 220
# code in the SMTP server's greeting banner. Some people like to see
# the mail version advertised. By default, Postfix shows no version.
#
# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care.
#
#smtpd_banner = $myhostname ESMTP $mail_name
#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
message_size_limit = 15728640 ← 规定邮件最大尺寸为15MB
|
3. 配置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
4.
然后创建新用户
/usr/sbin/useradd myuser
passwd myuser
设置密码
首先建立用户模板下的邮箱目录,以便于建立新用户时,相应用户的邮箱目录自动被建立。
[root@sample ~]# mkdir /home/myuser/Maildir ←
在用户模板下建立用户邮箱目录
[root@sample ~]# chmod 700 /home/myuser/Maildir ←
设置用户邮箱目录属性为700 |
5. 如果有用已存在,然后再为已经存在的用户建立相应邮箱目录。
[root@sample ~]# mkdir /home/myuser/Maildir ← 为用户(这里以centospub用户为例)建立邮箱目录
[root@sample ~]# chmod 700 /home/myuser/Maildir ← 设置该用户邮箱目录属性为700
[root@sample ~]# chown centospub. /home/myuser/Maildir ← 设置该用户邮箱目录为该用户所有 |
6. 为用户设置SMTP认证密码
[root@sample ~]# /usr/sbin/saslpasswd2 -u sample.centospub.com -c
centospub ← 为centospub用户设置SMTP认证密码
Password: ← 在这里输入密码(不会显示)
Again (for verification): ← 再次输入密码 |
7. 改变SALS的属性及归属
[root@sample ~]# chgrp postfix /etc/sasldb2 ← 将数据库归属改为postfix,
[root@sample ~]# chmod 640 /etc/sasldb2 ← 将数据库属性改为640 |
8. 关闭sendmail服务及设置默认MTA
因为在用Postfix作为SMTP服务器的前提下,我们不准备再用sendmail,所以将sendmail服务关掉,以确保安全及节省系统资源。
[root@sample ~]# /etc/rc.d/init.d/sendmail stop ← 关闭sendmail服务
Shutting down sendmail: [ OK ]
Shutting down sm-client: [ OK ]
[root@sample ~]# /sbin/chkconfig sendmail off ← 关闭sendmail自启动
[root@sample ~]# /sbin/chkconfig --list sendmail ← 确认sendmail自启动已被关闭(都为off就OK)
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off
|
9. 最后,启动SMTP认证及Postfix服务,并设置相应服务为自启动。
[root@sample ~]# /sbin/chkconfig saslauthd on ← 将SMTP-Auth设置为自启动
[root@sample ~]# /sbin/chkconfig --list saslauthd ← 确认SMTP-Auth服务状态
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← 确认2~5为on的状态就OK
[root@sample ~]# /etc/rc.d/init.d/saslauthd start ← 启动SMTP-Auth
Starting saslauthd: [ OK ]
[root@sample ~]# /sbin/chkconfig postfix on ← 将Postfix设置为自启动
[root@sample ~]# /sbin/chkconfig --list postfix ← 确认Postfix服务状态
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← 确认2~5为on的状态就OK
[root@sample ~]# /etc/rc.d/init.d/postfix start ← 启动Postfix
Starting postfix: [ OK ] |
参考: http://www.centospub.com/make/postfix_smtp.html
http://centossrv.com/postfix.shtml
http://fedorasrv.com/postfix.shtml