初始化配置
服务源于docker-mailserver
1
2
3
4
| git clone https://github.com/docker-mailserver/docker-mailserver.git
# 所需文件
- docker-compose.yml 容器部署文件
- setup.sh 服务配置脚本
|
修改docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| version: '3.8'
services:
mailserver:
image: docker.io/mailserver/docker-mailserver:latest
container_name: mailserver
hostname: mail
# 更改为自己的域名
domainname: cetacean.top
ports:
- "25:25"
- "193:193"
- "993:993"
- "587:587"
- "465:465"
volumes:
- /home/dms/mail-data/:/var/mail/
- /home/dms/mail-state/:/var/mail-state/
- /home/dms/mail-logs/:/var/log/mail/
- /home/dms/config/:/tmp/docker-mailserver/
# ssl证书
- /etc/letsencrypt/:/etc/letsencrypt/
- /etc/localtime:/etc/localtime:ro
environment:
- ENABLE_FAIL2BAN=1
# 可选ssl证书类型
- SSL_TYPE=letsencrypt
- PERMIT_DOCKER=network
- ONE_DIR=1
- ENABLE_POSTGREY=0
- ENABLE_CLAMAV=0
- ENABLE_SPAMASSASSIN=0
- SPOOF_PROTECTION=0
cap_add:
- NET_ADMIN
- SYS_PTRACE
|
开放端口
需要开放[25
,193
,993
,465
,587
]这几个端口,以下以ufw
举例,具体开放防火墙请自行Google
1
2
3
4
5
| ufw allow 25
ufw allow 193
ufw allow 993
ufw allow 465
ufw allow 587
|
域名DNS解析及SSL证书申请
添加DNS解析
前往你域名的服务商添加以下DNS
解析
类型 | 记录名 | 记录值 |
---|
A | mail | xxx.xxx.xxx.xxx(自己服务器的ip) |
MX | @ | mail.example.com(mail.<域名>); 优先级选10 |
TXT | @ | v=spf1 mx ~all |
TXT | _dmarc | v=DMARC1; p=quarantine; rua=mailto:dmarc.report@example.com; ruf=mailto:dmarc.report@example.com; fo=0; adkim=r; aspf=r; pct=100; rf=afrf; ri=86400; sp=quarantine(内有两个需要改为自己的域名) |
使用certbot申请证书
1
2
| apt install -y certbot
certbot certonly --manual --preferred-challenge dns -d mail.example.com
|
解析验证
使用dig验证解析是否生效
1
2
| apt-get install dnsutils
dig TXT _acme-challenge.mail.example.com
|

配置续签证书
使用crontab
添加定时任务
1
2
3
| crontab -e
# 添加如下
0 5 * * 1 /usr/bin/certbot renew --quiet
|
Docker-compose部署
1
2
| docker-compose up -d
docker-compose logs -f # 查看容器日志
|
项目配置
创建user
1
2
3
| ./setup.sh email add admin@example.com "xxx" # 添加账号密码
# 其他功能参见help
./setup.sh help
|
生成DKIM签名记录
1
2
3
4
| ./setup.sh config dkim keysize 2048
cat config/opendkim/keys/example.com/mail.txt
# 截取格式如下
v=DKIM1;h=sha256;k=rsa;p=xxx
|
同样添加到DNS解析中
类型 | 记录名 | 记录值 |
---|
TXT | mail._domainkey | v=DKIM1;h=sha256;k=rsa;p=xxx |
ssl验证测试
测试是否以加上证书

客户端安装
eM Client
下载安装并添加账号

鸣谢