近期为了充分利用闲置的Vps,用Mailu和Poste.io分别自建了一次邮局,其中也踩了一些坑,特分享一下。
内容比较基础,是自己的学习过程,请各位大佬们轻喷~
自建邮局准备
自建邮局有一些必要的条件,如果不具备无法顺利自建或自建后发出的邮件非常容易进垃圾箱。
必要条件:
需要有一个独立的域名(domain)并可以对域名配置DNS的解析
需要有一台主机orVPS,必须开放25端口,内存推荐1G(需要开Swap)
推荐条件:
推荐支持设置rDNS(一般是找提供主机或VPS的厂商设置,部分厂商在控制台也可以自行设置)
顶级域名(TLD)推荐使用 .com、.net或各国缩写的后缀,不容易被列入不可信的TLD名单中,此项主要影响发出邮件后产生的垃圾邮件评分
内存推荐情况(来自Mailu的官方推荐):
When using antivirus (clamav):开启反病毒
3GB of memory
1GB of swap
When not using antivirus (clamav):关闭反病毒
1GB of memory
1GB of swap
自建邮局部署
部署教程方面有很多了,建议直接去两家的官网获取即可,分列如下:
Mailu:Setup a new Mailu server — Mailu, Docker based mail server
Poste.io:Poste.io documentation
如果使用Docker Compose部署,Mailu还提供了配置的生成工具:Mailu setup,可以在生成后直接部署
Poste.io没有提供生成工具,贴一份供参考:
version: '3.7'
services:
mailserver:
image: analogic/poste.io
hostname: mail.yourdomain.com # 修改为自己的domain
ports:
- "25:25"
- "110:110"
- "143:143"
- "587:587"
- "993:993"
- "995:995"
- "4190:4190"
- "465:465"
- "80:80" # 添加 80 端口,用于 Let's Encrypt 验证
- "443:443" # 启用 HTTPS
environment:
- LETSENCRYPT_EMAIL=admin@yourdomain.com # 修改为自己的domain
- LETSENCRYPT_HOST=mail.yourdomain.com # 修改为自己的domain
- VIRTUAL_HOST=mail.yourdomain.com # 修改为自己的domain
- DISABLE_CLAMAV=TRUE # 反病毒,根据需求禁用
# - DISABLE_RSPAMD=TRUE # 反垃圾邮件,根据需求禁用
- TZ=Asia/Shanghai # 根据自己的时区修改
- HTTPS=ON # 启用 HTTPS
volumes:
- /etc/localtime:/etc/localtime:ro
- ./mail-data:/data # 确保持久化数据卷
DNS设置指南
在部署步骤中Mailu和Poste.io都给出了DNS的设置建议,在域名对应的DNS解析处参考设置即可,贴一份自己的供参考:
;; A Records
mail.yourdomain.com. 1 IN A 1.2.3.4 ; cf_tags=cf-proxied:false
;; CNAME Records
imap.yourdomain.com. 1 IN CNAME mail.yourdomain.com. ; cf_tags=cf-proxied:false
pop.yourdomain.com. 1 IN CNAME mail.yourdomain.com. ; cf_tags=cf-proxied:false
smtp.yourdomain.com. 1 IN CNAME mail.yourdomain.com. ; cf_tags=cf-proxied:false
www.yourdomain.com. 1 IN CNAME yourdomain.com. ; cf_tags=cf-proxied:true
;; MX Records
yourdomain.com. 1 IN MX 10 mail.yourdomain.com.
;; TLSA Records
_25._tcp.mail.yourdomain.com. 1 IN TLSA 3 0 1 XXXXXXXXXXX
;; TXT Records
_dmarc.yourdomain.com. 1 IN TXT "v=DMARC1; p=reject; rua=mailto:XXXXXXXXXXX"
sXXXXXXX._domainkey.yourdomain.com. 1 IN TXT "v=DKIM1; k=rsa; p=XXXXXXXXXXX"
yourdomain.com. 1 IN TXT "v=spf1 mx a:mail.yourdomain.com ~all"
其中的域名和IP都要替换成自己的,最后3条TXT的设置都是为了保障邮件不会被反垃圾过滤的,一定要配置对,其中DMARC、SPF在部署前即可配置,DKIM需要部署后生成。
推荐使用Cloudflare等比较大型的DNS解析商配置,会比较清楚,Cloudflare还提供了针对Email配置的DMARC Management,帮助你检查DNS的配置情况。*这里踩过一些坑,见#一些坑点
Cloudflare检查的结果:

设置后可以使用如Mxtoolbox之类的网站对你的域名解析进行检查。
Mailu和Poste.io的比较
Mailu是开源全免费的,Poste.io也是免费使用但部分功能需要专业版解锁
Mailu支持自动根据Let's Encrypt证书生成TLSA记录,Poste.io需要自行生成,当然TLSA生效的前提是域名需要支持DNSSEC
两家都支持反病毒和反垃圾邮件的功能,其中反垃圾邮件Mailu支持对收、发的邮件都进行扫描,Poste.io对发的邮件进行扫描是专业版服务,如果你的邮箱不止你一人使用,想避免被滥用发送垃圾邮件可能需要关注
Mailu支持用户直接注册,Poste.io的免费版本不支持,只能帮助创建用户,用户登录后自行修改密码
两家都支持管理后台,Poste.io的管理后台颜值更加高一些,如下图:

一些坑点
在配置DNS的MX记录的时候,name可以使用@代表你的域名,一些比较正常的解析商如果你输入yourdomain.com在name里也没问题,但一些比较蠢的DNS解析商会帮你解析为 yourdomain.com.yourdomain.com,导致一直解析不对
如果用Cloudflare做解析,记得与Mail相关的解析记录都不能开代理,包括Mail对应的那条A记录、CNAME记录等
部分域名解析商的DNSSEC是收费服务,免费版本无法开启
如果使用的主机或者VPS内存比较少,可以开一下Swap,也是可以跑起来的
完成后记得用mail-tester之类的工具测试一下发送邮件的得分,如果一切正常应该会得到如下结果:

欢迎大家交流,祝大家自建邮局顺利!
本文也发布在我自己的blog上,欢迎查看:Mailu&Poste.io自建邮局的比较及避坑指南
原文链接:【分享】Mailu&Poste.io自建邮局的比较及避坑指南