699 字
3 分钟
Docker部署Poste.io邮局
前言
很多企业都有自建邮局的需求,本篇介绍如何使用Docker部署开源的Poste.io邮局系统。
需要占用的端口
80 - HTTP(用于 web 界面和未加密的邮件服务)443 - HTTPS(用于加密的 web 界面和邮件服务)25 - SMTP(用于发送邮件)587 - SMTP(用于加密的邮件发送)993 - IMAP(用于加密的 IMAP 邮件接收)995 - POP3(用于加密的 POP3 邮件接收)110 - POP3(用于未加密的 POP3 邮件接收)143 - IMAP(用于未加密的 IMAP 邮件接收)1:检查25端口是否能通
apt update && apt install telnet -ytelnet smtp.gmail.com 25- 如果显示下面的信息就代表是通的
Connected to smtp.gmail.com.Escape character is '^]'.220 smtp.gmail.com ESMTP d2e1a72fcca58-71dd9d6e713sm17347b3a.23 - gsmtp2:域名解析(以cloudflare为例)
| 类型 | 名称 | 内容 | 代理状态 | TTL |
|---|---|---|---|---|
| A | 服务器IP | 仅 DNS | 自动 | |
| CNAME | imap | mail.example.com | 仅 DNS | 自动 |
| CNAME | pop | mail.example.com | 仅 DNS | 自动 |
| CNAME | smtp | mail.example.com | 仅 DNS | 自动 |
| MX | example.com | mail.example.com | 仅 DNS | 自动 |
| TXT | example.com | v=spf1 mx ~all | 仅 DNS | 自动 |
| TXT | s20241002362._domainkey | k=rsa; p=MIIBIjA…xXX | 仅 DNS | 自动 |
最后一条
TXT记录需要部署完成后进面板查看名称和内容。替换
example.com为你的域名
3:docker-compose.yaml启动
services: mailer: image: analogic/poste.io container_name: mailer restart: always hostname: mail.example.com # 容器内主机名替换你的域名 network_mode: host environment: - TZ=Asia/Shanghai # 时区设置 - DISABLE_CLAMAV=TRUE # 禁用 ClamAV - DISABLE_RSPAMD=FALSE # 启用 Rspamd - DISABLE_ROUNDCUBE=FALSE # 启用 Roundcube volumes: - ./mailer:/data4:进入面板
-
mail.example.com使用这个域名进入管理面板 -
第一行默认,第二行设置管理员邮箱,例如:
admin@example.com,第三行输入管理员密码,smtp密码也是这个 -
左侧选择
系统设置,然后上面找到TLS证书,然后申请证书。通用名默认,替代名称里把smtp这些域名也填入进去,然后申请,查看下面的日志,申请完成后保存即可。 -
然后左侧选择
虚拟域名,然后点击域名,找到DKlM key,然后点击钥匙按钮激活,然后域名解析TXT类型的验证。 -
然后用管理员邮箱登录,测试发邮件即可。
poste.io批量创建邮箱脚本
#!/bin/bash
# Poste.io 容器ID或名称CONTAINER_ID="mailer"
# 邮箱的@后缀,也就是根域名DOMAIN="example.com"
# 所有邮箱账户的统一密码PASSWORD="admin123456"
# 如果域名不存在,则创建域名echo "创建域名 $DOMAIN (如果不存在)"docker exec $CONTAINER_ID poste domain:create $DOMAIN
# 创建邮箱账户for i in {100..200}do EMAIL="$i@$DOMAIN" echo "正在创建邮箱: $EMAIL" docker exec $CONTAINER_ID poste email:create $EMAIL $PASSWORD
# 检查上一个命令的退出状态 if [ $? -eq 0 ]; then echo "成功创建邮箱 $EMAIL" else echo "创建邮箱 $EMAIL 失败" fi
# 可选:添加小延迟以避免对服务器造成过大压力 sleep 1done
echo "邮箱创建过程完成。" Docker部署Poste.io邮局
https://blog.emohe.cn/posts/docker部署poste邮局/