如何用 MailPlus 搭建自己域名的邮件服务呢?这几天花了点时间走通了,把方法分享给大家。
前提条件:
- 一个自己的域名。我在阿里云上买了一个。
- 一个公网 IP 地址。我同样在阿里云上 99 元买了一个 2 核 2GB 内存 3M 带宽的 ECS。
大概步骤如下,后面有进一步解释:
- NAS 上在 MailPlus Server 里配置自己的域名。
- 在域名上配置解析。
- 云服务器上配置流量中转服务。
- NAS 上配置流量中转客户端。
- 在阿里云邮件推送服务平台上配置发件账号。
- 在 MailPlus Server 那里配置邮件投递的中继设置。
先声明下,整个配置过程涉及细节较多,我尽可能把重要的环节记录下来,难免疏漏,大家按步骤多试试,不清楚的可以在评论区讨论,也可以问问 AI(我就是这么搞通的),总会成功。
本文针对的是没有公网 IP 地址的情况,比如笔者家里装的是移动宽带,就没有公网 IP(移动宽带是一个巨大的 NAT 网络)。如果你有公网 IP 地址,那恭喜你,配置非常简单,就只需要做前两步即可(不过你家里的路由器上可能需要配置一些端口映射)。
特别需要注意的是,没有公网 IP 地址的时候,不能从 NAS 上直接往外发邮件,会极大概率被对方邮件服务器识别为垃圾邮件,丢垃圾桶甚至直接删除。
第 1 步:配置 MailPlus Server
假设你的域名是 example.com。如下图将自己的域名填进去。用户那里添加你允许的账户,例如你给自己分配了一个叫 admin@example.com 的邮箱:


第 2 步:配置域名解析
添加下面这些解析:
- 一条 A 类型,mail.example.com,指向你的公网 IP 地址,我这边配置成指向购买的 ECS 公网 IP 地址。
- 一条 MX 类型,主机记录:@,记录值:mail.example.com。
- 三条 TXT 类型:主机记录:@,记录值:v=spf1 include:[地址] -all,如果你有公网 IP 地址,则”[地址]”就填 IP 地址,否则填 spf1.dm.aliyun.com;主机记录:default._domainkey,记录值:v=DKIM1; k=rsa; p=[DKIM 公共密钥];主机记录:_dmarc,记录值:v=DMARC1; p=quarantine; rua=mailto:[你的一个邮箱]。
DKIM 公共密钥在 MailPlus Server 里,在域名配置那里点击”高级设置”就能看到,如下图把它拷贝下来,填到主机记录里:

第 3 步:ECS 上配置中转服务
我们用 frp。下载 frp 后,在 ECS 上运行服务端 frps,配置如下:
# frps.toml
bindPort = 7000
auth.method = "token"
auth.token = "你的强密码"
然后用下面的命令运行:
nohup ./frps -c frps.toml > frps.log 2>&1 &
nohup 是为了让 frps 能以后台进程的方式一直运行。
阿里云安全组配置如下:
- TCP 7000 → 来源 NAS 公网出口 IP/32(不要对 0.0.0.0/0 开放)
- TCP 25, 993, 995, 443 → 来源 0.0.0.0/0
第 4 步:NAS 上配置流量中转客户端
使用 frpc,配置如下:
# frpc.toml
serverAddr = "47.96.67.98"
serverPort = 7000
auth.method = "token"
auth.token = "你的强密码"
[[proxies]]
name = "smtp-25"
type = "tcp"
localIP = "127.0.0.1"
localPort = 25
remotePort = 25
[[proxies]]
name = "imaps-993"
type = "tcp"
localIP = "127.0.0.1"
localPort = 993
remotePort = 993
[[proxies]]
name = "pop3s-995"
type = "tcp"
localIP = "127.0.0.1"
localPort = 995
remotePort = 995
[[proxies]]
name = "webmail-443"
type = "tcp"
localIP = "127.0.0.1"
localPort = 443
remotePort = 443
最好用 Docker 运行 frpc,我偷懒直接命令行脚本运行了,然后通过计划任务让 NAS 每次启动时自动运行这个脚本。
第 5 步:配置阿里云邮件推送服务
前面说了,如果你没有公网 IP 地址,不能直接从你的 NAS 上往外发邮件,很容易被对方邮件服务器识别为垃圾邮件。怎么办呢?刚好阿里云有一个邮件推送服务,每个账号每天有 2000 封邮件的额度可以发,一般用用足够了,地址:dm.console.aliyun.com。
发信域名那里按照提示将自己的域名添加并验证通过。然后在发信地址那里新建发信地址。注意发信类型选择”触发邮件”。然后设置好 SMTP 密码:

第 6 步:配置邮件投递的中继服务
最后一步,回到 MailPlus Server,配置邮件投递的中继服务:

注意,阿里云邮件推送服务的端口是 80,这个不要搞错!
好了,顺利的话到这里你就可以登录 MailPlus 客户端网页用 admin@example.com 收发邮件了:

给其他用户分配域名邮箱
如果就自己用的话,到这里就搞定了。但是如果你想给 NAS 其他用户也分配自己域名的邮箱,例如 test@example.com,该怎么办呢?
如果只在 MailPlus Server 上配置是不够的,因为阿里云邮件推送服务会严格校验发件人地址是否在已知的发件人列表中(还记得第 5 步里我们只配了 admin@example.com 吗?),如果不在,则直接拒绝,用 test@example.com 发出去的邮件就会卡在本地发送队列里,对方收不到。
解决办法分两步:
第一步,在阿里云邮件推送管理网页上再配一个发件地址:

第二步,在 MailPlus Server 上添加一个中继例外规则:

这样当用 test@example.com 发邮件时,该条中继例外规则就会被命中,MailPlus Server 就会用专用的阿里云邮件推送服务账号来发送。
每分配一个新的自己域名的邮箱,都需要按照上述两步配置一下。
好了,在 MailPlus Server 上配置自己域名的邮箱服务就介绍到这里,你配置成功了吗?
发表回复