自建邮件服务器&&mailserver
端口检查
邮件系统需要使用到25、465、143、993 端口,请先检查端口是否被占用
- 25 SMTP 默认端口
- 587 SMTP 客户端发信端口
- 465 SMTP SSL 发信端口
- 143 IMAP 收信端口
- 993 IMAP SSL 收信端口
下图说明了需要的端口的关系
常见问题:25端口无法开启,多半是被系统内置的postfix服务占用了
# 关闭系统内置服务
systemctl disable postfix
使用docker-compose
version: "3"
services:
smtp-server:
image: harbor.iovhm.com/hub/mailserver/docker-mailserver:latest
container_name: mailserver
hostname: mail.iovhm.com
network_mode: host
ports:
- "25:25" # STMP
- "587:587" # STMP CLIENT
- "465:465" # STMP SSL
- "143:143" # IMAP
- "993:993" # IMAP SSL
volumes:
- ./data/mail-data:/var/mail
- ./data/mail-state:/var/mail-state
- ./data/mail-logs:/var/log/mail
- ./data/mail-config:/tmp/docker-mailserver
- /etc/localtime:/etc/localtime:ro
environment:
# 如果在不允许设置主机名的环境中运行,设置邮件服务器的主机名
- OVERRIDE_HOSTNAME=mail.iovhm.com
- SPOOF_PROTECTION=0
需要在120秒内增加一个用户,否则系统自动退出
# 进入到容器后执行
docker exec -it smtp-server /bin/bash
# 增加第一个用户
setup email add admin@iovhm.com <password>
# 增加2个约定的管理邮箱(可以设置自动转发到外部邮箱)
setup alias add postmaste@iovhm.com your@163.com
setup alias add abuse@iovhm.com your@163.com
# 查看用户列表
setup email list
setup alias list
# 生成 DKIM 密钥
setup config dkim
配置DNS记录
mail IN A 10.11.12.13
@ IN MX 10 mail.example.com
@ IN TXT "v=spf1 mx ~all"
_dmarc IN TXT "v=DMARC1; p=none; sp=none; adkim=r; aspf=r"
增加DNS
# 查看挂载目录生成的DKIM文本字符串
cat ./data/mail-config/opendkim/keys/iovhm.com
# 填入DNS,使之成为一行
mail._domainkey IN TXT "v=DKIM1; h=sha256; k=rsa;p=XXXXXXXXXXXXXXX"
DNS配置检查网站:https://www.helloinbox.email/
其他命令
# 进入到容器
docker exec -it smtp-server /bin/bash
# 根据提示
setup help
# 修改密码
setup email update airdict@iovhm.com <new password>
25出站端口被封,使用中继
# 增加中继说明,既所有来自*@iovhm.com的邮件使用smtp.163.com发送
setup relay add-domain iovhm.com smtp.163.com 465
# 增加中继账号
setup relay add-auth iovhm.com your@163.com <your password>
需要增加配置文件
- ./data/mail-config/postfix-main.cf
# 开启SMTP TLS
smtp_use_tls=yes
# SASL 认证配置
relayhost = [smtp.163.com]:465
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/tmp/docker-mailserver/postfix-sasl-password.cf
sender_canonical_maps = regexp:/tmp/docker-mailserver/sender_canonical.cf
smtp_sasl_security_options = noanonymous
smtp_sasl_type=cyrus
# TLS 配置
smtp_tls_security_level = encrypt
smtp_tls_loglevel = 1
smtp_tls_wrappermode = yes
# smtp_tls_CApath = /etc/ssl/certs
# smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
- ./data/mail-config/postfix-sasl-password.cf
[smtp.163.com]:465 airdict@163.com:<your password>
- ./data/mail-config/postfix-sender-canonical.cf