控制台 退出登录

自建邮箱服务


部署文件准备

docker部署脚本

services:
    mailserver:
        container_name: ${CONTAINER_NAME}
        image: ghcr.io/docker-mailserver/docker-mailserver:15.1.0
        deploy:
            resources:
                limits:
                    cpus: ${CPUS}
                    memory: ${MEMORY_LIMIT}
        env_file: ./conf/mailserver.env
        healthcheck:
            retries: 0
            test: ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1
            timeout: 3s
        hostname: ${MS_HOSTNAME}
        ports:
            - ${HOST_IP}:${PANEL_APP_PORT_SMTP}:25
            - ${HOST_IP}:${PANEL_APP_PORT_IMAP4_143}:143
            - ${HOST_IP}:${PANEL_APP_PORT_ESMTP_465}:465
            - ${HOST_IP}:${PANEL_APP_PORT_ESMTP_587}:587
            - ${HOST_IP}:${PANEL_APP_PORT_IMAP4_993}:993
        restart: on-failure:5
        stop_grace_period: 1m
        environment:
			- SSL_TYPE=letsencrypt
			- LETSENCRYPT_HOST=mail.xx.com
			- LETSENCRYPT_EMAIL=admin@xx.com
        volumes:
            - ./data/dms/mail-data/:/var/mail/
            - ./data/dms/mail-state/:/var/mail-state/
            - ./data/dms/ssl/:/etc/letsencrypt/
            - ./data/dms/mail-logs/:/var/log/mail/
            - ./data/dms/config/:/tmp/docker-mailserver/
            - /etc/localtime:/etc/localtime:ro
            - ./ssl:/etc/letsencrypt

.env环境变量

CONTAINER_NAME='mailserver'
CPUS=0
MEMORY_LIMIT=0
HOST_IP=''
MS_HOSTNAME='mail.xx.com'
PANEL_APP_PORT_ESMTP_465=465
PANEL_APP_PORT_ESMTP_587=587
PANEL_APP_PORT_IMAP4_143=143
PANEL_APP_PORT_IMAP4_993=993
PANEL_APP_PORT_SMTP=25

ENABLE_RSPAMD=1
ENABLE_OPENDMARC=0
ENABLE_POLICYD_SPF=0
ENABLE_OPENDKIM=1

SSL_TYPE=letsencrypt
LETSENCRYPT_HOST=mail.xx.com
LETSENCRYPT_EMAIL=admin@xx.com

ssl证书

容器内检查SSL配置

docker exec mailserver printenv | grep SSL

本地ssl文件 挂载到 /etc/letsencrypt/live/{DOMAIN}/

服务运行

启动容器

docker compose up -d

管理员账户

容器启动后需要在120s内创建管理员账户

setup email add user@domain.com 'yourpassword'

dkim解析

进入容器执行

setup config dkim keysize 2048

生成后会保存在 ./docker-data/dms/config/opendkim/keys/{DOMAIN}/mail.txt

dns解析设置

添加主域名解析

指向mailserver的服务IP

添加spf解析


添加dmarc解析

v=DMARC1; p=quarantine; rua=mailto:admin@yunlix.com

添加dkim解析

添加DNS dkim解析

name设置为 mail._domainkey

content 设置为 mail.txt中的内容, 需要移除双引号, 大概格式类似:

v=DKIM1; h=sha256; k=rsa; p=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

验证账户能否通过 Dovecot 登录

可以使用容器内命令模拟 IMAP 登录:

docker exec -it mailserver doveadm auth test admin@xx.com StrongPassword123!

setup命令

# 创建邮箱账户
setup email add user@xx.com [password]
# 删除邮箱账户
setup email del user@xx.com
# 列出所有邮箱账户
setup email list
# 修改用户密码
setup email update user@xx.com 'NewPassword456!'

# 添加转发(Alias),> 所有发往 support@xx.com 的邮件会自动转发到 admin@xx.com。
setup alias add support@xx.com admin@xx.com
# 删除转发规则
setup alias del support@xx.com
# 查看全部别名规则
setup alias list

# 测试证书加载情况
setup diagnose

邮箱登录设置

IMAP

服务器:IP地址

收信端口:993
加密:SSL/TLS

发信端口:465
加密:SSL/TLS

tips

收件问题

收件被拒绝

可能是spf等问题

ENABLE_RSPAMD=1
ENABLE_OPENDMARC=0
ENABLE_POLICYD_SPF=0
ENABLE_OPENDKIM=1

通过容器内运行

printenv

查看所有配置,与上文保持一致

本文采用 CC BY-NC-SA 4.0 协议发布

相关文章

None

None

None

None

SpringCloud(9)

SpringCloud(9)

SpringCloud(8)