1. 搭建前的准备
1.1 准备符合要求的 vps
搭建邮箱,需要准备好
- 一个顶级域名
- 一个符合下述要求的 vps
- 商家开放 25 端口
- 商家支持 rdns
- 内存尽量 4GB+
- IP 尽量干净
25 端口
可以使用命令测试
apt install telnet -y
telnet mx2.qq.com 25
如果能够看到

就说明端口是开放的
25 端口必须是可用的,如果上一步测试你测试结果为超时,那么你是无法发信的有的商家只屏蔽 25 端口出方向,有的商家是全屏蔽。全屏蔽的 vps 无法作为邮件服务器使用,屏蔽出方向的只能收信无法发信
rdns
一般在商家的控制面板里设置,如果找不到,一般就是不支持
设置完成后,利用 nslookup
命令来检查
如果需要在 linux 下使用,需要安装
apt install dnsutils -y
执行
nslookup YOUR_IP
就可以看到类似于下图的效果

至于 IP纯净度
, 这是一个很难评判的问题,但纯净的 IP 肯定是更好的,同样搭建的邮箱发同样的内容,有的 IP 发信直达收件箱,有的直达垃圾箱。
网上测试 IP纯净度
的网站不少,不过仅作参考
1.2 解析域名
首先添加 MX记录
, 指向你的邮件服务器 IP

然后添加 A记录
/AAAA记录
,给自己的邮箱网站一个子域名,例如 mail.example.com

1.3 更改 hosts 文件
编辑 hosts
nano /etc/hosts
将内容改为
127.0.0.1 mail.example.com mail localhost localhost.localdomain
1.4 修改主机名
将主机名修改为 mail.example.com
sudo hostnamectl set-hostname mail.example.com
修改完后建议重启,上述步骤如果不正确无法进行后续安装

如果重启后发现 hosts
被还原了,建议直接 dd 重装纯净的系统
如果不想重装,修改完成后锁定 hosts 文件也可以的
chattr +i /etc/hosts
2. 安装 iredmail
iredmail
的项目地址 https://github.com/iredmail/iRedMail
安装 iredmail
前必须先安装 iptables
apt install iptables -y
iptables 必须确认安装,我曾因为没有安装,在安装了 iredmail 后无法进入系统,只能去恢复模式修复!
安装其它需要的包
apt install unzip -y
从 github 下载 iredmail
,例如
wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.7.1.zip
unzip 1.7.1.zip
cd iRedMail-1.7.1/
给脚本执行权限
chmod +x iRedMail.sh
执行安装脚本
bash iRedMail.sh

存储目录没有特殊需求的话保持默认即可

选择 web server
, 我们没有自己安装的,就用它配置好的 nginx
好了,方便好用

选择数据库,可以根据自己的喜好选择,我选择 MariaDB

创建 Mysql 密码
, 密码要保存好,这个密码越复杂越好

填写邮箱域名, 注意这里填写的是顶级域名,即 example.com

创建邮箱管理员密码,这个密码也要记好

选择要安装的程序,这个按需选择

- Roundcubemail:邮箱的 web 界面
- SOGo:选了 Roundcubemail 就没必要选它了
- netdata:服务器状态监控与可视化
- iRedAdmin:邮箱的管理员面板
- Fail2ban:封禁爆破 IP
最终确认安装配置

耐心等待安装完成
使用防火墙

安装完成,重启 vps

3. 设置域名记录
虽然 iredmail
已经安装好了,但仍然需要设置一些域名记录,这些记录是为了防止垃圾、诈骗邮件而设计的
3.1 设置 spf 记录
spf 记录是 TXT 类型
字符为
v=spf1 a:mail.example.com ~all
这个记录是告诉别人,允许从域名解析为 mail.example.com
的服务器发送邮件,如果不是从指定的服务器发送的,邮件会被标记为可疑
Windows
下使用 nslookup
验证记录
nslookup -qt=txt example.com
Linux
下使用 nslookup
验证记录
nslookup -q=txt example.com
3.2 设置 dkim 记录
dkim
记录的作用是帮助电子邮件接收服务器验证电子邮件的真实性,防止电子邮件伪造和钓鱼攻击
查看服务器的 dkim
/usr/sbin/amavisd showkey
会看到

将 ()
中的内容复制出来,去掉引号、回车和空格,连起来就是记录值
添加解析记录

解析完成会返回邮箱服务器执行
/usr/sbin/amavisd testkey
如果看到 PASS
,就是校验通过了

3.3 添加 DMARC 记录
DMARC
允许域名所有者明确指定哪些邮件服务器有权代表该域名发送电子邮件,并要求接收方验证发件人的 SPF
和 DKIM
签名。如果验证失败,DMARC
规定了如何处理这类邮件。
添加一条 TXT 解析
v=DMARC1;p=none;ruf=mailto:abuse@example.com;rua=mailto:abuse@example.com

在 Windows
命令行中验证
nslookup -qt=txt _dmarc.example.com
在 Linux
命令行中验证
nslookup -q=txt _dmarc.example.com
能看到添加解析的结果即可
4. 为网站添加 ssl 证书
安装 acme.sh
curl https://get.acme.sh | sh
alias acme.sh=~/.acme.sh/acme.sh
申请证书,我使用 dns 验证的方式,这里参考 acme.sh 的用法
比如 cloudflare
export CF_Key="YOUR_KEY"
export CF_Email="YOUR@EMAIL.COM"
acme.sh --issue --dns dns_cf -d mail.example.com
比如 dnspod
export DP_Id="YOUR_ID"
export DP_Key="YOUR_KEY"
export ACCOUNT_EMAIL="YOUR@EMAIL.COM"
acme.sh --issue --dns dns_dp -d mail.example.com
安装证书
acme.sh --installcert -d mail.example.com \
--key-file /etc/ssl/private/nginx.key \
--fullchain-file /etc/ssl/certs/nginx.cer \
--reloadcmd "systemctl force-reload nginx"
修改 nginx
配置文件
nano /etc/nginx/sites-enabled/00-default-ssl.conf
在 server{}
里添加
ssl_certificate /etc/ssl/certs/iRedMail.crt;
ssl_certificate_key /etc/ssl/private/iRedMail.key;
安装 iredmail 邮件服务相关的 SSL
acme.sh --installcert -d mail.example.com \
--key-file /etc/ssl/private/iRedMail.key \
--fullchain-file /etc/ssl/certs/iRedMail.crt \
--reloadcmd "service nginx force-reload && service postfix force-reload && service dovecot force-reload"
5. 邮箱服务管理与测试
5.1 添加邮箱用户
访问 https://mail.example.com/iredadmin

其中:
用户名
为postmaster@example.com
密码
为 前面自己设置的
进入 添加
-> example.com

点击 添加
就能新建用户了
然后打开 https://example.com/mail
,登录刚才创建的账号
就可以看见邮箱页面了

5.2 邮箱评分测试
使用的测试网站是 https://www.mail-tester.com/
只需要向网页展示的地址发送一封邮件,就可以看到评分了

向其发送测试邮件

查看评测结果,自然是满分

接着就可以向 QQ、Outlook、Gmail 发送测试邮件了
Gmail 测试收件正常,不会进垃圾箱

Outlook 测试收件正常,不会进垃圾箱

QQ 测试收件正常,不会进垃圾箱

至此邮箱搭建就完成了,只要前面步骤正确,服务器 IP 不要太差,基本都不会进垃圾箱的
当然如果你购买的是部分 “网红商家” 的 vps,那 IP 都已经很差了,就很容易进垃圾箱,尤其是 Outlook , 这种就没什么更好的办法了
6. 参考