在 Proxmox VE 下部署 iRedMail 邮件服务器并使用 Thunderbird 收发邮件
前言
邮箱,即使在国内完全不会用在社交用途下,但也基本是每个网民都会注册的东西。国内最常见的公共邮箱提供商:QQ 邮箱、163 邮箱等,以及常见的国际公共邮箱提供商:Gmail、Outlook 等。
对于企业、团队、个人工作室等,拥有一个自定义域邮箱可以更加专业、彰显个性、完全掌控邮件系统与数据,自定义邮局的好处:
- 强化辨识度:用自定义域邮局代替公共邮局,可以为企业反复曝光品牌,提升专业感与可信度。
- 为个人工作室彰显个性。
- 可以为各个部门分配专门的邮箱,方便分工。
- 数据完全由自己管理,可以无数量限制群发邮件。
自定义域邮局也会有诸多限制:
- 部署和维护成本过大:配置自定义域邮局需要设置DNS、SSL、SMTP、IMAP、SPF、DKIM、DMARC 等多项配置。
- 云服务商限制:由于自定义域邮局可以无限制发件,极易带来 Abuse 问题,部分云服务提供商会直接屏蔽 25 端口(阿里云、腾讯云),同时自定义域名邮局部署需要配置 PTR,云服务商若提供 RDNS 服务还需要租用或者自搭建权威 DNS 服务,对于极易引发 Abuse 问题的邮箱服务来说,小规模的云服务商直接不提供 RDNS 服务。
- IP 要求严格:同样由于自定义域邮局极易带来的Abuse 问题,导致不少 IP 被列入公共邮箱提供商的黑名单,即使自定义邮局部署完成,发出的邮件也会被扔进垃圾箱甚至拒收。
- 需要持续的维护:自部署邮局意味着数据完全由自己掌控,所以一切的更新、维护、备份均需要自己亲自进行,一旦域名忘记续费,或者数据库损坏等,会直接导致自定义邮局注册的各种服务后续无法接收邮件,比如最常见的用邮箱重置密码等。
一些公共邮箱提供商也会提供自定义域名邮箱服务,比如Google Workspace、Microsoft 365、Amazon WorkMail等,对于有自定义域名邮局需求的,对数据隐私不敏感的,优先还是托管给公共邮局提供商更适合,公有云比私有云稳定可靠太多了。
自定义域邮局部署过程
前置条件
域名:作者下文将使用自己的博客域名(mail.gaorkang.cn)来完成自定义域名的部署,域名解析托管在华为云。
开放 25 端口和提供 PTR 设置的云服务器:国内云服务商对 25 端口基本都做了限制,作者使用 Hetzner 的一个拍卖机作为邮箱服务器,因为服务器位于德国,加上.cn的域名无法解析到 cloudflare,所以国内访问注定不会快,同时会暴露源 IPv4。
Proxmox VE 网络配置
作者目前使用的 Hetzner 拍卖机仅分配了一个公网 IPv4 地址和一个 /64 段的 IPv6 子网。
虽然 Hetzner 支持为 IPv6 地址配置 RDNS(反向解析),理论上完全可以使用 IPv6 来部署邮件服务器,但考虑到当前全球范围内 IPv6 的实际普及程度,最终还是选择以 IPv4 来部署邮局服务器。
Hetzner 的拍卖机,作为一台独立服务器,肯定不会只用来部署邮局,只能宿主机安装Proxmox VE,然后在 PVE 中安装虚拟机来部署各个服务,但是考虑到只有一个 ipv4,只能通过 NAT 转发(iptables DNAT) 的方式将iRedMail 需要使用的端口映射到宿主机,实现邮局的正常工作。
Hetzner 宿主机基础的网络拓扑:
[公网] ↔ [宿主机 eno1 (192.0.2.10)]
↓ NAT DNAT 转发
[vmbr0 10.0.0.1] ↔ [iRedMail虚拟机 10.0.0.233]
iRedMail 官方文档详细列出了所需端口,参考:iRedMail Network Ports
但是真的需要在公网中开放的端口:
邮件相关
| 端口 | 协议 | 服务 | 说明 |
|---|---|---|---|
| 25 | TCP | SMTP | 邮件传输(对外收发邮件) |
| 587 | TCP | Submission (SMTP AUTH) | 客户端(Thunderbird)发信用 |
| 465 | TCP | SMTPS | 加密的邮件提交端口(部分客户端仍用) |
| 143 | TCP | IMAP | 邮件读取(未加密) |
| 993 | TCP | IMAPS | 加密的邮件读取 |
| 110 | TCP | POP3 | 邮件下载(未加密) |
| 995 | TCP | POP3S | 加密的邮件下载 |
Web 服务相关
| 端口 | 协议 | 服务 | 说明 |
|---|---|---|---|
| 80 | TCP | HTTP | iRedAdmin、Roundcube 初始访问,通常重定向到 HTTPS |
| 443 | TCP | HTTPS | Webmail (Roundcube)、iRedAdmin 管理后台 |
邮件相关端口通过 iptables DNAT 转发映射至虚拟机,Web 相关端口则通过宿主机 Nginx 反向代理 实现。
那么 PVE 的网络配置文件如下:
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage parts of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT read its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto eno1
iface eno1 inet static
address 192.0.2.10/27
gateway 192.0.2.1
up route add -net 192.0.2.0 netmask 255.255.255.224 gw 192.0.2.1 dev eno1
# route 192.0.2.0/27 via 192.0.2.1
iface eno1 inet6 static
address 2001:db8:abcd:1::2/64
gateway fe80::1
up ip -6 route del 2001:db8:abcd:1::/64 dev eno1
auto vmbr0
iface vmbr0 inet static
address 10.0.0.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
iface vmbr0 inet6 static
address 2001:db8:abcd:1::3/64
post-up /sbin/ip -f inet6 neigh add proxy 2001:db8:abcd:1::/64 dev vmbr0
pre-down /sbin/ip -f inet6 neigh del proxy 2001:db8:abcd:1::/64 dev vmbr0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o eno1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o eno1 -j MASQUERADE
# RDP 端口映射
post-up iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 3389 -j DNAT --to-destination 10.0.0.100:3389
post-down iptables -t nat -D PREROUTING -p tcp -i eno1 --dport 3389 -j DNAT --to-destination 10.0.0.100:3389
# SMTP - 25 端口映射
post-up iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 25 -j DNAT --to-destination 10.0.0.233:25
post-down iptables -t nat -D PREROUTING -p tcp -i eno1 --dport 25 -j DNAT --to-destination 10.0.0.233:25
# SMTPS - 465 端口映射
post-up iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 465 -j DNAT --to-destination 10.0.0.233:465
post-down iptables -t nat -D PREROUTING -p tcp -i eno1 --dport 465 -j DNAT --to-destination 10.0.0.233:465
# Submission - 587 端口映射
post-up iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 587 -j DNAT --to-destination 10.0.0.233:587
post-down iptables -t nat -D PREROUTING -p tcp -i eno1 --dport 587 -j DNAT --to-destination 10.0.0.233:587
# IMAP - 143 端口映射
post-up iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 143 -j DNAT --to-destination 10.0.0.233:143
post-down iptables -t nat -D PREROUTING -p tcp -i eno1 --dport 143 -j DNAT --to-destination 10.0.0.233:143
# IMAPS - 993 端口映射
post-up iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 993 -j DNAT --to-destination 10.0.0.233:993
post-down iptables -t nat -D PREROUTING -p tcp -i eno1 --dport 993 -j DNAT --to-destination 10.0.0.233:993
# POP3 - 110 端口映射
post-up iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 110 -j DNAT --to-destination 10.0.0.233:110
post-down iptables -t nat -D PREROUTING -p tcp -i eno1 --dport 110 -j DNAT --to-destination 10.0.0.233:110
# POP3S - 995 端口映射
post-up iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 995 -j DNAT --to-destination 10.0.0.233:995
post-down iptables -t nat -D PREROUTING -p tcp -i eno1 --dport 995 -j DNAT --to-destination 10.0.0.233:995
部署 iRedMail 邮件系统
截止到作者部署iRedMail时版本号为1.74,还不支持最新的Debian 13,在PVE里新建好Debian 13虚拟机安装iRedMail会报错,本想修改Debian的版本号强制安装在Debian 13上,但是社区里有人反馈强制安装后Dovecot组件会报错,只好重新部署一遍Debian 12虚拟机。
iRedMail官方安装文档已经很详细了,地址:链接

设置完整域名(FQDN)的主机名
在安装 Debian 虚拟机 时,安装向导会提示输入 hostname(主机名)。
这里直接填写为 mail,例如:
Hostname: mail
如果在安装时未填写或想修改,也可以在系统安装完成后手动编辑主机名文件:
nano /etc/hostname
修改为:
mail

验证主机名:
$ hostname
mail
在 /etc/hosts 文件中定义主机名与 IP 地址的对应关系:
10.0.0.233 mail.gaorkang.cn mail
验证主机全名(FQDN):
输入以下命令确认主机名解析是否正确:
root@mail:~# hostname -f
mail.gaorkang.cn

下载和安装 iRedMail
iRedMail 官网下载链接:地址
在服务器 Shell 中执行以下命令拉取安装包(以 1.7.4 为例):
wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.7.4.tar.gz
解压缩:
cd /root/
tar zxf 1.7.4.tar.gz
进入解压后的目录并启动安装程序:
cd /root/iRedMail-1.7.4
bash iRedMail.sh
使用FinalShell这个shell工具的话,在安装iRedMail时会显示不完整,可以更换一个其他的shell软件来完成安装。

安装过程:
欢迎界面与使用条款
直接按Enter键继续。
选择邮件存储路径
默认路径为/var/vmail/,一般保持默认即可。
选择账户存储数据库类型
可选择:OpenLDAPMariaDBPostgreSQL
根据自身熟悉的数据库类型进行选择。

设置数据库管理员密码

添加第一个邮件域名
这里应填写你的顶级域名(例如gaorkang.cn),
不要使用主机名(如mail.gaorkang.cn)。
设置 Webmail 与 iRedAdmin 管理后台登录密码

选择需要安装的组件
安装程序会列出可选服务组件(如 Roundcube、SOGo、Fail2ban 等)。
确认安装
检查无误后输入y并回车开始安装。
安装完成后,所有设置的密码,后台等地址以及系统生成的DKIM 记录,都会保存在/root/iRedMail-1.7.4/iRedMail.tips 里
配置 DNS 记录
A 记录
NAME TTL TYPE DATA
mail.gaorkang.cn 1800 A 192.0.2.10
在华为云域名解析管理中将mail.gaorkang.cn 指向 Hetzner 宿主机的公网 IPv4 地址,用于访问 iRedMail 的后台,以及 STMP 服务器地址等。

反向 PTR 记录
反向 PTR 是和 A 记录相反的记录,需要去云服务商处设置,在 Hetzner 后台中 ipv4 里添加 mail.gaorkang.cn 的反向记录。

MX 记录
NAME PRIORITY TYPE DATA
gaorkang.cn 10 mx mail.gaorkang.cn
该记录的最终结果是,发送到的电子邮件[user]@gaorkang.cn将被传送到服务器mail.gaorkang.cn。

autodiscover 记录
NAME PRIORITY TYPE DATA
autodiscover.gaorkang.cn 10 A mail.gaorkang.cn
autoconfig.gaorkang.cn 10 A mail.gaorkang.cn
在某些客户端(Thunderbird)配置收发信服务时,可以自动识别和配置服务器。华为云 DNS解析不支持域名,记录 mail.garkang.cn的 A 记录 IP 地址即可。


SPF 记录
SPF 是一种反垃圾邮件和网络钓鱼方法,它使用 DNS SPF 记录来定义哪些主机有权为某个域名发送电子邮件。
gaorkang.cn. 3600 IN TXT "v=spf1 mx -all"

DKIM 记录
DKIM(DomainKeys Identified Mail)通过给邮件加密签名来验证邮件是否被篡改、是否确实来自你的域名。
系统会自动生成一对密钥,公钥发布在 DNS,私钥存放在服务器中。
在 iRedMail 虚拟机 Shell 里输入以下命令可查看公钥:
amavisd showkeys
或在安装日志文件 /root/iRedMail-1.7.4/iRedMail.tips 中查找。
华为云 DNS 不允许单条 TXT 记录超过 255 个字符,请保持引号和空格格式,不要换行。
root@mail:~# amavisd showkeys
; key#1 2048 bits, s=dkim, d=gaorkang.cn, /var/lib/dkim/gaorkang.cn.pem
dkim._domainkey.gaorkang.cn. 3600 TXT (
"v=DKIM1; p="
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAokPZscmr1QPXkMKtzjqN"
"PsGMDI61uxFpQBvmR4zaNzGdqrPCha7dz1S7vMK/7CbZJlDN/Pw+EJEcqAVAdDVO"
"AxHcNILBL9NF6Bchc2alFuoIvNcShuVp0rf7JgVM+9T/jcTDBRD1LqjH0yMji6wZ"
"c7NxmJp8HceIRZD5U3KZcvI0G8q1HZzew/rvLIoYdXGB12xjJ0DkVljijFyqWOel"
"KsIPMPQURM5EUYGWdE5TqTzQPhVIGU8VPd+f23MJIEVKnuFedWuyk4UyD/qbQbm3"
"nP4ZpQYq7vkN8bsG0qjEf9KPhj943GSawK2o7t/isVifEupzE9Y4ZCl3xC7iCVfp"
"1QIDAQAB")

DMARC 记录
DMARC 严重依赖 SPF 和 DKIM 记录,当收件服务器收到邮件时,它会检查 SPF、DKIM 的验证结果,然后根据你在 DNS 上配置的 DMARC 策略来决定:接受、隔离、拒绝。
"v=DMARC1; p=quarantine; rua=mailto:dmarc@gaorkang.cn"

注册Google Postmaster Tools
根据 iRedMail 文档,这是可选的但是强烈建议,操作很简单,在Google Postmaster Tools 网站,添加下邮件域名就好。
作用:给你的邮局加上 Gmail 官方的“送信监控面板”,能看到发信健康度、信誉、垃圾率等核心指标。

宿主机反向代理
在完成 iRedMail 安装和 DNS 解析配置后,为了让公网可以正常访问邮件系统的 Web 界面(Roundcube、iRedAdmin、SOGo 等),需要在 Proxmox VE 宿主机 上安装 Nginx 并通过 ACME 申请 SSL 证书,实现反向代理。
安装 nginx、acme
apt update
apt install -y nginx
curl https://get.acme.sh | sh
source ~/.bashrc
通过 Acme 申请域名证书
申请证书
~/.acme.sh/acme.sh --issue -d mail.gaorkang.cn --standalone
安装证书到 Nginx 目录
~/.acme.sh/acme.sh --install-cert -d mail.gaorkang.cn \
--key-file /etc/nginx/conf.d/mail/privkey.pem \
--fullchain-file /etc/nginx/conf.d/mail/fullchain.pem \
--reloadcmd "systemctl reload nginx"
配置 Nginx
在 /etc/nginx/conf.d/ 下创建 mail.conf 文件:
server {
listen 80;
server_name mail.gaorkang.cn;
# 重定向 HTTP 到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name mail.gaorkang.cn;
# SSL 证书配置
ssl_certificate /etc/nginx/conf.d/mail/fullchain.pem;
ssl_certificate_key /etc/nginx/conf.d/mail/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# Roundcube
location /mail/ {
proxy_pass https://10.0.0.233/mail/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# iRedAdmin
location /iredadmin/ {
proxy_pass https://10.0.0.233/iredadmin/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# SOGo
location /SOGo/ {
proxy_pass https://10.0.0.233/SOGo/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态文件(如 SOGo 的静态资源)
location /SOGo.woa/WebServerResources/ {
proxy_pass https://10.0.0.233/SOGo.woa/WebServerResources/;
proxy_set_header Host $host;
}
# 其他 SOGo 相关路径
location /Microsoft-Server-ActiveSync {
proxy_pass https://10.0.0.233/Microsoft-Server-ActiveSync;
proxy_set_header Host $host;
}
}
检查Nginx文件是否正确:
nginx -t
重新加载Nginx:
systemctl reload nginx
完成后,公网访问 https://mail.gaorkang.cn/ 就可以通过 Nginx 反向代理访问 iRedMail 的各个 Web 界面,同时启用 HTTPS 加密。
iRedMail配置验证
1.验证DNS 配置是否正确
可以通过访问 MXToolbox SuperTool 网站,输入自己的邮箱域名(例如 mail.gaorkang.cn),即可快速检测邮箱相关的 DNS 记录 是否配置正确,包括:
- MX(邮件交换)记录
- SPF、DKIM、DMARC 等邮件验证记录
- Autodiscover / Autoconfig 自动配置记录
该工具会自动分析并给出详细的检测结果,方便排查配置错误。

2.检测公网是否可以访问iRedAdmin、Roundcube、SOGo
iRedAdmin 是 iRedMail 自带的 Web 管理后台,用于对邮件系统进行可视化管理。
域名路径: https://mail.gaorkang.cn/iredadmin/
Roundcube Webmail
Roundcube 是一个基于 PHP 开发的网页邮件客户端,用于让普通用户通过浏览器直接收发邮件,不过功能略单一。
域名路径:https://mail.gaorkang.cn/mail/
SOGo Groupware
SOGo 是一个功能强大的 Web 协作平台,除了可以用作 Webmail,还支持邮件、日历、联系人三合一、任务与会议日程管理、兼容 ActiveSync 协议,可与手机原生“邮件/日历/联系人”同步、支持 Outlook、Thunderbird、iOS、Android 等客户端同步,无限接近 Outlook 的工作流。
域名路径:https://mail.gaorkang.cn/SOGo/

3.给常用的公共邮箱发信测试
QQ 邮箱
QQ邮箱算是国内使用很多的了,而且据说 QQ 邮箱审核也比较严格,加上本身部署就在境外的 IP 上,可能会被拦截进垃圾箱。不过实测下来,QQ 邮箱收件正常。

Outlook
微软邮箱审核也是出名的严格,很多自部署域名邮箱,都会被拒收,DNS 配置正确,实测也没问题。

Gmail
Gmail审核策略还是相对来说比较宽松的,DNS 配置正确基本不会退信。

iRedMail使用
Web 使用
在安装完iRedMail 后,系统会生成一个管理员账号,通常是postmaster加域名地址,这个管理员账号既可以作为一个正常邮箱账户,也是iRedAdmin 后台的管理员。
通过该账号登录 iRedAdmin 管理后台,即可执行以下操作:
- 创建、删除、禁用邮箱账户
- 分配邮箱存储容量(配额)
- 管理域名与别名邮箱
- 查看系统运行状态与日志
创建完成邮箱账户后,用户即可通过 Roundcube Webmail 面板或 SOGo Groupware 面板来登录使用,实现邮件收发与协作。

搭配Thunderbird 使用
Thunderbird 是由 Mozilla 基金会 开发的一款免费、开源的电子邮件客户端,支持 Windows、macOS、Linux、iOS、Android 等多个平台。它以 安全、高效与可扩展性 著称,为用户提供完善的邮件管理解决方案。
只要在域名的 DNS 中正确配置 autodiscover 记录,Thunderbird 在设置邮箱账户时就会自动检测并配置服务器参数。
用户只需输入 邮箱地址和密码,即可快速完成账户配置

总结
以上就是自部署邮件服务器的全过程啦,自建邮件服务器虽能完全掌控数据、自由收发邮件,但部署与维护成本高,对P 要求严格。如果只是日常使用,还是选择选择公共邮箱的自定义域服务吧。

