简介

Docker-mailserver 是一个生产就绪的全功能邮件服务器。它提供完整的邮件服务解决方案,包括:

  1. SMTP/IMAP/POP3 服务

  2. 反垃圾邮件和防病毒保护

  3. 多域名支持

  4. TLS 加密

  5. Web 管理界面

DNS配置

为邮件服务器配置以下 DNS 记录(以下以我自己域名为例nxplus.cn):

  1. A 记录:

    mail.nxplus.cn. IN A YOUR_SERVER_IP

  2. MX 记录:

    nxplus.cn. IN MX 10 mail.nxplus.cn.

  3. SPF 记录:

    nxplus.cn. IN TXT "v=spf1 mx a:mail.nxplus.cn ~all"

  4. DKIM 记录(部署后生成,在之后容器部署成功后,终端运行获取):

    docker exec -it <CONTAINER NAME> setup config dkim
    [nukix@nukixPC mailserver]# cat /opt/mailserver/docker-data/dms/config/opendkim/keys/mail.example.com/mail.txt
    mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
    "p=MIIBIjANBgkqhkiG9w0BAQEFACAQ8AMIIBCgKCAQEAaH5KuPYPSF3Ppkt466BDMAFGOA4mgqn4oPjZ5BbFlYA9l5jU3bgzRj3l6/Q1n5a9lQs5fNZ7A/HtY0aMvs3nGE4oi+LTejt1jblMhV/OfJyRCunQBIGp0s8G9kIUBzyKJpDayk2+KJSJt/lxL9Iiy0DE5hIv62ZPP6AaTdHBAsJosLFeAzuLFHQ6USyQRojefqFQtgYqWQ2JiZQ3"
    "iqq3bD/BVlwKRp5gH6TEYEmx8EBJUuDxrJhkWRUk2VDl1fqhVBy8A9O7Ah+85nMrlOHIFsTaYo9o6+cDJ6t1i6G1gu+bZD0d3/3bqGLPBQV9LyEL1Rona5V7TJBGg099NQkTz1IwIDAQAB" ) ; ----- DKIM key mail for mail.example.com
  5. DMARC 记录:

    _dmarc IN TXT v=DMARC1; p=none; sp=none;

创建容器分组

  1. 在系统任意位置创建一个文件夹。

    mkdir -p /opt/mailserver
    cd /opt/mailserver
  2. 创建 docker-compose.yaml

    services:
      mailserver:
        image: mailserver/docker-mailserver:${VERSION}
        container_name: ${CONTAINER_NAME}
        deploy:
          resources:
            limits:
              cpus: ${CPUS}
              memory: ${MEMORY_LIMIT}
        hostname: ${MAIL_HOSTNAME}
        ports:
          - ${HOST_IP}:${SMTP_PORT}:25
          - ${HOST_IP}:${SMTP_SSL_PORT}:465
          - ${HOST_IP}:${NSMTP_SSL_PORT}:587
          - ${HOST_IP}:${IMAP_PORT}:143
          - ${HOST_IP}:${IMAP_SSL_PORT}:993
        volumes:
          - ${APP_PATH}/data/mail-data/:/var/mail/
          - ${APP_PATH}/data/mail-state/:/var/mail-state/
          - ${APP_PATH}/data/mail-logs/:/var/log/mail/
          - ${APP_PATH}/data/config/:/tmp/docker-mailserver/
          - ${APP_PATH}/data/certs/:/tmp/dms/custom-certs/:ro  # 挂在证书的路径,之后如果需要,则把证书放这个路径下
          - /etc/localtime:/etc/localtime:ro
        restart: always
        environment:
          - ENABLE_RSPAMD=1
          - ENABLE_CLAMAV=1
          - ENABLE_FAIL2BAN=1
          - SSL_TYPE=manual # SSL服务类型
          - SSL_CERT_PATH=/tmp/dms/custom-certs/ssl.crt  # 自己的ssl证书
          - SSL_KEY_PATH=/tmp/dms/custom-certs/ssl.key    # 自己的ssl证书
        labels:
          createdBy: "app"
        networks:
          - own
    networks:
      own:
        external: true
  3. 创建.env

    VERSION=latest
    CONTAINER_NAME=mailserver
    HOST_IP=0.0.0.0
    MAIL_HOSTNAME=mail.nxplus.cn
    SMTP_PORT=25
    SMTP_SSL_PORT=465
    NSMTP_SSL_PORT=587
    IMAP_PORT=143
    IMAP_SSL_PORT=993
    CPUS=1
    MEMORY_LIMIT=512MB
    APP_PATH=/www/dk_app/mailserver
  4. 启动 mailserver服务

    # docker-compose.yaml和.env在同目录下可直接运行
    docker-compose up -d
    # 查看导入变量的情况(可选):使用 config 命令查看解析后的应用程序配置,该命令会将相关配置打印到终端
    docker-compose config 
    # 如果 .env 文件不在 docker-compose.yaml 文件的同级目录,可以使用 --env-file 选项指定其路径。
    docker-compose --env-file /path/to/your/.env up -d 
  5. 实时查看日志:

    docker-compose logs -f

邮箱管理

  • 添加邮箱账户:

    docker exec -ti mailserver setup email add user@nxplus.cn password123
  • 删除邮箱账户:

    docker exec -ti mailserver setup email del user@nxplus.cn
  • 更新密码:

    docker exec -ti mailserver setup email update user@nxplus.cn newpassword
  • 列出所有账户:

    docker exec -ti mailserver setup email list
  • 有些其他配置(个人项目搭配使用)

    # 添加邮箱账户:
    docker exec -ti mailserver setup email add admin@nxplus.cn 密码
    # 添加邮件转发:
    docker exec -ti mailserver setup alias add @nxplus.cn admin@nxplus.cn

安全配置

  • 配置 DKIM:

    docker exec -ti mailserver setup config dkim
  • 配置 SSL 证书:

    docker exec -ti mailserver setup config ssl
    
  • 配置反垃圾邮件规则:

    docker exec -ti mailserver setup config spamassassin