YY
Published on 2025-03-22 / 132 Visits
0
0

Mailu&Poste.io自建邮局的比较及避坑指南

近期为了充分利用闲置的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:
      - [email protected] # 修改为自己的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的配置情况。*这里踩过一些坑,见#一些坑点

设置后可以使用如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之类的工具测试一下发送邮件的得分,如果一切正常应该会得到如下结果:

祝大家自建邮局顺利!


Comment