CentOS 6下使用postfix搭建简单邮件服务器

介绍:
postfix是linux/unix下比较常用的开源免费邮件传输代理程序(MTA)。
下图是postfix的logo,略显猥琐。。。

服务安装:
通常情况下,CentOS默认都会安装postfix。
如果你不确定你的系统中有没有postfix可以使用如下命令查看。

yum -qa | grep postfix

若没有安装则使用如下命令安装。

yum install -y postfix

DNS配置:
邮件发送是需要DNS解析支持的,DNS服务器的配置方法参考此篇文章:

CentOS 6下使用BIND配置简单DNS服务器


最后要求DNS正向解析配置成类似如下形式,反向解析区域可不配置。“192.168.1.20”是我的邮件服务器的IP地址,请按照实际情况来做更改。

主要配置文件介绍:
postfix的配置文件存放路径为/etc/postfix,其中的主要的配置文件有两个,一个是main.cf另一个是master.cf。关于两个配置文件的说明,如下。

main.cf              //此配置文件为postfix主配置文件,决定了postfix的工作方式。
master.cf            //此配置文件用以配置postfix中各个程序的工作参数,一般在做邮件系统优化时才会用到。

postfix配置:
在配置前,我们需要先关掉系统中sendmail(sendmail也是linux/unix下常用的邮件传输代理程序)的所有服务,避免二者产生冲突。
查看是否安装了sendmail。
rpm -qa | grep sendmail
如安装了sendmail,则关闭sendmail服务,否则跳过这一步。

service sendmail stop
chkconfig sendmail off

编辑主配置文件。

vim /etc/postfix/main.cf

查找“myhostname”关键字,一般在第75行左右的位置,因软件版本差异行号可能不同。

去掉其中一个前面的注释,这里是配置postfix服务器的主机名,这个主机名必须是FQDN(完全合格域名,例如:mail.ibadboy.net)。

在第83行左右找到“mydomain”关键字。

去掉其前面的注释,并将参数修改为邮件域。
什么是邮件域?举例说明:admin@ibadboy.net这个邮箱地址中@后面的ibadboy.net就是邮件域。

在第98行左右找到“myorigin”关键字,去掉第二个“myorigin”前方注释。
这里是用于定义由本台邮件服务器寄出的每封邮件的邮件头中mail from(发信源主机)的地址。如果不设置,默认会以$myhostname也就是本地主机名这个选项的参数为值,最后是这种形式:“from  ‘user1’ <user1@mail.ibadboy.net>”,看起来是不是怪怪的?为了方便阅读,一般以$mydomain作为其参数,这样就变成了“:“from  ‘user1’ <user1@ibadboy.net>”。
需要特殊说明的是:main.cf配置文件中所有以$开头的字符串都是一个变量,变量的值就是变量名对应的选项的参数,例如$mydomin这个变量对应的值就是83行mydomin这个选项的参数。

修改后:

转到第113行,找“inet_interfaces”这个关键字,这里是定义postfix监听的接口,默认只监听本地回环接口(127.0.0.1),通常的做法是让其监听所有的接口(值为all),或者也可以使用主机名为值,要求其只监听主机名对应IP的接口。

修改后:

转到164行,找“mydestination”关键字,这里定义postfix可收信的主机名或域名。这里其实很好理解,一封邮件的目的地址是我这台服务器我就收下,否则我当然不收了。

默认的选项是不包括域名的,通常情况下需要接收主机名或域名为本机的邮件,也就是修改为选项二,如下图。

至此,一个简单的postfix邮件服务器就配置好了,我们一共对配置文件做了如下几个更改:1、指定了主机名,2、指定了邮件域,3、指定了发信源主机,4、使postfix监听所有网卡,5、设置了允许收信的主机名及域名。
保存配置后,在保证selinux和防火墙均关闭的情况下启动postfix服务。

service postfix start

服务测试:
推荐搭建完postfix后配合dovecot(MRA,邮件接收代理)一起在邮件客户端进行测试。
dovecot配置教程参考此篇文章:

CentOS 6下邮件接收代理程序——dovecot配置教程


 

sendmail开启基于sasl的smtp认证

sendmail默认是不会认证发信人身份的,这就导致你的邮件服务器可能会被人随意的发送垃圾邮件。

而开启smtp认证之后,只有认证身份的用户才可以发送邮件,这样就很好的解决了上面的安全因患。

软件包安装:

开始设置前首先要确保你的CentOS上已经安装了如下四个软件包(sasl认证相关)。

cyrus-sasl-2.1.10-4.i386.rpm
cyrus-sasl-md5-2.1.10-4.i386.rpm
cyrus-sasl-plain-2.1.22-5.el5
cyrus-sasl-devel-2.1.22-5.el5

一般CentOS 6.5系统中都会内置前两个包,我们执行安装命令安装余下两个包。

[root@localhost ~]# yum install *sasl-p*
[root@localhost ~]# yum install *sasl-d*

*sendmail配置部分:*

编辑/etc/mail/sendmail.mc文件

[root@localhost ~]# vim /etc/mail/sendmail.mc

转到第52行(因软件版本号差异,行号可能不同)可以看到如下两条语句,去掉这两行前面的注释dnl #(注:前往不要留有空格,否则报错)。

修改后如图:

TRUST_AUTH_MECH的作用是使sendmail不管access文件中如何设置, 都能relay那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件,注意这里是对需要relay的邮件进行验证,这点很重要,只有这样通过验证的邮件才会被 relay以防止sendmail服务器被滥用。

confAUTH_MECHANISMS的作用是确定系统的认证方式。Outlook Express支持的认证方式是LOGIN。

保存并退出。

生成对应的sendmail.cf文件。

[root@localhost ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

重启sendmail服务。

[root@localhost ~]# service sendmail restart

启动saslauthd服务,用于支持sasl认证。

[root@localhost ~]# service saslauthd start

至此,配置工作完成,现在开始测试吧~