前言:一个闲置 VPS 的华丽转身

还记得文章开头说的吗?我有台 OVH 的小鸡(1核2GB),博客搬走后就闲置了。看着它在后台面板里吃灰,我总觉得可惜。

思来想去,能干点啥呢?搭个邮局吧!

起初只是想给自己弄个域名邮箱,比如 admin@tbbbk.com,看起来专业又有牌面。但搭建完成后,我发现邮件服务太闲了——一天也就收发几封邮件,服务器资源完全浪费。

于是,一个大胆的想法冒了出来:做个临时邮箱网站,给网友提供免费服务!

就这样,M2U.io 诞生了。从零到现在,日处理邮件上万封,稳定运行快半年,零宕机。

今天这篇文章,我会把整个邮件服务搭建过程、踩过的坑、DNS 配置技巧、防垃圾邮件经验,毫无保留地分享给你。

一、为什么选择自建邮局?

付费企业邮箱 vs 自建邮局

对比项付费企业邮箱(腾讯、阿里等)自建邮局(HestiaCP)
费用¥500-2000/年(5-10 个邮箱)VPS 费用(¥20-50/月)
邮箱数量限制无限!想建多少建多少
数据隐私存在服务商服务器完全属于自己
配置自由度被限制想怎么玩怎么玩
学习价值深入理解邮件系统
稳定性⭐⭐⭐⭐⭐⭐⭐⭐⭐(配置好也很稳)
技术门槛中等(但有 HestiaCP 简单很多)

我为什么自建邮局?

  1. 省钱:我本来就有 VPS,不用额外花钱买企业邮箱
  2. 无限邮箱:M2U 项目需要大量临时邮箱,付费邮箱根本做不到
  3. 数据自主:所有邮件数据在自己服务器,不用担心隐私泄露
  4. 折腾乐趣:学到了 DNS、SMTP、IMAP 等知识,成就感爆棚
  5. 装X利器admin@tbbbk.com,多有范儿 😎

你适合自建邮局吗?

✅ 适合自建

  • 有自己的域名和 VPS
  • 需要多个邮箱(超过 10 个)
  • 对数据隐私敏感
  • 想深入学习邮件系统
  • 预算有限,不想买企业邮箱

❌ 不适合自建

  • 完全零基础,连 SSH 都不会
  • 只需要 1-2 个邮箱
  • 对稳定性要求极高(企业邮箱确实更稳)
  • 懒得维护(邮件服务需要定期检查)

二、开始前的准备:这些东西必须有

硬件要求

配置项最低要求推荐配置我的配置(M2U)
CPU1核2核1核(OVH)
内存2GB4GB2GB
硬盘20GB40GB SSD20GB SSD
带宽不限流量不限流量不限流量(OVH)

⚠️ 注意:邮件服务比较吃内存,特别是开启 ClamAV(病毒扫描)和 SpamAssassin(垃圾邮件过滤)后。如果内存只有 1GB,建议关闭这两个组件。

最关键的:25 端口必须开放!

这是重中之重!很多 VPS 服务商默认封禁 25 端口(发邮件的端口),导致你建好邮局也发不出邮件。

如何检查 25 端口是否开放?

# 方法一:用 telnet 测试
telnet smtp.qq.com 25
# 如果能连接,说明 25 端口是开的

# 方法二:用 nc 测试
nc -zv smtp.qq.com 25

各大 VPS 服务商 25 端口政策

服务商25 端口默认状态如何开放
OVH✅ 默认开放无需操作
Vultr✅ 默认开放无需操作
DigitalOcean❌ 默认封禁提交工单申请(可能被拒)
阿里云/腾讯云❌ 默认封禁提交工单申请(需要企业认证)
甲骨文云❌ 默认封禁无法开放!不要用!
AWS/GCP❌ 默认封禁提交申请,审核较难
Hetzner✅ 默认开放无需操作

我的经验:OVH 是最适合建邮局的,25 端口默认开放,IP 质量也不错(不在垃圾邮件黑名单里)。

域名要求

  • ✅ 必须有自己的域名(.com .net .org 等都行)
  • ✅ 能够修改域名的 DNS 记录(A、MX、TXT 等)
  • ❌ 不建议用免费域名(如 .tk .ml),容易被邮件服务商拉黑

反向 DNS(rDNS):极其重要!

这是很多人忽略的一点,但这是防止邮件进垃圾箱的关键

什么是反向 DNS?
正常 DNS:mail.tbbbk.com123.45.67.89(域名解析到 IP)
反向 DNS:123.45.67.89mail.tbbbk.com(IP 反查到域名)

邮件服务器收信时,会检查你的 IP 的反向 DNS 是否和你发信的域名一致。如果不一致,很可能被判定为垃圾邮件。

如何设置反向 DNS?

这个需要在 VPS 服务商后台设置(不是域名商!):

  • OVH:进入 VPS 管理页面,找到"Reverse DNS",填入 mail.你的域名.com
  • Vultr:Settings → IPv4 → Reverse DNS
  • Hetzner:Cloud Console → Server → Networking → Reverse DNS

如何检查反向 DNS 是否生效?

# Linux/Mac
dig -x 你的服务器IP

# Windows PowerShell
nslookup 你的服务器IP

应该返回 mail.你的域名.com(或者你设置的主机名)。

三、在 HestiaCP 中添加邮件域名

好了,准备工作做完,开始实战!

步骤一:添加邮件域名

  1. 登录 HestiaCP
  2. 点击左侧菜单 MAIL
  3. 点击右上角绿色按钮 Add Mail Domain
  4. 填写域名(比如 m2u.io
  5. 点击 Save

就这么简单!HestiaCP 会自动:

  • 配置 Exim(SMTP 服务器)
  • 配置 Dovecot(IMAP/POP3 服务器)
  • 生成必要的 DNS 记录

步骤二:查看需要添加的 DNS 记录

保存后,点击域名右边的 📖 图标(看起来像个小书),会显示需要添加的所有 DNS 记录。

典型的 DNS 记录清单

# MX 记录(邮件服务器地址)
@    MX    10    mail.m2u.io.

# A 记录(mail 子域名指向服务器)
mail    A    你的服务器IP

# TXT 记录(SPF,防止邮件被伪造)
@    TXT    "v=spf1 a mx ip4:你的服务器IP ~all"

# TXT 记录(DKIM,邮件签名)
mail._domainkey    TXT    "v=DKIM1; k=rsa; p=一长串公钥..."

# TXT 记录(DMARC,邮件策略)
_dmarc    TXT    "v=DMARC1; p=quarantine; rua=mailto:postmaster@m2u.io"

重要:把这些记录复制下来,到域名商后台添加。

步骤三:在域名商后台添加 DNS 记录

我用的是 Cloudflare(免费),操作如下:

  1. 登录 Cloudflare,选择你的域名
  2. 点击 DNS
  3. 逐条添加 HestiaCP 给出的记录

注意事项

  • MX 记录的优先级填 10
  • TXT 记录要用英文双引号包起来
  • DKIM 的公钥很长,Cloudflare 可能会自动换行,检查一下是否完整

步骤四:等待 DNS 生效

通常 5-30 分钟,最长 24 小时。

如何检查 DNS 是否生效?

# 检查 MX 记录
dig MX m2u.io

# 检查 SPF 记录
dig TXT m2u.io

# 检查 DKIM 记录
dig TXT mail._domainkey.m2u.io

四、创建邮箱账户

DNS 配置好后,就可以创建邮箱了!

创建第一个邮箱

  1. 点击 MAIL,找到你的域名
  2. 点击域名进入管理页面
  3. 点击 Add Mail Account
  4. 填写信息:

    • Account:邮箱前缀(比如 admin
    • Password:邮箱密码(用强密码!)
    • Quota:邮箱容量(MB),0 表示无限
  5. 点击 Save

完成!你的第一个邮箱 admin@m2u.io 诞生了 🎉

批量创建邮箱(适合临时邮箱项目)

对于 M2U 这样的临时邮箱项目,我需要快速创建大量邮箱。手动一个个创建太慢,可以用命令行:

# 创建单个邮箱
/usr/local/hestia/bin/v-add-mail-account 用户名 域名 邮箱前缀 密码

# 示例
/usr/local/hestia/bin/v-add-mail-account admin m2u.io test001 随机密码

我的批量创建脚本(自动生成 100 个临时邮箱):

#!/bin/bash
DOMAIN="m2u.io"
USER="admin"

for i in {1..100}; do
  MAILBOX="temp$(printf '%03d' $i)"  # temp001, temp002, ...
  PASSWORD=$(openssl rand -base64 12)  # 随机密码
  /usr/local/hestia/bin/v-add-mail-account $USER $DOMAIN $MAILBOX $PASSWORD
  echo "$MAILBOX@$DOMAIN | 密码: $PASSWORD" >> mailboxes.txt
done

echo "创建完成!邮箱列表已保存到 mailboxes.txt"

五、配置邮件客户端:让邮箱可以收发

网页版邮箱(Roundcube)

HestiaCP 自带 Roundcube 网页邮箱,开箱即用!

访问地址https://webmail.你的域名.com

比如我的是:https://webmail.m2u.io

登录信息:

  • 用户名:完整邮箱地址(如 admin@m2u.io
  • 密码:创建邮箱时设置的密码

登录后,就可以像用 Gmail 一样收发邮件了。界面虽然朴素,但功能齐全。

桌面客户端(Outlook、Thunderbird、Apple Mail)

如果你习惯用桌面客户端,配置信息如下:

接收邮件(IMAP)

  • 服务器:mail.你的域名.com
  • 端口:993
  • 加密方式:SSL/TLS
  • 用户名:完整邮箱地址
  • 密码:邮箱密码

发送邮件(SMTP)

  • 服务器:mail.你的域名.com
  • 端口:465(SSL)或 587(STARTTLS)
  • 加密方式:SSL/TLS
  • 用户名:完整邮箱地址
  • 密码:邮箱密码

我的推荐客户端

  • Windows:Thunderbird(免费开源)
  • Mac:Apple Mail(自带,好用)
  • Linux:Thunderbird 或 Evolution
  • 手机:系统自带的邮件 APP 就够用

手机 APP 配置

iOS(iPhone/iPad)

  1. 设置 → 邮件 → 账户 → 添加账户 → 其他
  2. 选择"添加邮件账户"
  3. 填写邮箱地址和密码
  4. 系统会自动检测服务器设置(如果自动检测失败,手动填上面的 IMAP 和 SMTP 信息)

Android

  1. 打开"Gmail"APP(或其他邮件 APP)
  2. 添加账户 → 其他
  3. 填写邮箱地址和密码
  4. 选择"IMAP"
  5. 手动填入服务器信息

六、重头戏:SPF、DKIM、DMARC 配置

这三个是防止邮件进垃圾箱的核心技术。我刚开始没配置这些,发出去的邮件 90% 进垃圾箱。配置完后,送达率提升到 95% 以上。

SPF:告诉收件方"我授权这台服务器发邮件"

SPF 是什么?
Sender Policy Framework(发件人策略框架),用来防止别人伪造你的域名发垃圾邮件。

SPF 记录示例

# 类型  名称   值
TXT     @      v=spf1 a mx ip4:你的服务器IP ~all

参数解释

  • v=spf1:SPF 版本
  • a:允许域名的 A 记录对应的 IP 发信
  • mx:允许域名的 MX 记录对应的服务器发信
  • ip4:你的IP:明确允许这个 IP 发信
  • ~all:其他 IP 发信标记为"可疑"(-all 是直接拒绝,太严格)

如何检查 SPF 是否生效?

访问 https://mxtoolbox.com/spf.aspx,输入你的域名,看结果。

DKIM:给邮件加上"数字签名"

DKIM 是什么?
DomainKeys Identified Mail(域名密钥识别邮件),通过公钥加密技术验证邮件确实是你发的。

好消息:HestiaCP 自动生成 DKIM 密钥和 DNS 记录,你只需要复制粘贴!

DKIM 记录示例

# 类型  名称                    值
TXT     mail._domainkey        v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3...一长串公钥

这个记录在 HestiaCP 的"DNS 记录清单"里能看到,复制到域名商后台就行。

如何检查 DKIM 是否生效?

访问 https://mxtoolbox.com/dkim.aspx,输入 mail._domainkey.你的域名.com,看结果。

DMARC:制定邮件验证失败的处理策略

DMARC 是什么?
Domain-based Message Authentication, Reporting & Conformance(基于域名的消息认证、报告和一致性)。它告诉收件方:"如果邮件验证失败,请这样处理。"

DMARC 记录示例

# 类型  名称      值
TXT     _dmarc    v=DMARC1; p=quarantine; rua=mailto:dmarc@m2u.io; pct=100

参数解释

  • v=DMARC1:DMARC 版本
  • p=quarantine:验证失败的邮件放进垃圾箱(none 不处理,reject 直接拒收)
  • rua=mailto:dmarc@m2u.io:发送验证报告到这个邮箱
  • pct=100:100% 的邮件应用这个策略

我的建议

  • 刚开始用 p=none,观察一段时间
  • 确认邮件都能正常收发后,改成 p=quarantine
  • 绝对有把握后,才用 p=reject

我的 M2U 配置实例

这是我实际使用的 DNS 配置:

# MX 记录
m2u.io.    MX    10    mail.m2u.io.

# A 记录
mail.m2u.io.    A    你的IP

# SPF 记录
m2u.io.    TXT    "v=spf1 mx a ip4:你的IP ~all"

# DKIM 记录
mail._domainkey.m2u.io.    TXT    "v=DKIM1; k=rsa; p=MIGfMA0GCSq...很长的公钥"

# DMARC 记录
_dmarc.m2u.io.    TXT    "v=DMARC1; p=quarantine; rua=mailto:admin@m2u.io; pct=100"

配置完这些,我的临时邮箱发出去的邮件,送达率从 40% 提升到 95% 以上!

七、测试邮件收发

配置完所有 DNS 记录后,一定要测试!

测试一:发送邮件

  1. 登录 Roundcube(https://webmail.你的域名.com
  2. 写一封邮件,发给你的 Gmail、QQ 邮箱等
  3. 检查是否收到,是否进垃圾箱

测试二:接收邮件

  1. 用你的 Gmail 给自己的新邮箱发一封测试邮件
  2. 登录 Roundcube,看是否收到

测试三:邮件评分(重要!)

访问 https://www.mail-tester.com/,它会给你一个临时邮箱地址。

  1. 用你的新邮箱给这个地址发一封测试邮件
  2. 回到网站,点击"Then check your score"
  3. 查看评分(满分 10 分)

评分说明

  • 10/10:完美!邮件不会进垃圾箱
  • 8-9/10:不错,大部分能送达
  • 6-7/10:一般,可能进垃圾箱
  • < 6/10:有问题,赶紧排查

我的M2U 评分:9.5/10(扣了 0.5 分是因为 IP 是新的,还没建立"信誉")

常见扣分原因和解决办法

SPF 记录有问题
解决:检查 SPF 记录是否正确添加,IP 地址是否对

没有 DKIM 签名
解决:确认 DKIM 记录已添加,并且 Exim 已启用 DKIM

没有反向 DNS
解决:在 VPS 服务商后台设置 rDNS

IP 在黑名单
解决:访问 https://mxtoolbox.com/blacklists.aspx 检查,如果在黑名单,申请移除

发送速率过快
解决:限制发信频率,避免短时间发大量邮件

八、高级功能:Catch-All 和邮箱别名

Catch-All:万能邮箱

这是我做 M2U 临时邮箱的核心功能!

Catch-All 是什么?
开启后,所有发给 任何前缀@你的域名.com 的邮件,都会被某个邮箱接收。

比如:

  • 开启 Catch-All,指向 admin@m2u.io
  • 别人发邮件给 abc123@m2u.io(这个邮箱不存在)
  • 邮件会自动到 admin@m2u.io 的收件箱

如何开启 Catch-All?

  1. 点击 MAIL,找到你的域名
  2. 点击域名进入管理页面
  3. 找到 Catch-All 设置
  4. 选择一个现有邮箱(比如 admin@m2u.io
  5. 点击 Save

我的应用场景
M2U 临时邮箱网站,用户可以随便输入一个邮箱前缀(如 test123@m2u.io),不用提前创建,直接就能收信!这就是 Catch-All 的威力。

邮箱别名:一个邮箱多个地址

别名是什么?
一个邮箱可以有多个邮件地址,发给任何别名的邮件都会进同一个收件箱。

如何添加别名?

  1. 点击 MAIL,找到邮箱,点击编辑
  2. Aliases 字段填入别名(多个用逗号分隔)

    • 比如:support, help, contact
  3. 点击 Save

现在,发给 support@m2u.iohelp@m2u.iocontact@m2u.io 的邮件,都会到 admin@m2u.io 的收件箱。

九、防垃圾邮件:SpamAssassin 和 ClamAV

SpamAssassin:垃圾邮件过滤器

如果你的邮箱是对外公开的(比如放在网站上),很快就会收到大量垃圾邮件。

HestiaCP 自带 SpamAssassin,自动过滤垃圾邮件。

如何查看垃圾邮件?

登录 Roundcube,左侧有个 Junk 文件夹,SpamAssassin 判定为垃圾邮件的都会自动放进去。

如何调整垃圾邮件过滤强度?

# 编辑配置文件
sudo nano /etc/spamassassin/local.cf

# 找到这一行
required_score 5.0

# 数字越小,过滤越严格(可能误判)
# 数字越大,过滤越宽松(可能漏掉垃圾邮件)
# 默认 5.0 比较合适

ClamAV:病毒扫描

ClamAV 会扫描邮件附件,防止病毒传播。

注意:ClamAV 很吃内存(300-500MB),如果服务器内存不足,可以关闭:

sudo systemctl stop clamav-daemon
sudo systemctl disable clamav-daemon

十、我的 M2U 临时邮箱运营数据

运行快一年了,分享一下数据:

指标数据
每日处理邮件5000-15000 封
邮箱数量4 个域名,Catch-All 全开
服务器资源占用CPU 10-20%,内存 1.2GB/2GB
宕机次数0 次!
垃圾邮件拦截率99%
用户反馈"稳定"、"好用"、"比 Temp-Mail 快"

一些有趣的发现

  • 白天 10-12 点流量最高(上班族在注册账号)
  • 周末流量下降 30%
  • 最受欢迎的域名后缀:.io > .com > .net

十一、常见问题排查

Q1:邮件发不出去

可能原因

  1. 25 端口被封禁
  2. DNS 记录没配置
  3. 防火墙阻止了 25 端口

排查步骤

# 检查 25 端口
telnet smtp.qq.com 25

# 检查 Exim 是否运行
sudo systemctl status exim4

# 查看 Exim 日志
sudo tail -f /var/log/exim4/mainlog

Q2:邮件能发出去,但进垃圾箱

可能原因

  1. SPF/DKIM/DMARC 没配置或配置错误
  2. 没有反向 DNS
  3. IP 在黑名单
  4. 邮件内容像垃圾邮件(全是链接、大写字母等)

解决办法

Q3:收不到邮件

可能原因

  1. MX 记录没配置
  2. Dovecot 没启动
  3. 邮箱容量满了

排查步骤

# 检查 MX 记录
dig MX m2u.io

# 检查 Dovecot 是否运行
sudo systemctl status dovecot

# 查看邮箱容量
du -sh /home/admin/mail/m2u.io/admin

Q4:服务器 CPU 100%

可能原因

  1. 被人用来发垃圾邮件(邮箱密码泄露)
  2. 短时间收到大量邮件
  3. ClamAV 扫描占用过高

解决办法

# 查看是谁在发邮件
sudo exim -bp | exiqsumm

# 如果队列里有大量邮件,清空队列
sudo exim -bp | awk '/^ *[0-9]+[mhd]/{print "sudo exim -Mrm " $3}' | bash

# 关闭 ClamAV(如果不需要)
sudo systemctl stop clamav-daemon

十二、安全建议

  1. 邮箱密码一定要强:至少 16 位随机密码
  2. 定期查看日志/var/log/exim4/mainlog
  3. 限制发信频率:防止被人滥用发垃圾邮件
  4. 开启 SPF、DKIM、DMARC:提高送达率,防止被伪造
  5. 监控服务器资源:邮件队列突然暴增,可能被攻击

十三、总结

自建邮局看起来复杂,但有了 HestiaCP,真的简单太多了。

从添加域名、配置 DNS、创建邮箱,到测试收发,全程只需要 30 分钟。剩下的就是慢慢调优,让送达率越来越高。

我的 M2U 临时邮箱项目,从 0 到日处理上万封邮件,稳定运行快一年,证明了 HestiaCP 邮件服务的可靠性。

如果你也想建自己的邮件服务器,不妨试试 HestiaCP。它会让你发现,原来自建邮局没那么难


📚 HestiaCP 完整系列教程

本文是 HestiaCP 实战系列 的第 4 篇(完结篇),完整系列包括:

  1. 折腾 HestiaCP:从零到拥有自己的服务器面板
  2. HestiaCP 安全血泪史:保护服务器的实战经验
  3. HestiaCP 建站实战:从买域名到网站上线
  4. 👉 HestiaCP 自建邮局:从 M2U 临时邮箱的诞生说起(本文)

我的临时邮箱项目https://m2u.io

有问题? 欢迎在评论区留言,我会尽量回复。如果这篇文章帮到了你,欢迎分享!

最后修改:2025 年 12 月 10 日
如果觉得我的文章对你有用,请随意赞赏