关于poste
poste是一款开源邮件服务软件,可以很方便的搭建:SMTP + IMAP + POP3 + 反垃圾邮件 + 防病毒 + Web 管理 + Web 电子邮件,支持以下特性:
- SPF、DKIM、DMARC、SRS 的原生实现,带有简单的向导
- 用于检测木马、病毒、恶意软件的防病毒引擎 ( ClamAV )
- 内置垃圾邮件过滤器( RSPAMD )
- HTTPS 上的Webmail 客户端(Roundcube)
- 通过Sieve 脚本进行电子邮件重定向、自动回复和其他过滤(电子邮件所有者管理,每个操作都可以编写脚本)
- 用于限制邮箱空间或电子邮件数量的配额
- 系统管理员、域管理员、电子邮件所有者具有不同权限的Web 管理。
- 内置Microsoft 产品的自动发现功能,Thunderbird…
- 帮助正确设置域和邮件服务器的诊断
- SMTP - 端口 25、465 (TLS)、587
- POP3 - 端口 110、995 (TLS)
- IMAP - 端口 143、993 (TLS)
- SSL TLS无处不在!没有个人数据、电子邮件、登录信息通过互联网未加密。
- 默认情况下,所有密码都存储为加盐SHA512哈希(5000 轮)。攻击者将很难破解您的密码。
- 整个邮件服务器容器由 Docker 与其他应用程序隔离。
创建持久化数据目录
mkdir /volume1/Docker/poste/data
运行 Poste
docker run --name mailserver --restart=always \
-p 20023:80 \
-p 20024:443 \
-p 25:25 \
-p 110:110 \
-p 143:143 \
-p 465:465 \
-p 587:587 \
-p 993:993 \
-p 995:995 \
-p 4190:4190 \
-e TZ=Asia/Shanghai \
-v /volume1/Docker/poste/data:/data \
-h "mail.xxx.com" \
-d analogic/poste.io
-p 20023:80 为网页版访问端口
-p 20024:443 为网页版访问端口
如果直接使用 -p 8080 和 -p 443:443 则域名解析后无需任何代理配置
如果参考本文端口配置则需配置 nginx 代理
其他均为邮件服务需要的端口
重点: *
*1. 如果是通过 DDNS 建立邮件服务器的话, mail.xxx.com 解析到你的动态外网IP地址即可,配合动态域名解析工具
2. 家用宽带是没有开放 80 和 443 端口的,但是不重要,邮件服务器中的这个 80 和 443 端口只是用来做 web 版邮箱使用的时候才会用到,如果要使用 web 版邮箱的话,只需要在添加一个 email.xxx.com 或者你自己喜欢的域名做个带端口访问的地址即可,也可以结合 FRPS + FRPC+BT面板/Nginx 做无端口访问也行
3. 如果启动提示 25 端口被占用的话,可通过 netstat -apn|grep 25
查看是否是postfix导致 ,多数情况下是 postfix
占用,systemctl stop postfix #停止服务, systemctl disable postfix #禁止开机启动, yum -y remove postfix #卸载postfix
即可, 如果已经执行了上面的脚本,则再次执行 docker start mailserver
参数说明
参数名 | 说明 |
---|---|
-d | 后台运行 |
–name | 运行容器名 |
–restart | 自动重启 |
-p | 端口映射 【宿主机端口:容器端口】 |
-e | 系统参数/环境变量 |
-v | 数据持久化目录挂载【宿主机路径:容器内路径】 |
-h | 绑定邮件服务器域名 |
配置域名解析
基本环境说明
- 一级域名 xxx.com
- 服务器外网IP地址 123.123.123.123
- 服务器内网地址 192.168.1.110
需要配置以下解析记录
主机记录 | 记录类型 | 记录值 | 说明 |
---|---|---|---|
A | 123.123.123.123 | ||
imap | CNAME | mail.xxx.com | |
pop | CNAME | mail.xxx.com | |
smtp | CNAME | mail.xxx.com | |
@ | MX | mail.xxx.com | |
@ | TXT | v=spf1 mx ~all | |
s20210915655._domainkey.xxx.com | TXT | k=rsa;****wIDAQAB | 此项在后面 【设置DKIM验证】 有说明 |
Nginx 配置代理
仅供参考
server {
listen 80;
server_name mail.xxxx.com;
location / {
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_intercept_errors off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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;
proxy_pass http://192.168.1.110:20023/;
}
}
server {
listen 443 ssl;
server_name mail.xxxx.com;
ssl_certificate /你的证书路径/xxx.pem;
ssl_certificate_key /你的证书路径/xxx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_intercept_errors off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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;
proxy_pass https://192.168.1.110:20024/;
}
}
配置 Poste
浏览器访问 http://mail.xxx.com 或 https://mail.xxx.com 会让你配置管理员的账号和密码
设置DKIM验证
为了防止进入垃圾箱,我们需要添加DKIM的配置,找到Virtual domains -> mail.ansheng.me请选择自己的域名 -> 点击create new key,并按照要求设置txt记录解析。
DKIM 整理工具
http://www.ewomail.com/list-20.html
整理完成后会在“整理显示区域”显示解析记录,接下来设置域名解析即可完成。
设置TLS SSL
- 域名申请SSL证书
- 如果是部署在公网的服务器可以直接使用下图的功能
- 配置已有证书
获得SSL证书后,打开poste后台 - System settings - TLS Certificate - 选择证书文件进行上传,见截图。
证书文件后缀说明
界面显示名 | 图片标记名 | 证书文件 |
---|---|---|
Private part of certificate | 私钥 | xxxxxxxxxx.key |
Intermediate certificate | 中级证书 | xxxxxxxxxx.csr |
Public part of certificate | 证书文件 | xxxxxxxxxx.pem |
可使用 Nginx 格式证书对应关系如下
界面显示名 | 图片标记名 | 证书文件 |
---|---|---|
Private part of certificate | 私钥 | xxxxxxxxxx.key |
Intermediate certificate | 中级证书 | xxxxxxxxxx.pem |
Public part of certificate | 证书文件 | 与 Intermediate certificate 使用同一个文件即可 |
SSL提供商会自动将中级证书合并到了证书文件(比如腾讯云),因此中级证书那个选项可以和证书一致,然后点保存,保存后需要重启容器生效:docker restart mailserver
重点: *
*1. 最好使用 Let’s Encrypt 通过 DNS 方式申请的通配符证书,否则有可能会报如下错误:
x509: certificate is not valid for any names, but wanted to match imap.xxx.com ****
**2. 上传证书后必须要重启才能生效 docker restart mailserver
**
验证
打开poste后台 - Server status
点击按钮 “ Connection diagnostics ”
邮件跑分测试
邮件跑分可以使用 https://www.mail-tester.com/ 这个工具,会检测你邮件存在的问题,并给出一定优化建议。当然这个工具得分并非绝对准确,结果只供参考。
开始测试
测试中
测试结果
客户端配置
如果你需要配置客户端,例如通过Gmail、Foxmail这些第三方的,请参考 Example client settings ,注意host和端口,我在iOS上面的Gmail已经配置成功,可以收发邮件,正常使用。
端口 | 描述 |
---|---|
25 | SMTP – mostly processing incoming mails |
110 | POP3 – standard protocol for accessing mailbox, STARTTLS is required before client auth |
143 | IMAP – standard protocol for accessing mailbox, STARTTLS is required before client auth |
465 | SMTPS – Legacy SMTPs port |
587 | MSA – SMTP port used primarily for email clients after STARTTLS and auth |
993 | IMAPS – alternative port for IMAP encrypted since connection |
995 | POP3S – encrypted POP3 since connections |
Email 客户配置方法
发件服务器
配置项 | 内容 |
---|---|
协议类型 | SMTP |
发件服务器 | smtp.xxx.com |
发件服务器端口 | 465 |
加密类型 | SSL/TLS |
收件服务器
配置项 | 内容 |
---|---|
协议类型 | IMAP |
收件服务器 | imap.xxx.com |
收件服务器端口 | 993 |
加密类型 | SSL/TLS |
注意:
1. 通过 Let's Encrypt
申请的证书,记得每 3 个月 更新一次,否则将失效
2. 更新证书后必须要重启才能生效 docker restart mailserver
评论区