相关知识
邮件服务器包含两大核心功能:发邮件和收邮件。
邮件投递的过程是:
- 发送方邮件客户端和邮件服务器通信,发送邮件。
- 邮件服务器收到邮件后,对邮件进行投递:如果是不同服务器的邮件地址,需要转投。
- 接收方邮件客户端和邮件服务器通信,收取邮件。
以上三步过程中,端与端之间都需要通信,就需要通信协议:
- 发送时,邮件客户端和邮件服务器间,使用的是SMTP
- SMTP=Simple Mail Transfer Protocol,简单邮件传输协议
- SMTP是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。
- 邮件服务器间转投邮件时,使用的也是SMTP
- 接收时,邮件客户端和邮件服务器间,使用的是POP3或IMAP
- POP3=Post Office Protocol 3,邮局协议的第3个版本
- IMAP=Internet Mail Access Protocol,交互式邮件存取协议
所以,搭建一个完整的邮件服务器,要包括两部分服务:
- 发送邮件用的SMTP服务
- 接收邮件用的POP3、IMAP服务(可选择只用一种,推荐IMAP安全性高)
部署方案
SMTP
在网络上路由和传输电子邮件的服务叫MTA(Mail Transfer Agent,邮件传输代理)。Linux下流行的开源MTA有:
- Sendmail 现在也叫proofpoint(被Proofpoint, Inc 收购后,已商业化),是Linux平台上最流行也是最早的MTA。配置复杂,安全机制相对较弱。
- Postfix 是一款流行的跨平台MTA。它的初衷是替代Sendmail,所以借鉴了Sendmail的很多功能特性,但配置更简单、性能更好。还支持一些其他特性,包括:
- 容器支持
- 垃圾邮件控制
- 支持多种协议
- 支持数据库
- 支持信箱
- 邮件地址操纵
- Exim 是一款免费的MTA,支持类Unix系统。
- Qmail 简单、可靠 、高效,支持安全扩展。安装简单快速,支持邮件组,支持分用户管理邮件地址列表。支持SMTP和POP3。
POP3/IMAP
用于给最终的接收方投递邮件的服务叫MDU(Mail Delivery Agent,邮件投递代理)。Linux下流行的开源MDU有:
主流方案
开源邮件服务器的主流方案是Postfix+Dovecot,其中 Postfix支持SMTP协议负责发送邮件,Dovecot支持POP3+IMAP协议负责接收邮件。
部署过程可参考:在Centos7下搭建邮件服务器
容器方案
现代的邮件服务器,除了基本的收发邮件还支持许多其他功能,如:日历、web邮件、垃圾邮件过滤等。要手动一个个集成部署这些组件服务比较麻烦。在容器化技术流行的今天,有许多大神提供了容器化的解决方案:
- Mail-in-a-Box a mail server in a box. 只有一个镜像,集成了以下组件:
- SMTP (postfix), IMAP (dovecot), CardDAV/CalDAV (Nextcloud), Exchange ActiveSync (z-push)
- Webmail (Roundcube), static website hosting (nginx)
- Spam filtering (spamassassin), greylisting (postgrey)
- DNS (nsd4) with SPF, DKIM (OpenDKIM), DMARC, DNSSEC, DANE TLSA, and SSHFP records automatically set
- Backups (duplicity), firewall (ufw), intrusion protection (fail2ban), system monitoring (munin)
- 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 | 记录类型:MX |
SPF
SMTP协议是个非常简单的协议,没有很好的考虑安全措施,发件人可以假冒任意地址,使得垃圾邮件和诈骗邮件横行。
SPF,全称为 Sender Policy Framework,即发件人策略框架。SPF通过查询DNS记录的方式,来检查和认证邮件发送方,因为DNS解析是不能任意假冒的。详细内容可参考:
我的SPF配置:
1 | 记录类型:TXT |
以上是2018年11月前后,在研究自建邮件服务器过程中学习到的知识的一点记录,最终因为阿里云服务器端口限制问题(邮件必须relay过手审核),没有配置成功。以后找个其他云服务商试试。