什么是Poste.io
Poste.io,一款用 Docker 分发的开箱即用的邮局集合环境,官方宣传可在 5 分钟内搭建好一个高性能的完整邮局系统
具有以下特点
- 支持 SMTP、IMAP、POP3 协议,支持 SSL/TLS 加密
- 支持多域名,多用户,多邮箱
- 内置了
ClamAV病毒查杀引擎
和RSPAMD垃圾邮件过滤器
- 使用
RoundCube
作为前端交互,拥有多种管理方式(基于网页的邮局账号管理、RESTful API 和 容器内命令行工具) - 支持邮件过滤、自动转发、自动回复、邮件签名、邮件黑白名单等功能,可以为每一位邮箱用户限制使用空间或者电子邮件配额
- 支持从 Let’s Encrypt 获取免费的 SSL 证书
- 使用 Docker 容器进行分发,与服务器其他程序进行隔离,便于更新
搭建环境要求
- 一个域名,用来作为你的邮箱域名,比如说
example.com
- 一个服务器,需要有一个公网 IP 地址,并且确保你的服务器提供商允许你使用 25 端口
- 一个 DNS 服务商,用来设置域名的 DNS 记录,比如
Cloudflare
,也可以使用其他的 DNS 服务商 - 一个能够访问互联网的电脑 / 手机,用来部署和管理邮件服务器
安装部署
volumes: mail-data: name: mail-data driver: local driver_opts: # 这部分定义了卷的挂载选项 o: bind # 使用bind挂载 type: none # 不使用特殊文件系统 device: ./data # 将容器内的数据保存到当前目录下的data文件夹 services: mailserver: hostname: mail.example.com # 邮件服务器的主机名,必须与你的域名一致 container_name: mail.example.com image: analogic/poste.io # 使用官方提供的poste.io镜像 restart: always # 容器崩溃后自动重启 ports: # 暴露邮件服务所需的所有端口 - 25:25 # SMTP - 用于接收其他服务器发来的邮件 - 80:80 # HTTP - 用于管理邮件服务器 - 443:443 # HTTPS - 用于管理邮件服务器 - 465:465 # SMTPS - 加密的SMTP - 587:587 # Submission - 用于客户端提交邮件 - 110:110 # POP3 - 收取邮件(明文) - 995:995 # POP3S - 加密的POP3 - 143:143 # IMAP - 收取邮件(明文) - 993:993 # IMAPS - 加密的IMAP - 4190:4190 # Sieve - 邮件过滤(可选) environment: - TZ=Asia/Shanghai # 请将时区设置为你所在的时区(必须) - DISABLE_CLAMAV=TRUE # 禁用病毒扫描以节省资源 - DISABLE_RSPAMD=TRUE # 禁用垃圾邮件过滤以节省资源 - DISABLE_ROUNDCUBE=TRUE # 禁用 RoundCube Webmail 界面 volumes: - mail-data:/data # 将数据卷挂载到容器内的/data目录
mail.example.com
替换为你的域名,代码保存为 docker-compose.yml
文件,放到你喜欢的目录下,然后执行以下命令
sudo docker-compose up -d
默认 compose 直接占用了 80/443 端口,你可以修改这个 compose 文件,把这些端口改到别的端口上去
设置解析记录
- A 记录: 将
mail.example.com
指向你的服务器 IP 地址 - MX 记录: 将
@
或者域名本身指向mail.example.com
,优先级设置为10
MX 记录是用来指定邮件服务器的,当有人给你发邮件时,对方的邮件服务器会根据 MX 记录找到你的邮件服务器,然后将邮件发送到你的服务器
其中,优先级越小,优先级越高,当有多个 MX 记录时,邮件服务器会按照优先级从高到低依次尝试发送邮件。这个值一般设置为 10,20,30 等等 - CNAME 记录: 将
smtp.example.com
、imap.example.com
和pop.example.com
指向mail.example.com
这样你的邮件客户端才可以使用这些常用域名连接到你的邮件服务器,当然,你也可以直接使用mail.example.com
连接
访问mail.example.com
即可打开poste.io初始化界面

在这里,你需要将:
Mailserver hostname
设置为前面你添加 A 记录的地址Administrator email
是你的管理员邮箱地址,按照名称
@你的域名主域名
域名主域名
指的是填入example.com
Password
你的密码
当你完成了一切的设置之后,你将会看到这个页面

DKIM设置
DKIM(DomainKeys Identified Mail)是一种用于验证邮件发送者身份的技术,其通过在邮件头部添加一个签名,接收方可以通过公钥验证签名的合法性,从而判断邮件是否来自合法的发送者。
设置 DKIM 记录
生成 DKIM 密钥对,然后将公钥添加到 DNS 记录。
在 Poste.io 管理页面中,点击左边栏的 Virtual Domains
,然后点击其展示的你的邮件域名,接着点击 DKIM Keys
条目中的 create a new key
按钮后,你将会看到系统为你生成的 DKIM 密钥对。



接着将 DKIM 公钥添加到 DNS 记录中。
以上图为例子,我们需要添加一个 TXT 记录,其中: 主机名为 "s20250318762._domainkey" 注意,主机名应该填写你在 Poste.io 中生成的 DKIM 密钥对的 主机名,不要用我的主机名口牙 记录值为 "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq2iuiZ2ZnnW9YUU4kqJfoq/CD0i22tp30sidYsT8mvNig6EYjBSFDZ++IA0ILYdHBMtHuWO3sKDDo/6H9MEKpZN4iVDkvm4IIxqiMkISQk3kqUVCVyTLnudJQrTn+sAAnf5ZQKu6JJG636W2rGYOZdOnKWKaHqc1Eu7iuGECrQ35NHNwPE/yZRs06/ANgSplUcoUQZr0HBd9+NmwO1ePm24NnuIiE61yYS8NSonJPuxw3BDhK89cSKvY9UwIaVscSeWqmR0iDS1SjJ0dxj3e9GLkj/h7LJ6YnUZfwt1PM2XFOkEU2gJjgxKZGTLSon2wPI7W6R4KpSTVzc5AthI9IwIDAQAB" 简单解释一下各个字段的含义: - v=DKIM1:表示使用 DKIM1 版本 - k=rsa:表示使用 RSA 算法 - p="" :表示 DKIM 公钥,这里是我生成的一个 DKIM 公钥,你需要将你生成的 DKIM 公钥填入这里 注意,记录值需要在开头和结尾添加双引号,否则会被解析为多个记录,并且需要添加 "v=DKIM1; k=rsa;" 前缀
cloudflare中添加一个TXT记录

设置 SPF 记录
SPF 记录是用来指定允许发送邮件的 IP 地址的,这样接收方的邮局系统就可以根据 SPF 记录来验证邮件的合法性。
SPF 总共分为三块:版本信息、机制 和 限定符。
我们以一个 SPF 记录来解释各个字段的含义:
v=spf1 mx ip4:192.168.1.1 include:example.com ~all
v=spf1
表示使用 SPF1 版本,而后的 mx
表示允许 MX 记录中指定的 IP 地址发送邮件,ip4:192.168.1.1
表示允许指定的 IP 地址发送邮件,include:example.com
表示允许 example.com
的 IP 地址发送邮件,~all
表示如果邮件不符合 SPF 记录的规则,那么邮件会被标记为垃圾邮件。
这里就用 v=spf1 mx ~all
为例子,添加一个 SPF 记录
主机名为 "@" 记录值为 "v=spf1 mx ~all"
在 Cloudflare 中添加一个 TXT 记录

设置 DMARC 记录
DMARC 记录是用来指定邮件的验证策略,是丢弃还是放行,抑或是放到垃圾箱内,以及如何报告验证结果。
DMARC 记录分为三个字段:版本信息、验证策略 和 报告地址。
我们以一个 DMARC 记录来解释各个字段的含义
v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com
- v=DMARC1:DMARC 版本号,当前只有一个版本,所以固定为 1。
- p=none:邮件验证策略,可以是以下几种值:
- none:不采取任何行动,只生成报告
- quarantine:将邮件放入垃圾箱
- reject:直接拒绝邮件
- rua=mailto:dmarc@example.com
- 报告地址,用于聚合报告接收地址,如发送数量、验证通过率等
- ruf=mailto:dmarc@example.com
- 报告地址,用于失败报告接收地址,接收单次验证失败的详细信息
这里就用 v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com
为例子,添加一个 DMARC 记录
主机名为 "_dmarc" 记录值为 "v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com"
在 Cloudflare 中添加一个 TXT 记录

Cloudflare 有一个 DMARC 的设置页面,你可以直接在这个页面设置 DMARC 记录,而不用手动添加 TXT 记录。而且,Cloudflare 还会为你提供一个 DMARC 报告的页面,你可以在这个页面查看 DMARC 报告。

现在你的域名邮箱已经设置好了 DKIM、SPF 和 DMARC 记录,你的邮件就不会被当作垃圾邮件了。
你可以使用 Mail Tester 来测试你的邮件是否符合标准。

添加 SSL 证书
在 Poste.io 管理页面中,点击左边栏的 System settings
,然后点击 TLS Certificate
,点击 issue free letsencrypt.org certificate
按钮。

在弹出的页面中,Common name
填写你的域名,比如 mail.example.com
,并且在 Alternative names
中填写你的其他域名,比如 smtp.example.com
、imap.example.com
和 pop.example.com
,然后点击 Save Changes
按钮。过一会儿,你的 SSL 证书就会生成好了。

如果出现错误,你可以尝试删除 Alternative names
中的域名,然后再次尝试申请 SSL 证书。
发布者:木木,转载请注明出处:https://blog.mmcoo.de/7902.html