自建邮件服务器

相关知识

邮件服务器包含两大核心功能:发邮件和收邮件。

邮件投递的过程是:

  1. 发送方邮件客户端和邮件服务器通信,发送邮件。
  2. 邮件服务器收到邮件后,对邮件进行投递:如果是不同服务器的邮件地址,需要转投。
  3. 接收方邮件客户端和邮件服务器通信,收取邮件。

以上三步过程中,端与端之间都需要通信,就需要通信协议:

  1. 发送时,邮件客户端和邮件服务器间,使用的是SMTP
    • SMTP=Simple Mail Transfer Protocol,简单邮件传输协议
    • SMTP是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。
  2. 邮件服务器间转投邮件时,使用的也是SMTP
  3. 接收时,邮件客户端和邮件服务器间,使用的是POP3或IMAP
    • POP3=Post Office Protocol 3,邮局协议的第3个版本
    • IMAP=Internet Mail Access Protocol,交互式邮件存取协议

所以,搭建一个完整的邮件服务器,要包括两部分服务:

  • 发送邮件用的SMTP服务
  • 接收邮件用的POP3、IMAP服务(可选择只用一种,推荐IMAP安全性高)

部署方案

SMTP

在网络上路由和传输电子邮件的服务叫MTA(Mail Transfer Agent,邮件传输代理)。Linux下流行的开源MTA有:

  1. Sendmail 现在也叫proofpoint(被Proofpoint, Inc 收购后,已商业化),是Linux平台上最流行也是最早的MTA。配置复杂,安全机制相对较弱。
  2. Postfix 是一款流行的跨平台MTA。它的初衷是替代Sendmail,所以借鉴了Sendmail的很多功能特性,但配置更简单、性能更好。还支持一些其他特性,包括:
    • 容器支持
    • 垃圾邮件控制
    • 支持多种协议
    • 支持数据库
    • 支持信箱
    • 邮件地址操纵
  3. Exim 是一款免费的MTA,支持类Unix系统。
  4. Qmail 简单、可靠 、高效,支持安全扩展。安装简单快速,支持邮件组,支持分用户管理邮件地址列表。支持SMTP和POP3。

POP3/IMAP

用于给最终的接收方投递邮件的服务叫MDU(Mail Delivery Agent,邮件投递代理)。Linux下流行的开源MDU有:

  1. Dovecot 是类Unix平台下一款开源的IMAP和POP3服务。 它的特点是轻量级、速度快且易于安装。
  2. UW IMAP 是一款IMAP协议服务器实现参考范例,由华盛顿大学开发。

主流方案

开源邮件服务器的主流方案是Postfix+Dovecot,其中 Postfix支持SMTP协议负责发送邮件,Dovecot支持POP3+IMAP协议负责接收邮件。

部署过程可参考:在Centos7下搭建邮件服务器

容器方案

现代的邮件服务器,除了基本的收发邮件还支持许多其他功能,如:日历、web邮件、垃圾邮件过滤等。要手动一个个集成部署这些组件服务比较麻烦。在容器化技术流行的今天,有许多大神提供了容器化的解决方案:

  • Mail-in-a-Box a mail server in a box. 只有一个镜像,集成了以下组件:
  • Mailu is a simple yet full-featured mail server as a set of Docker images. 开源免费,包含多个镜像,主要特性包括:
    • Standard email server, IMAP and IMAP+, SMTP and Submission
    • Advanced email features, aliases, domain aliases, custom routing
    • Web access, multiple Webmails and administration interface
    • User features, aliases, auto-reply, auto-forward, fetched accounts
    • Admin features, global admins, announcements, per-domain delegation, quotas
    • Security, enforced TLS, Letsencrypt!, outgoing DKIM, anti-virus scanner
    • Antispam, auto-learn, greylisting, DMARC and SPF
    • Freedom, all FOSS components, no tracker included
  • docker-mailserver A fullstack but simple mail server (smtp, imap, antispam, antivirus…). 只有配置文件,没有数据库,易于部署和升级。

DNS配置

邮件服务器部署好之后,还需要配置DNS,这样其他邮件地址服务器投递邮件时才能找到本邮件服务器。

例如:我的邮件地址是 zjy@crazy1984.com,发送方的邮件地址是fighter@163.com。那么要让163.com邮件服务器能找到crazy1984.com邮件服务器,就需要进行DNS配置。

MX

DNS配置邮件域名,要添加MX记录,可参考:How to Setup an Email Server on CentOS 7

我的MX配置:

1
2
3
记录类型:MX
主机记录:@.crazy1984.com
记录值:mx01.dm.aliyun.com

SPF

SMTP协议是个非常简单的协议,没有很好的考虑安全措施,发件人可以假冒任意地址,使得垃圾邮件和诈骗邮件横行。

SPF,全称为 Sender Policy Framework,即发件人策略框架。SPF通过查询DNS记录的方式,来检查和认证邮件发送方,因为DNS解析是不能任意假冒的。详细内容可参考:

我的SPF配置:

1
2
3
记录类型:TXT
主机记录:@.crazy1984.com
记录值:v=spf1 mx mx:mail.crazy1984.com include:spf1.dm.aliyun.com -all

以上是2018年11月前后,在研究自建邮件服务器过程中学习到的知识的一点记录,最终因为阿里云服务器端口限制问题(邮件必须relay过手审核),没有配置成功。以后找个其他云服务商试试。