- 资源准备
- 系统debian10,AMD EPYC Processor,1h2g
- 开放外网防火墙
880
8443
25
110
143
465
587
993
995
4190
- 域名(最好是
.com
,.net
,搭建域名邮箱不能使用纯数字域名,不被信任 ) - 通配符证书,推荐萌咖杂货店购买一年期的ssl证书,命名为
ca.crt
,server.key
- docker安装
- 部署 poste.io
- 安装命令:
docker pull analogic/poste.io
- 制作启动脚本:
vi poste-start.sh
docker run -d \
-p 880:80 -p 8443: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 /home/mail-data:/data \
--name "mailserver" \
-h "mail.95270811.xyz" \
--restart=always \
-t analogic/poste.io
- 注意:
mail.95270811.xyz
要改成自己的域名 - 启动poste.io:
./poste-start.sh
- mailserver设置
- 浏览器输入:
https://ip:8443
- 注册一个系统管理员,接着跳转到后台
- 依次点击
System settings
,TLS certificate
- 域名解析设置(以阿里云为例)
主机记录 | 记录类型 | 记录值 |
---|---|---|
@ | A | 1.2.3.4(ip地址) |
A | 1.2.3.4(ip地址) | |
smtp | CNAME | mail.95270811.xyz |
pop | CNAME | mail.95270811.xyz |
imap | CNAME | mail.95270811.xyz |
@ | MX | mail.95270811.xyz |
@ | TXT | v=spf1 mx ~all |
s20220922397._domainkey | TXT | k=rsa; p=MII......AB |
- 表里最后一行的数据获得:点击
Virtual domains
,show
,create new key
- 使用 NginxProxyManager反向代理
- 编辑
vi docker-compose.yml
version: "3"
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- /home/docker/NginxProxyManager/data:/data
- /home/docker/NginxProxyManager/letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: 'jc21/mariadb-aria:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- /home/docker/NginxProxyManager/data/mysql:/var/lib/mysql
- 安装命令:
docker compose up -d
- 验证成功:访问
http://ip:81
- 上图表示
mail.95270811.xyz:8443
被mail.95270811.xyz
代理,以后访问mail.95270811.xyz
就不用带端口号啦
- 性能调优
- 运行两日内时不时发现邮件服务不可用,具体表现在后台和前端访问超时无响应,显示
Bad Gateway
,查看官方文档,可在启动脚本加-e "DISABLE_CLAMAV=TRUE"
参数禁用CLAMAV
(一款用于检测木马、病毒、恶意软件的防病毒引擎),能显著降低对低内存机器的压力。
参考文章: