ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

docker-mailserver:基于 Docker 的全栈邮件服务器(SMTP / IMAP / LDAP / 反垃圾 / 反病毒)部署指南

docker-mailserver:基于 Docker 的全栈邮件服务器(SMTP / IMAP / LDAP / 反垃圾 / 反病毒)部署指南 docker-mailserver基于 Docker 的全栈邮件服务器SMTP / IMAP / LDAP / 反垃圾 / 反病毒部署指南【免费下载链接】docker-mailserverProduction-ready fullstack but simple mail server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.) running inside a container.项目地址: https://gitcode.com/gh_mirrors/do/docker-mailserverdocker-mailserver下称 DMS是一个生产就绪、开箱即用的容器化全栈邮件服务器它以单个容器聚合了 Postfix、Dovecot、Rspamd、ClamAV、OpenDKIM 等十余个邮件基础设施组件并坚持只用配置文件、不引入 SQL 数据库的极简设计。本文以仓库 README.md 为主线结合 compose.yaml、mailserver.env、Dockerfile 与官方文档源码docs/content为你梳理它的组件架构、部署流程、核心环境变量、端口安全模型与管理工具读完即可自行搭建一套可收信、可发信、带反垃圾与反病毒能力的邮件服务器。项目定位纯配置驱动、无数据库的全栈邮件方案README 对项目的定义是一句话生产就绪production-ready的 fullstack 但简单的容器化邮件服务器能力覆盖 SMTP、IMAP、LDAP、反垃圾Anti-spam、反病毒Anti-virus等。它的两条核心设计原则直接决定了使用方式只有配置文件没有 SQL 数据库所有账号、别名、配额等状态都落在文件系统上的明文文件中便于版本管理git、备份与升级配置即代码通过 Docker Compose 环境变量 挂载配置文件即可完成绝大多数定制无需进入容器手改。关于维护背景README 明确说明项目最初由 tomav 创建自 2021 年 1 月起由志愿者社区接手维护并以 MIT 协议发布见 Dockerfile 中的org.opencontainers.image.licensesMIT标签。注意README 特别提醒使用者——遇到问题时先查阅与你所用镜像版本匹配的文档本项目文档源码位于 docs/content构建产物由 MkDocs 生成issue 跟踪器只用于报告问题而非个人技术支持。邮件基础设施速览MUA / MTA / MDA 与 DMS 的位置在深入组件之前先建立邮件投递链路的基本概念详见 docs/content/introduction.mdMUAMail User Agent邮件客户端负责把邮件交给服务器、并从服务器取回邮件MTAMail Transfer Agent邮件传输代理即通常所说的邮件服务器负责接收提交、转发/中继邮件MDAMail Delivery Agent邮件投递代理负责把邮件写入收件人的邮箱。投递链路的示意如下发信: MUA ---- MTA ---- (MTA 中继) ---- MDA 收信: MUA --------------------------------- MDADMS 的组件在其中扮演如下角色docker-mailserver 在这里: ┏━━━━━━━┓ 发信: MUA --- MTA --- (MTA 中继) --- ┫ MTA ╮ ┃ 收信: MUA ------------------------------ ┫ MDA ╯ ┃ ┗━━━━━━━┛一个容易混淆的要点是MTA 与 MDA 程序往往身兼数职。DMS 中 Postfix 既是 SMTP 服务器接收邮件又是中继 MTA转发邮件同时还依赖 Dovecot 的认证能力Dovecot 既是 MDA投递邮件到邮箱又是 IMAP/POP3 服务器让 MUA 取信。这也是全栈一词的由来——一个容器内集成了完整的服务端职责链。内置服务全景一个容器里的完整邮件技术栈README 的 Included Services 一节是理解 DMS 能力的核心清单下面逐项展开各服务的默认配置与启动方式可对照 Dockerfile 与 target/ 目录理解部分细节在 mailserver.env 中有对应的开关变量服务职责相关开关变量默认值PostfixMTA/SMTP支持 SMTP 或 LDAP 认证、地址扩展分隔符PERMIT_DOCKERnone、POSTFIX_INET_PROTOCOLSallDovecotSASL、IMAP、POP3、LDAP、基础 Sieve 过滤、配额ENABLE_IMAP1、ENABLE_POP3默认关、ENABLE_QUOTAS1、ENABLE_MANAGESIEVERspamd现代反垃圾引擎含 Redis 后端、Bayes 学习、神经网络模块ENABLE_RSPAMD0、RSPAMD_LEARN0、RSPAMD_NEURAL0Amavis内容过滤器连接 ClamAV 与 SpamAssassinENABLE_AMAVIS1SpamAssassin经典反垃圾规则引擎支持自定义规则与 KAM 第三方规则集ENABLE_SPAMASSASSIN0、ENABLE_SPAMASSASSIN_KAM0ClamAV反病毒扫描自动更新病毒库ENABLE_CLAMAV0OpenDKIM / OpenDMARC邮件签名与域验证ENABLE_OPENDKIM1、ENABLE_OPENDMARC1Fail2ban暴力破解防护基于 nftables 封禁 IPENABLE_FAIL2BAN0、FAIL2BAN_BLOCKTYPEdropFetchmail从外部邮箱拉取邮件ENABLE_FETCHMAIL0、FETCHMAIL_POLL300Getmail6同类拉取工具GetmailENABLE_GETMAIL0、GETMAIL_POLL5PostscreenPostfix 前置的 SMTP 连接准入检查POSTSCREEN_ACTIONenforce、ENABLE_DNSBL0Postgrey灰名单greylisting反垃圾ENABLE_POSTGREY0、POSTGREY_DELAY300SASLauthdLDAP 认证守护进程ENABLE_SASLAUTHD0LetsEncrypt 等证书支持letsencrypt / custom / manual / self-signedSSL_TYPEsetup 脚本容器内管理命令账号、别名、配额等—OAuth2通过XOAUTH2/OAUTHBEARERSASL 机制认证ENABLE_OAUTH2几点值得注意反垃圾双轨制DMS 同时内置 Rspamd 与 SpamAssassin 两条反垃圾路径默认启用 Amavis连接 ClamAV 与 SpamAssassinRspamd 默认关闭。若启用 Rspamdmailserver.env 建议把ENABLE_POLICYD_SPF设为0避免与 Rspamd 的 SPF 检查重复。Postscreen 与 Postgrey 是两种不同策略Postscreen 在 SMTP 会话早期基于连接行为如 DNSBL、HELO 检查直接准入/拒绝Postgrey 则对可疑来源做灰名单延迟默认 300 秒两者可独立开关。认证体系分层账号认证可通过本地文件ACCOUNT_PROVISIONERFILE默认、LDAPACCOUNT_PROVISIONERLDAP或 OAuth2ENABLE_OAUTH21配合用户信息端点 URL三种方式提供。快速上手compose.yaml 与 mailserver.env获取必要文件官方推荐用 Docker ComposeV2 规范部署。可以从仓库直接获取两个核心文件见 docs/content/usage.md 的 Get All Files 一节compose.yaml 与 mailserver.env。compose.yaml 逐项解析仓库根目录的 compose.yaml 是官方参考部署关键配置如下services: mailserver: image: ghcr.io/docker-mailserver/docker-mailserver:latest container_name: mailserver # 提供邮件服务器的 FQDN你的 MX 记录应指向该值 hostname: mail.example.com env_file: mailserver.env ports: - 25:25 # SMTP (explicit TLS STARTTLS认证被禁用 请改用 465/587) - 143:143 # IMAP4 (explicit TLS STARTTLS) - 465:465 # ESMTP (implicit TLS) - 587:587 # ESMTP (explicit TLS STARTTLS) - 993:993 # IMAP4 (implicit TLS) volumes: - ./docker-data/dms/mail-data/:/var/mail/ - ./docker-data/dms/mail-state/:/var/mail-state/ - ./docker-data/dms/mail-logs/:/var/log/mail/ - ./docker-data/dms/config/:/tmp/docker-mailserver/ - /etc/localtime:/etc/localtime:ro restart: always stop_grace_period: 1m # 若启用 ENABLE_FAIL2BAN1取消注释 # cap_add: # - NET_ADMIN解读几个关键点镜像源默认使用ghcr.io/docker-mailserver/docker-mailserver:latest。镜像标签遵循固定约定详见 docs/content/usage.md推送到master分支构建出edge标签推送v1.2.3这样的 tag 时同时发布1.2.3、1.2、1与latest。生产环境建议固定到具体版本号而非latest。端口映射默认暴露 25/143/465/587/993 五个端口POP3 端口 110/995 默认不启用。对照 Dockerfile 的EXPOSE 25 587 143 465 993 110 995 4190可知镜像本身还预留了 110、995POP3与 4190Managesieve由ENABLE_MANAGESIEVE控制。四个数据卷/var/mail/邮件数据、/var/mail-state/状态如 Fail2ban、Postfix 队列等、/var/log/mail/日志、/tmp/docker-mailserver/配置文件挂载点也是 setup 命令操作的目标目录。Fail2ban 前置条件若启用ENABLE_FAIL2BAN1必须给容器cap_add: NET_ADMIN否则nftables无法封禁 IPmailserver.env 与 compose.yaml 均有注释说明。健康检查镜像内部自带HEALTHCHECKdms-healthcheck启动等待 30 秒见 DockerfileCompose 默认会使用它无需重复配置。镜像构建与启动方式Dockerfile 佐证Dockerfile 展示了镜像的三阶段构建stage-base → stage-main → stage-final基础阶段安装全部依赖包主阶段拷贝 Postfix、Dovecot、Rspamd、Amavis、Fail2ban、OpenDKIM 等各组件的默认配置与脚本最终阶段设置入口。入口ENTRYPOINT [/usr/bin/dumb-init, --]CMD [supervisord, -c, /etc/supervisor/supervisord.conf]——容器内所有守护进程由 supervisord 统一管理日志统一收敛ClamAV、Freshclam、Fail2ban 等服务的日志被重定向到/var/log/mail/对应宿主挂载的./docker-data/dms/mail-logs/同时docker logs仍可查看完整主日志输出ClamAV 病毒库通过COPY --link --from.../clamav-debian:latest直接从官方 ClamAV 镜像拷贝最新病毒库避免构建期运行freshclam额外占用 500MB 内存运行期由 cron每 6 小时执行/usr/bin/freshclam --quiet自动更新见 Dockerfile 的 ClamAV 段。mailserver.env 编写约束编辑环境变量文件时需遵守见 docs/content/usage.md仅支持基础的VARVAL语法值不要加引号不支持变量替换例如OVERRIDE_HOSTNAME$HOSTNAME.$DOMAINNAME不会生效。核心环境变量逐项解析mailserver.env 是 DMS 的控制面板按 Section 分组定义了全部可调参数。以下挑选关键项解析默认值以仓库文件为准General 通用区变量默认值说明OVERRIDE_HOSTNAME空覆盖容器 FQDN默认使用hostname --fqdn。官方警告该变量副作用难以预测非必要不要设置LOG_LEVELinfo日志级别error/warn/info/debug/traceDMS_VMAIL_UID/DMS_VMAIL_GID5000 / 5000/var/mail下 vmail 用户的 UID/GID便于兼容某些 NAS 等设备ACCOUNT_PROVISIONER空FILE账号供给方式FILE本地文件/ LDAP / OIDC尚未实现POSTMASTER_ADDRESS空postmasterdomain.compostmaster 地址ENABLE_UPDATE_CHECK1启动时及每天检查更新有更新时给POSTMASTER_ADDRESS发邮件UPDATE_CHECK_INTERVAL1d更新检查间隔后缀必须为s/m/h/dPERMIT_DOCKERnonePostfixmynetworks信任范围none/container/host/network/connected-networks。警告把 Docker 网关加入信任列表可能造成开放中继见 mailserver.env 内注释TZ空时区格式AREA/ZONE如Europe/Berlin也可挂载/etc/localtime自动探测NETWORK_INTERFACE空eth0网络接口名Kubernetes 使用 HostNetwork 等场景可指定TLS_LEVEL空modernmodern仅安全密码套件/intermediate放宽兼容性最低支持 TLS 1.2SPOOF_PROTECTION空1 表示禁止伪造发件人用户只能以自己或自己别名地址发信ENABLE_SRS0Sender Rewriting Scheme邮件服务器作为转发者时需要ENABLE_OPENDKIM/ENABLE_OPENDMARC1 / 1DKIM 签名与 DMARC 校验ENABLE_POLICYD_SPF1Postfix 的 policyd-spf SPF 检查启用 Rspamd 时建议设为 0ENABLE_IMAP/ENABLE_POP31 / 空IMAP 默认开、POP3 默认关ENABLE_CLAMAV0反病毒默认关资源占用高SMTP_ONLY空设为 1 时仅启动 postfix smtp不启动其他守护进程SSL_TYPE空证书方案空禁用/letsencrypt/custom/manual/self-signedPOSTFIX_DAGENT空lmtp:unix:/var/run/dovecot/lmtpPostfix 投递给 LMTP 客户端的 URI可改为 kopano 等其他邮件存储POSTFIX_MAILBOX_SIZE_LIMIT空0不限制邮箱大小上限字节POSTFIX_MESSAGE_SIZE_LIMIT空~10MB单封邮件大小上限字节ENABLE_QUOTAS1Dovecot 配额开关LOGROTATE_INTERVALweekly容器内日志轮转周期weekly/daily/monthly同时影响PFLOGSUMM_TRIGGER的报告周期LOGROTATE_COUNT4保留的轮转日志份数POSTFIX_REJECT_UNKNOWN_CLIENT_HOSTNAME0对未知客户端主机名启用reject_unknown_client_hostname限制POSTFIX_INET_PROTOCOLS/DOVECOT_INET_PROTOCOLSall/all可设为ipv4Docker 场景推荐或ipv6ENABLE_MTA_STS0出站 MTA-STS 支持SpamAssassin 区变量默认值说明ENABLE_SPAMASSASSIN0是否启用 SpamAssassinENABLE_SPAMASSASSIN_KAM0是否叠加 KAMMcGrail 基金会维护的第三方规则集需ENABLE_SPAMASSASSIN1SPAMASSASSIN_SPAM_TO_JUNK1垃圾邮件投递到收件箱用SPAM_SUBJECT打标MOVE_SPAM_TO_JUNK1垃圾邮件移动到 Junk 文件夹需SPAMASSASSIN_SPAM_TO_JUNK1MARK_SPAM_AS_READ0垃圾邮件标记为已读SA_TAG/SA_TAG2/SA_KILL2.0 / 6.31 / 10.0依次对应添加 spam info 头、添加 spam detected 头、触发反垃圾处置的分数阈值Fetchmail / Getmail 区变量默认值说明ENABLE_FETCHMAIL/ENABLE_GETMAIL0 / 0拉取外部邮箱功能开关FETCHMAIL_POLL300秒Fetchmail 轮询间隔FETCHMAIL_PARALLEL1可让每个 poll 条目独立实例运行支持多个 IMAP IDLE 连接GETMAIL_POLL5分钟Getmail 轮询间隔最小 1LDAP / Dovecot / SASL 区企业场景LDAP 相关变量统一以LDAP_前缀为主SASL 侧以SASLAUTHD_LDAP_前缀独立配置连接LDAP_SERVER_HOST需带 URI scheme如ldap:///ldaps://、LDAP_START_TLS、DOVECOT_TLS、SASLAUTHD_LDAP_START_TLS绑定LDAP_BIND_DN、LDAP_BIND_PWSASL 侧可覆盖为SASLAUTHD_LDAP_BIND_DN/SASLAUTHD_LDAP_PASSWORD查询LDAP_SEARCH_BASE、LDAP_QUERY_FILTER_USER/_GROUP/_ALIAS/_DOMAINDovecot 侧还有DOVECOT_USER_FILTER/DOVECOT_PASS_FILTER、DOVECOT_AUTH_BIND允许 bind 认证邮箱格式DOVECOT_MAILBOX_FORMAT支持maildir默认/sdbox/mdbox。SASL 侧还提供SASLAUTHD_MECHANISMSldap/rimap、SASLAUTHD_LDAP_AUTH_METHODbind默认 /fastbind/custom、TLS 校验SASLAUTHD_LDAP_TLS_CHECK_PEER、SASLAUTHD_LDAP_TLS_CACERT_FILE/_DIR等细粒度控制。SRS 与中继Relay区SRSSRS_SENDER_CLASSESenvelope_sender可加header_sender同时改写两处、SRS_EXCLUDE_DOMAINS、SRS_SECRETbase64 密钥可配置多把密钥实现轮换第一把用于签名、其余用于验证中继DEFAULT_RELAY_HOST全部邮件经默认中继可带端口如[mail.example.com]:587、RELAY_HOST/RELAY_PORT按发件域名中继配合postfix-sasl-password.cf与postfix-relaymap.cf、RELAY_USER/RELAY_PASSWORD。OAuth2 区ENABLE_OAUTH21时需配合OAUTH2_INTROSPECTION_URL用户信息端点 URL使用支持XOAUTH2与OAUTHBEARER两种 SASL 机制。测试与参考配置可查看 test/config/oauth2 下的 Caddyfile 与 compose.yaml。部署前置主机、域名与 DNS在真正启动容器前官方文档docs/content/usage.md 的 Preliminary Steps要求满足三件事主机拥有可管理的静态公网 IP能开放邮件所需端口25 等出站端口不能被服务商/ISP 屏蔽最好能设置PTR记录否则安全加固过的对端邮件服务器可能拒绝收信容器运行时安装 Docker或 Podman配合 docs/content/config/advanced/podman.md与 Docker Compose V2DNS以testexample.com为例至少需要三条记录MXexample.com → mail.example.com告诉别人谁负责你的域名邮件Amail.example.com → 11.22.33.44解析邮件服务器地址PTR11.22.33.44 → mail.example.com反向解析提升信誉。注意邮件服务器的 FQDN如mail.example.com只是约定俗成与邮件地址域example.com没有技术绑定关系——DMS 运行在mail.example.com上照样可以为barbaz.org收信只要barbaz.org的 MX 指向mail.example.com。完整 DNS 验证示例$ dig 1.1.1.1 short MX example.com mail.example.com $ dig 1.1.1.1 short A mail.example.com 11.22.33.44 $ dig 1.1.1.1 short -x 11.22.33.44 mail.example.com首次启动、账号创建与常用管理命令启动与停止的正确姿势官方文档强烈警告启停 DMS 必须使用docker compose up / down不要使用docker compose start / stop否则容器不会被正确销毁可能因状态不一致导致启动异常CtrlC同样不被支持。创建第一个账号首次启动后需要在两分钟窗口内添加至少一个邮箱账号使用 LDAP 供给方式除外否则 DMS 会关停并重启。命令格式docker exec -ti CONTAINER NAME setup email add userexample.com接着建议添加 postmaster 别名约定俗成但非强制docker exec -ti CONTAINER NAME setup alias add postmasterexample.com userexample.com所有容器内管理命令可通过docker exec -it CONTAINER NAME setup help查看完整列表。进一步配置清单TLS设置SSL_TYPEletsencrypt/custom/manual/self-signed详见 docs/content/config/security/ssl.mdmanual模式下通过SSL_CERT_PATH/SSL_KEY_PATH可选SSL_ALT_CERT_PATH/SSL_ALT_KEY_PATH实现 ECDSARSA 双证书回退指定容器内证书路径SPF / DKIM / DMARCDMS 内置setup config dkim相关能力生成 DKIM 密钥TXT 记录配置方法见 docs/content/config/best-practices/dkim_dmarc_spf.md自定义补丁通过挂载user-patches.sh在启动时对容器内任意文件打补丁仓库示例见 config-examples/user-patches.sh机制说明见 docs/content/config/advanced/override-defaults/user-patches.md。端口与安全模型理解 DMS 的端口体系README 未展开、但部署中绕不开的是端口语义详见 docs/content/config/security/understanding-the-ports.md。DMS 的端口速查表协议Explicit TLSSTARTTLSImplicit TLS用途默认启用ESMTP25N/A传输Transfer是ESMTP587465提交Submission是POP3110995取信Retrieval否IMAP4143993取信Retrieval是要点端口 25 只做传输用于 MTA 之间的邮件交换也是外部邮件进入 DMS 的通道。它必须允许非加密连接RFC 强制但 DMS 会对其做垃圾/病毒过滤并拒绝已知恶意来源。出站时若未配置中继邮件也从 25 端口直发对端——因此 25 的出站流量不能被防火墙/运营商拦截。465 与 587 是提交端口供 MUA 或后端服务认证后发信。465 自 2018 年起被 RFC 8314 重新定义为隐式 TLS 的submissions端口587 使用显式 TLSSTARTTLS。推荐优先使用 465。Explicit vs Implicit TLS显式 TLSOpt-in连接以明文开始通过STARTTLS协商升级。DMS 默认在需要认证的端口上拒绝无法建立安全连接的会话隐式 TLS强制连接始终加密规避了 STARTTLS 历史上多次被发现的 CVE 与降级拦截风险。端口 465 的历史误区它曾在 1997 年短暂被指派为 SMTPS1998 年被 IANA 撤销直到 2018 年 RFC 8314 重新赋予其提交端口身份。任何仍将其称为 SMTPS 的说法都是过时的。DMS 的默认 SMTP 配置可概括为┏━━━ 出站提交 ━━━┓ ┌────────────────────┐ ┌┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┐ Me -- cleartext -- ┤(25) (25)├ --- cleartext --- ┊ ┊ Me -- TLS --- ┤(465) My MTA │ ┊ Third-party MTA ┊ Me -- STARTTLS --- ┤(587) │ ┊ ┊ │ (25)├ ---cleartext ---- ┊ ┊ └────────────────────┘ └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘ ┗━━━━━━━━━━ 入站提交 ━━━━━━━━━━┛另外注意TLS 只保证你与直连对端之间的加密邮件可能被对方 MTA 继续中继到第三方链路中每一跳都可能不加密更严格的传输安全需要 DANE/DNSSEC、MTA-STS、STARTTLS 策略列表等机制配合DMS 通过ENABLE_MTA_STS1支持出站 MTA-STS。setup.sh宿主侧的管理脚本除容器内setup命令外仓库根目录的 setup.sh 提供了宿主侧的同名包装脚本说明见 docs/content/config/setup.sh.md。它的价值在于自动推断容器名通过docker ps过滤org.opencontainers.image.titledocker-mailserver标签找到运行中的容器直接执行docker exec -it CONTAINER setup args自动挂载配置卷若无法推断则按宿主./docker-data/dms/config或旧的./config兼容路径绑定挂载到/tmp/docker-mailserver后在临时容器中执行setup若镜像缺失会自动docker pull关键选项脚本内置帮助运行./setup.sh help可查看选项作用-i IMAGE_NAME指定镜像名默认ghcr.io/docker-mailserver/docker-mailserver:latest-c CONTAINER_NAME指定运行中的容器名-p PATH指定配置目录路径容器未运行时有效-z/-ZSELinux 主机上允许容器访问绑定挂载共享 / 私有-R接受 Podman rootless 模式脚本的兼容性逻辑在 setup.sh 中可见优先探测docker其次podmanrootless Podman 下默认会交互式确认非交互环境如 CI自动回退到-t模式。注意setup.sh只适用于 Docker / Podman其他容器编排工具无法使用且官方鼓励优先使用容器内的setup命令。配置与定制仓库中的实用资源仓库为各类场景提供了开箱即用的配置范例与测试资产配置示例config-examples包括user-patches.sh启动补丁示例、fetchmail.cf、dovecot.cf/dovecot-quotas.cfDovecot 覆盖配置、fail2ban-fail2ban.cf/fail2ban-jail.cfFail2ban 覆盖配置以及 Getmail 的 getmailrc_general.cf 与 IMAP/POP3 示例演示部署demo-setupsfetchmail-compose.yamlFetchmail 拉取场景与relay-compose.yaml中继场景可直接参考Postfix/Dovecot 覆盖机制DMS 允许通过挂载postfix-main.cf、postfix-master.cf、dovecot.cf覆盖默认配置见 docs/content/config/override-defaults/postfix.md 与 docs/content/config/override-defaults/dovecot.md测试样例在 test/config/override-configs账号与别名文件本地供给方式下账号、别名、虚拟域分别落在挂载配置目录的postfix-accounts.cf、postfix-virtual.cf等文件中参考 test/config/templates 与 test/config/relay-hosts。验证与测试仓库自带的验证体系若你想在部署后验证功能除了通过真实客户端收发邮件外DMS 仓库自身提供了一套完整的 BATSBash Automated Testing System测试体系test 目录并行测试集覆盖 Dovecot 配额与 Sievetest/tests/parallel/set1/dovecot、反垃圾/反病毒全家桶test/tests/parallel/set1/spam_virus、TLS 证书Lets Encrypt 与手动证书、Fetchmail/Getmail、网络协议族等串行测试集覆盖 IMAP/POP3 实际收信流程、LDAP、OAuth2、中继、OpenDKIM、setup CLI 等端到端场景test/tests/serial辅助设施测试用邮件样例test/files/emails、IMAP 原始命令脚本test/files/nc、测试专用证书test/files/ssl/example.test等。这些测试既是对镜像质量的保障也是理解 DMS 各功能正确用法的活文档——例如想确认 Sieve 过滤行为可以直接查看 test/tests/parallel/set1/dovecot/dovecot_sieve.bats。小结docker-mailserver 的价值在于把一条完整的邮件投递链压缩进一个容器Postfix 负责 SMTP 传输与提交Dovecot 负责投递、IMAP/POP3 与认证Rspamd / SpamAssassin / ClamAV 构成反垃圾反病毒防线OpenDKIM/OpenDMARC 保证信誉与防伪Fail2ban / Postscreen / Postgrey 守护入口安全而这一切都通过 compose.yaml mailserver.env 以纯配置方式驱动。上手路径清晰准备域名与 DNS → 拉取官方 compose 与 env 文件 → 设置 FQDN 与证书 → 启动并创建账号 → 配置 SPF/DKIM/DMARC 提升投递成功率。遇到更深的问题时docs/content 下的官方文档源码与 test 中的测试用例是最可信的参考资料——使用前请务必确认文档版本与镜像版本一致。【免费下载链接】docker-mailserverProduction-ready fullstack but simple mail server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.) running inside a container.项目地址: https://gitcode.com/gh_mirrors/do/docker-mailserver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表