使用开源邮局系统 Poste.io 搭建属于自己的域名邮箱
使用开源邮局系统 Poste.io 搭建属于自己的域名邮箱
云服务器+1Panel+Docker+Poste.io 快速搭建邮局服务。
一、简介
Poste邮箱是一款基于Docker容器化部署的开源邮件服务器解决方案,专为个人用户、中小型企业及组织设计,具备快速部署和低维护成本的特点。
主要功能
- 邮件协议支持:原生支持
SMTP
、
IMAP
、
POP3
协议,兼容主流邮件客户端(如Outlook、Thunderbird等)。 - Web管理界面:提供多层级权限管理(系统管理员、域管理员、邮箱用户),支持通过Web界面进行用户、域名、配额等配置。
- Webmail客户端:集成
Roundcube
作为
HTTPS
加密的网页邮箱,用户可直接通过浏览器收发邮件。 - 多域名与配额管理:支持添加多个顶级域名,可设置邮箱存储空间限制或邮件数量配额。
- 自动化运维:集成
Let's Encrypt
,自动签发并更新SSL证书;提供邮件转发、别名(Alias)、
Catch-All
(全局接收)功能。 - 数据统计:支持邮件投递统计分析和Sieve脚本过滤(如自动回复、邮件重定向),满足个性化需求。
安全防护
- 反垃圾邮件与病毒检测:内置Rspamd反垃圾邮件引擎和ClamAV防病毒引擎,支持木马、病毒、恶意软件的实时扫描。
- 加密与认证:强制使用
SSL/TLS
加密传输,杜绝明文通信;支持
SPF
、
DKIM
、
DMARC
、
SRS
等邮件认证协议,提升邮件可信度。
二、准备工作
搭建服务之前需要做以下准备:
一个域名
一台开放 25 端口的服务器
服务器要求
- 服务器配置最低
1核1G内存(如需使用反垃圾邮件/防病毒功能,推荐
2核2G内存及以上)。 - 服务器防火墙/安全组必须开放
25端口(SMTP)
,用于邮件发送。 - 其他需开放端口:
143(IMAP)、993(IMAP)、465(ESMTP)、587(ESMTP)
、995(POP3)等。 - 支持配置反向DNS(rDNS)。(加分项,可提升邮件可信度,避免邮件被标记为垃圾。)
注意:部分云服务器厂商可能默认封禁25端口,需提前了解商家相关限制和申请开通。
测试25端口可用性
使用命令
telnet smtp.qq.com 25
,如下图所示:若返回 220 则说明端口正常。
Trying 43.129.255.54...
Connected to smtp.qq.com.
Escape character is '^]'.
若出现类似下面的情况,则说明端口不可用,就不用继续按照步骤操作了,需要换一台服务器。
Trying 43.129.255.54...
Connection failed: Connection refused
Trying 240e:ff:f100:1009::120...
telnet: Unable to connect to remote host: Connection refused
系统环境准备
- 安装
Docker
及
Docker Compose
环境(安装教程可看参考本博客内已有的文章,也可以选择安装1Panel,安装时会自动安装好Docker
及
Docker Compose)。 - 低内存服务器需添加
Swap
分区,避免运行崩溃。
域名解析配置
设置系统Hostname
通过SSH登录服务器,使用以下命令设置主机名(需与邮件服务器域名一致):
sudo hostnamectl set-hostname mail.example.com
验证一下修改是否生效:
hostname # 应返回 mail.example.com
hostname -f # 应返回完整域名(FQDN),如 mail.example.com
配置DNS解析记录
在DNS服务商的DNS记录页面配置如下记录:
主机记录 记录类型 记录值
mail A 记录值为服务器的 IP
smtp CNAME mail.example.com
imap CNAME mail.example.com
pop CNAME mail.example.com
@ MX mail.example.com
@ TXT v=spf1 mx ~all
配置rDNS (PTR)
部分支持的商家(比如CloudCone)可以直接在后台进行设置,填上服务器IP对应的邮箱服务器的域名即可。
另一部分支持的商家(比如RackNerd)需要发工单让客服设置。
注意:部分商家不支持配置 rDNS。
三、部署Poste.io服务
部署Poste.io容器
博主这边是通过 Docker 进行部署的,由于默认的80端口(HTTP)和443端口(HTTPS)已被本地反向代理服务使用,所以将映射的端口修改成了1080端口和1433端口(实际安装时根据自己需求选择端口号),命令如下。
docker run -d \
-p 25:25 \
-p 1080:80 \
-p 1433:443 \
-p 110:110 \
-p 143:143 \
-p 465:465 \
-p 587:587 \
-p 993:993 \
-p 995:995 \
-e TZ=Asia/Shanghai \
-v /your-data-dir/data:/data \
--name "mailserver" \
-h "mail.example.com" \
analogic/poste.io:latest
安装完成后邮箱网页端默认是启用
HTTPS
的,所以服务器防火墙需要开放1433端口(实际安装时根据自己需求开放端口号),就可以通过链接
https://IP:1433
访问邮箱配置页面了。
进入邮箱配置页面后,需要先设置好
hostname
(填写你的域名) 以及管理员邮箱(XXX@mail.example.com)。
配置SSL证书
如下图所示,找到”System settings——>TLS certificate“,点击绿色按钮,进入Let‘s Encrypt证书申请页面(如果本地已有证书,在绿色按钮下方选择证书文件上传即可)。
来到
Let‘s Encrypt
证书申请页面,填入自己的域名,勾选”Enabled“,点击「Save changes」保存,就会自动向”Let‘s Encrypt“官方申请SSL证书。
博主阅读过网络上搭建poste服务的相关文章在这一步都能成功申请到证书,但博主实测无法直接申请到证书,猜测应该是没有账户授权认证导致的。
为了解决这个问题,我这里使用1Panel来申请证书。如何使用1Panel来申请证书可以看博主的这篇文章:如何使用1Panel免费申请与续签SSL证书?
申请好证书后,可以使用1Panel集成的
OpenResty
反向代理服务配置证书。在1Panel界面找到“网站——>网站”,点击「创建」。
在弹出的页面中点击点击「反向代理」,填入自己的邮箱域名,由于在安装完Poste.io容器后博主使用的访问链接是:https://IP:1433,所以在“代理地址”这一栏左侧协议选择“https”,右侧填入“127.0.0.1:1443”。填写完成后,点击「确认」,完成网站创建。
如下图所示,可以看到已创建的网站,点击「配置」。
找到“HTTPS”选项卡,点击「启用HTTPS」;为了安全起见,“HTTP选项”选择“访问HTTP自动跳转到HTTPS”;“SSL选项”一栏选择“选择已有证书”;“Acme账户”和“证书”一栏选择已使用1Panel创建的
Acme
账户和申请好的证书。配置好后,点击最下方的「保存」按钮。
配置好SSL证书后,就可以使用域名安全地访问邮箱Web页面了。
配置DKIM记录
输入先前配置的管理员邮箱和密码进行登录,登录管理页面后,找到“Virtual domains”,在域名列表页面点击“根域名”。
进入基础信息页面后,找到”DKIM key“这栏,点击”regenerate key“,保存好系统自动生成的
DKIM
信息中的主机名和记录值。
在DNS服务商的DNS记录页面填写相应根域的
DKIM
记录和记录值,格式如下图所示:
主机记录 记录类型 记录值
s20250318452 TXT k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwcGPu0PwWHjVL76lnVYd…IDAQAB
四、测试发件
点击「Webmail」进入邮箱用户界面。
使用管理员邮箱测试向QQ邮箱发送邮件。如下图所示,QQ邮箱可以正常接收自建邮箱发送的邮件。
五、测试垃圾邮件匹配度
打开mail tester网站,发送一封邮件到提示的邮件地址。发送完成后查看邮件得分,得分越高,发送的邮件越不容易被识别为垃圾邮件。
扣分项:
反向DNS无法与发件域匹配:博主搭建服务的时候没有在服务器供应商那里设置,所以会有这个提示。
信息没有包含List-Unsubscribe标头:List-Unsubscribe标头是一个可选的电子邮件标头,添加到邮件中能允许订阅者查看和取消订阅邮件。这个不是大问题,对于自建的邮箱,完全可以忽略这个提示,不做优化。
至此,Poste邮件就搭建完成啦~