侧边栏壁纸
博主头像
惬意小蜗牛博主等级

海内存知己,天涯若比邻!

  • 累计撰写 54 篇文章
  • 累计创建 143 个标签
  • 累计收到 57 条评论

目 录CONTENT

文章目录

Docker 部署 Poste 邮件服务器

惬意小蜗牛
2021-09-16 / 0 评论 / 10 点赞 / 4,074 阅读 / 2,028 字 / 正在检测是否收录...

关于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

需要配置以下解析记录

主机记录 记录类型 记录值 说明
mail 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.comhttps://mail.xxx.com 会让你配置管理员的账号和密码
file

设置DKIM验证

为了防止进入垃圾箱,我们需要添加DKIM的配置,找到Virtual domains -> mail.ansheng.me请选择自己的域名 -> 点击create new key,并按照要求设置txt记录解析。

file

file

DKIM 整理工具

http://www.ewomail.com/list-20.html

file

整理完成后会在“整理显示区域”显示解析记录,接下来设置域名解析即可完成。

设置TLS SSL

  • 域名申请SSL证书
  • 如果是部署在公网的服务器可以直接使用下图的功能

file

  • 配置已有证书
    获得SSL证书后,打开poste后台 - System settings - TLS Certificate - 选择证书文件进行上传,见截图。
    file

证书文件后缀说明

界面显示名 图片标记名 证书文件
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

file

点击按钮 “ Connection diagnostics ”

file

邮件跑分测试

邮件跑分可以使用 https://www.mail-tester.com/ 这个工具,会检测你邮件存在的问题,并给出一定优化建议。当然这个工具得分并非绝对准确,结果只供参考。

开始测试

file

测试中

file

测试结果

file

客户端配置

如果你需要配置客户端,例如通过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

10

评论区