搭建邮箱服务器(3) – MX服务搭建(Mail Exchanger)

在实际使用邮件系统的时候,我们往往不会仅配置一台邮件服务器。我们往往使用多台MTA,以实现邮件的分流、备份、交换等功能。这一章我们来讨论一下如何搭建一台专门负责分流转发的服务器。

1 环境介绍

我们需要使用两台服务器,一台A运行在防火墙内,一台B运行在防火墙外部。要求所有由其他邮局MTA发往本域的邮件都由B接收,并转发到A服务器并存储;A服务器接受MUA连接,用户将邮件发往A后转发到B并再次转发。正如一个邮箱的“反向代理”。此时服务器B就成为Mail Exchanger,因为其只负责邮件的路由转发。

假设我们的邮箱域名为example.com和abc.com,邮件均保存在服务器A。example.com的MX记录mx.example.com,abc.com的MX记录也是mx.example.com。mx.example.com指向服务器B地址1.2.3.4,服务器B内网地址10.0.0.1,服务器A地址10.0.0.2。

2 实现分析

2.1 安全性分析

  1. 存储邮件的服务器是A,那么我们最好将发往本域邮件的最后一跳MTA设在A上;
  2. 服务器B上也需要设置一个MTA,需要转发从外域发往本域的邮件到A服务器,从外域发往外域的邮件不允许转发;
  3. 服务器B需要接受发自本域的邮件,并进行转发,但是来自公网的、发自本域的邮件不允许转发,因为很可能是伪造的信件。

总的来说,对于收件人规则,允许本域的邮件,或者允许来自10.0.0.2的邮件,其余一律拒绝。当然也可以配置SASL认证,若需要服务器B转发,必须通过SASL认证。

而对于发件人规则,则保持默认全部允许即可。

2.2 转发规则分析

  1. 服务器B需要转发发往本域的所有邮件,那么需要配置一个列表,列出本域相关的域名以便匹配规则;
  2. 服务器A需要将所有发出的信件都发往服务器B,那么需要配置relay_host。

3 配置文件

服务器B Postfix配置文件main.cf

# 域名配置
myhostname = mx.example.com
mydestination = local
myorigin = example.com
# 网络安全配置
mynetworks = 10.0.0.2
# 收件人规则
smtpd_recipient_restrictions = 
    permit_mynetworks,
    permit_auth_destination,
    reject_unauth_destination,
    reject
# 转发域名配置
relay_domains = hash:/etc/postfix/relay_domains
# 发往本域邮件转发规则
transport_maps = hash:/etc/postfix/transport

转发域名列表relay_domains:

example.com   #domain
abc.com       #domain

这里第二列#domain为注释,是为了防止执行postmap时出现只有一列的警告。

转发规则列表transport:

example.com  relay:[10.0.0.2]:25
abc.com      relay:[10.0.0.2]:25

服务器B就配置完成了。

服务器A使用正常的搭建邮件服务器的步骤即可,只不过在main.cf中加上一句:

relay_host = 10.0.0.1

发表评论