1. 搭建前的准备

1.1 准备符合要求的 vps

搭建邮箱,需要准备好

25 端口 可以使用命令测试

apt install telnet -y
telnet mx2.qq.com 25

如果能够看到

如何自建域名邮箱:使用iredmail自建邮箱服务器教程


就说明端口是开放的

25 端口必须是可用的,如果上一步测试你测试结果为超时,那么你是无法发信的有的商家只屏蔽 25 端口出方向,有的商家是全屏蔽。全屏蔽的 vps 无法作为邮件服务器使用,屏蔽出方向的只能收信无法发信
 apt install dnsutils -y

执行

nslookup YOUR_IP

就可以看到类似于下图的效果

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

rdns 必须支持并且正确设置,否则很多邮箱会直接拒收,比如 Google

至于 IP纯净度 , 这是一个很难评判的问题,但纯净的 IP 肯定是更好的,同样搭建的邮箱发同样的内容,有的 IP 发信直达收件箱,有的直达垃圾箱。

网上测试 IP纯净度 的网站不少,不过仅作参考

1.2 解析域名

首先添加 MX记录 , 指向你的邮件服务器 IP

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

1.3 更改 hosts 文件

编辑 hosts

nano /etc/hosts

将内容改为

127.0.0.1 mail.example.com mail localhost localhost.localdomain
注意:将 mail.example.com 改为你自己的域名!

1.4 修改主机名

将主机名修改为 mail.example.com

sudo hostnamectl set-hostname mail.example.com

修改完后建议重启,上述步骤如果不正确无法进行后续安装

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

如果重启后发现 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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

按空格键选中,注意看括号中是否有代表选中的星号

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

  • Roundcubemail:邮箱的 web 界面
  • SOGo:选了 Roundcubemail 就没必要选它了
  • netdata:服务器状态监控与可视化
  • iRedAdmin:邮箱的管理员面板
  • Fail2ban:封禁爆破 IP

最终确认安装配置

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

耐心等待安装完成

使用防火墙

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

安装完成,重启 vps

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

会看到

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

添加解析记录

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

解析完成会返回邮箱服务器执行

/usr/sbin/amavisd testkey

如果看到 PASS ,就是校验通过了

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

3.3 添加 DMARC 记录

DMARC 允许域名所有者明确指定哪些邮件服务器有权代表该域名发送电子邮件,并要求接收方验证发件人的 SPFDKIM 签名。如果验证失败,DMARC 规定了如何处理这类邮件。

添加一条 TXT 解析

v=DMARC1;p=none;ruf=mailto:abuse@example.com;rua=mailto:abuse@example.com

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

其中:

  • 用户名postmaster@example.com
  • 密码 为 前面自己设置的

进入 添加 -> example.com

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

点击 添加 就能新建用户了

然后打开 https://example.com/mail ,登录刚才创建的账号

就可以看见邮箱页面了

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

5.2 邮箱评分测试

使用的测试网站是 https://www.mail-tester.com/

只需要向网页展示的地址发送一封邮件,就可以看到评分了


如何自建域名邮箱:使用iredmail自建邮箱服务器教程

向其发送测试邮件

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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


如何自建域名邮箱:使用iredmail自建邮箱服务器教程

接着就可以向 QQ、Outlook、Gmail 发送测试邮件了

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

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

如何自建域名邮箱:使用iredmail自建邮箱服务器教程

至此邮箱搭建就完成了,只要前面步骤正确,服务器 IP 不要太差,基本都不会进垃圾箱的

当然如果你购买的是部分 “网红商家” 的 vps,那 IP 都已经很差了,就很容易进垃圾箱,尤其是 Outlook , 这种就没什么更好的办法了