自建邮箱不完全理论指南

1. 开源邮箱项目

  • Poste . io官网地址:poste.io
    • 免费版:功能基本完全,包括基本的反病毒与反垃圾邮件功能
    • 收费版:增加高级可视化统计功能,包括发件、收件等统计
    • 后台管理:全英文,无法设置中文;内置nginx,配置反向代理时建议仔细阅读官方文档建议
    • 网页邮箱:使用Roundcube作为webmail client,界面UI简洁优雅,有一定的设计感,但部分内容汉化不全;自动显示中文界面;
  • Mailu官网地址:mailu.io
    • 有网页邮箱,网页及后台均支持中文;
    • 配置项复杂繁多,但官网支持通过自定义选项自动生成docker-compose.yaml及.env配置文件,配置上总体来说较方便;
    • docker安装镜像位于ghcr . io,国内服务器基本上无法成功拉取;
  • Docker Mailserver官网地址:docker-mailserver.github.io
    • 没有WebUI,基本所有的设置均需要使用命令行,包括新增用户
    • 其余不甚了解
  • iRedMail官网地址:iRedMail Documentations
    • 官方不提供docker官方镜像,官方文档安装方式为shell脚本
    • 安装时需命令行手动设置DMARC及证书
    • 同样使用Roundcube作为webmail client,但后台较为丑陋

2. 邮箱服务常用协议及端口

协议端口说明
SMTP25/465/587- 简单邮件传输协议(Simple Mail Transfer Protocol)
- 25端口是向其他邮箱服务器发件的端口
- 465端口SSL加密,可以防止发送者抵赖
- 587端口(TLS)是客户端与服务器交互的推荐端口
POP3110/995邮局协议(Post Office Protocol),用于邮件接收,独立工作视图,默认情况下邮件接收后将在服务器端删除,某些客户端可以设置服务器端保留邮件
IMAP143/993邮件接收协议,客户端与服务器端的双向交互协议,实现所有客户端同一工作视图

3. 配置过程

3.1 域名解析设置

类型主机记录记录值说明
AmailIP address
MX@mail . domain . com
CNAMEsmtpmail . domain . com
CNAMEpopmail . domain . com
CNAMEimapmail . domain . com
TXT@详见SPF设置SPF
TXT...详见DKIM设置DKIM
TXT_dmarc详见DMARC设置DMARC

3.2 服务器准备

  1. 选购服务器:
    • 尽量不选择灰色产业的第三方服务器,IP尽量没有不良建站记录;
    • 选择开放25端口,且支持申请rDNS/PTR(反向域名解析)的服务商;
    • 常见ISP服务器特点:
      • 腾讯云轻量云服务器开放25端口,但不支持PTR;
      • 阿里云服务器网传封禁25端口;
      • 搬瓦工后台可直接设置PTR;
  2. 发件地址与宣称地址需一致:
    • 若发件IP地址与域名IP地址不一致则影响信誉分,对内网穿透及反向代理方式建站有所限制;
    • 若想要使用内网机器等代理服务器发件,可以考虑邮箱服务的25等端口开启代理至域名解析的服务器,或详细配置SPF记录;
  3. 设置服务器主机名Hostname:
    • 修改/etc/hostname/etc/hosts中的旧主机名为mail.domain.com,重启后即修改为新的主机名。主机名与域名不一致可能会影响邮箱评分;
  4. 设置服务器时区:
    • Ubuntu执行timedatectl set-timezone Asia/Shanghai设置时区为上海,保证邮件系统记录时间正常;
    • 其它非Debian系的系统请自行修改时区;
  5. 测试服务器25端口是否连通
    • 25端口是不同邮箱服务器之间发件使用的端口,若25端口不开放,将导致仅能接收邮件,不能向其他邮箱发送邮件
    • 通过命令行测试25端口连通性代码如下:
    #测试服务器是否开启25端口
    telnet smtp.qq.com 25
    
    #若端口通畅,则显示如下
    Trying 183.47.101.192...
    Connected to smtp.qq.com.
    Escape character is '^]'.
    220 newxmesmtplogicsvrszb6-0.qq.com XMail Esmtp QQ Mail Server.
    #按CTRL+]中断连接,再输入quit可退出telnet
    
    #若端口关闭,则一直阻塞
    Trying 183.47.101.192...
    #按CTRL+C中断连接
    

3.3 邮箱服务程序安装

  1. 安装docker环境,DockerCE官方安装步骤(非docker则跳过)
  2. 参照各项目官方安装步骤完成安装:
  3. 访问web进入后台,完成相关设置。

3.4 设置SPF记录

3.4.1 设置方式

在域名解析添加一条TXT的@记录,记录值为v=spf1 mx a:mail.domain.com ~all,具体含义如下文:

常见最简单的SPF记录为v=spf1 mx ~all。根据上述网站对于SPF定义的说明,v=spf1意为声明这是一条SPF记录,mx是定义的一条规则,意为所有域的MX记录对应的A记录按照MX优先级进行验证;如果客户端IP在这些记录中,那么该机制匹配;如果没有指定域,则使用当前域。~all表示在前方规则作用范围外的所有情况,全部拒绝。

上述记录会授权该域名下所有邮箱,即发件域名为*.domain.com的邮件均在许可范围。若想限定在某个域,则可设置为v=spf1 mx a:mail.domain.com ~all,意为只有mail.domain.com下的邮件在许可范围,许可范围相对较窄。

若想将发件许可限制在某个具体IP地址,则可设置为v=spf1 mx ip4:x.x.x.x ~all。即仅有该IP地址下发出的邮件在SPF记录的声明许可范围内。

3.4.2 SPF的由来

当前 Email 通信,还是在使用 SMTP 这个协议。SMTP 的全称为 Simple Mail Transfer Protocol,即简单邮件传输协议。正如它的名字锁暗示的,SMTP ,本身并没有很好的安全措施,发件人的邮箱地址是可以由发信方任意声明的,在垃圾和诈骗邮件横行的今天,这显然是极不安全的。发件人策略框架(Sender Policy Framework, SPF)出现的目的,就是为了防止随意伪造发件人[1]。

SPF记录是DNS中的TXT记录,当在DNS中定义了域名的SPF记录后,为了确认邮件声称发件人不是伪造的,邮件接收方首先检查邮件域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录中,若包含,则认为是一封正确的邮件,否则认为是一封伪造的邮件并退回,或将其标记为垃圾/仿冒邮件。 设置正确的SPF记录可以提高邮件系统发送外域邮件的成功率,也可以一定程度上防止被假冒域名发送邮件[2]。

SPF结构及各标记含义的完整定义在SPF官方网站 (open-spf.org)[3]中有详尽阐述(英文);而在《邮件伪造之SPF防范全解析》一文[2]中,作者nwatch将官方网站上的大部分内容翻译成了中文。

3.5 设置DKIM

3.5.1 设置方式

现代邮箱框架安装完成后,在管理员后台大多能找到DKIM相关设置,点击生成DKIM密钥后,按照提示将密钥配置到域名TXT类型解析中。若为无web管理后台的邮箱服务程序,请按照官方文档通过命令行设置

3.5.2 DKIM概述

域名密钥识别邮件标准(DomainKeys Identified Mail,DKIM)同样是为了防止假冒域名发邮件而诞生的一种邮件认证标准。DKIM 的基本工作原理是基于传统的非对称密钥认证方式,公钥将会存放在 DNS 中,而私钥会存放在寄信服务器中。数字签名会自动产生,并依附在邮件头中,发送到寄信者的服务器里。公钥则放在DNS服务器上,供自动获得。收信的服务器,将会收到夹带在邮件头中的签名和在DNS上自己获取公钥,然后进行比对,比较寄信者的域名是否合法,如果不合法,则判定为垃圾邮件[4]。

3.6 设置反向域名解析

3.6.1 设置方式

缩写为rDNS或PTR。不同ISP提供的设置方式不一致,常见ISP设置PTR特点如下:

  • 腾讯云、阿里云的PTR一般为增值服务,需要付费购买且价格不菲,购买后可在DNS设置面板找到PTR字样的设置界面;
  • 徕卡云需要发送工单进行申请;
  • 搬瓦工VPS管理后台即可直接设置PTR记录

3.6.2 反向域名解析概述

反向域名解析(Reverse DNS Lookup)是一种通过IP地址查询对应域名的过程。在互联网中,每个设备都有一个唯一的IP地址,而域名则是人们更容易记忆和理解的标识方式。正向域名解析通过域名查找IP地址,而反向域名解析则实现了相反的过程。

通过进行反向域名解析,可以追溯特定IP地址背后的主机名或域名。这对于网络管理、安全监控和故障排查非常重要。例如,在网络安全领域,分析恶意活动时,追溯IP地址的反向解析可揭示与攻击相关的域名,有助于追踪攻击者的行踪和采取相应的防御措施。

在邮箱服务应用中,设置反向域名解析可以大幅度提高邮件的可信度,能很大程度上避免邮件造假。

3.7 设置DMARC

在域名解析设置一条主机记录为_dmarc、记录值为v=DMARC1; p=none; rua=mailto:dmarc-reports@domain.com的TXT类型记录,意为若向其他邮箱发件后,上述SPF、DKIM校验失败,怀疑为伪造邮件,则向记录中设置的邮箱(这里设置为dmarc-reports@domain.com)发送反馈邮件。

4. 邮箱评分测试

完成上述安装配置过程之后,自建的邮箱服务即可正常投入使用。此时应进行邮箱评分测试,以评估该自建邮箱发送的邮件被识别为垃圾邮件的概率。常用的邮箱评分网站为SpamRATSmail-tester.com。以mail-tester为例,访问测试网站后,按照提示用自建邮箱给指定的地址发送一封邮件(邮件内容及格式要正式)后,点击查看邮件得分,即可查看评分高低,以及改进建议。一般评分>5分即可正常被接收;若评分过低可按照网站建议进行相应优化。

一般而言,设置好hostname、SPF、DKIM、DMARC,即使没有设置反向域名解析,邮箱评分也可以达到8.9分,只要邮箱的顶级域名不是.xyz等较为“奇怪”的顶级域名,即使是Gmail也不会标记为垃圾邮件。

5. 拓展阅读

[1]. MSFTTracyP, etc.Microsoft 365 如何使用发件人策略框架 (SPF) 来防止欺骗[OL].Microsoft Learn.(2023-06-16).https://learn.microsoft.com/zh-cn/microsoft-365/security/office-365-security/email-authentication-spf-configure?view=o365-worldwide

参考文献

[1].Renfei Song.SPF 记录:原理、语法及配置方法简介[OL].Renfei Song’s Blog.(2014-02-17).https://www.renfei.org/blog/introduction-to-spf.html
[2]. nwatch.邮件伪造之SPF防范全解析[OL].知乎.(2020-10-06).https://zhuanlan.zhihu.com/p/262143994
[3].SPF: SPF Record Syntax (open-spf.org)http://www.open-spf.org/SPF_Record_Syntax/
[4].百度百科.DKIM[OL].https://baike.baidu.com/item/DKIM/152526?fr=ge_ala

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息