
Postfix是Wietse Venema开发的优秀邮件服务器。本容器旨在简化入站和出站邮件中继的设置,以保护和增强自托管邮件服务器(如Microsoft Exchange)。容器采用Postfix的Postscreen提供增强保护。
除基本邮件中继功能外,容器还可选择性提供以下功能:
容器通过环境变量完全配置,容器启动时会根据环境变量构建各服务的配置文件,同时支持通过卷映射部分配置文件。目前支持的Docker架构包括linux/386、linux/amd64、linux/arm/v7和linux/arm64。
本容器使用优秀的https://github.com/just-containers/s6-overlay%E8%BF%9B%E8%A1%8C%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%EF%BC%88%E5%8F%8A%E5%85%B6%E4%BB%96%E5%AE%9E%E7%94%A8%E5%8A%9F%E8%83%BD%EF%BC%89%E3%80%82
| 服务名称 | 描述 | 启动条件 |
|---|---|---|
postfix | 运行Postfix邮件服务器 | 始终启动 |
clamav-milter | ClamAV组件,运行clamav-milter进行邮件病毒扫描 | 当ENABLE_CLAMAV设为true时 |
clamd | ClamAV组件,运行clamd病毒扫描引擎,供clamav-milter使用 | 当ENABLE_CLAMAV设为true时 |
freshclam | ClamAV组件,按FRESHCLAM_CHECKS_PER_DAY定义的计划运行freshclam以更新ClamAV数据库 | 当ENABLE_CLAMAV设为true时 |
opendkim | 运行opendkim进行DKIM签名/验证 | 当ENABLE_OPENDKIM设为true时 |
postgrey | 运行postgrey提供灰名单功能 | 当ENABLE_POSTGREY设为true时 |
postgrey_whitelist_update | 每日运行,从<[***]>获取最新系统白名单,与本地定义的白名单合并后重新加载postgrey | 当ENABLE_POSTGREY设为true时 |
syslogd | 为opendkim和postgrey提供日志功能 | 始终启动 |
!https://github.com/mikenye/docker-postfix/blob/dev/deployment_recipe_wrap_exchange.png?raw=true
在此部署示例中,创建两个容器(mail_in和mail_out):
mail_in设计为位于互联网与本地传统Exchange服务器之间,处理入站邮件,提供以下功能:
postscreen确保发送MTA符合标准mail_out设计为位于本地传统Exchange服务器与互联网之间,处理出站邮件,提供以下功能:
网络配置方面:
mail_in的Docker主机的TCP 2525端口以下是docker-compose.yml示例:
yamlversion: '3.8' volumes: queue_out: driver: local queue_in: driver: local certs: driver: local dkim: driver: local clamav_in: driver: local clamav_out: driver: local postgrey_in: driver: local tables_in: driver: local aliases_in: driver: local asupdata_in: driver: local logs_in: driver: local logs_out: driver: local services: mail_out: image: mikenye/postfix container_name: mail_out restart: always logging: driver: "json-file" options: max-file: "10" max-size: "10m" ports: - "25:25" environment: TZ: "Australia/Perth" POSTMASTER_EMAIL: "postmaster@yourdomain.tld" POSTFIX_INET_PROTOCOLS: "ipv4" POSTFIX_MYORIGIN: "mail.yourdomain.tld" POSTFIX_PROXY_INTERFACES: "your.external.IP.address" POSTFIX_MYNETWORKS: "your.local.LAN.subnet/prefix" POSTFIX_MYDOMAIN: "yourdomain.tld" POSTFIX_MYHOSTNAME: "mail.yourdomain.tld" POSTFIX_MAIL_NAME: "outbound" POSTFIX_SMTPD_TLS_CHAIN_FILES: "/etc/postfix/certs/privkey.pem, /etc/postfix/certs/fullchain.pem" POSTFIX_SMTP_TLS_CHAIN_FILES: "/etc/postfix/certs/privkey.pem, /etc/postfix/certs/fullchain.pem" POSTFIX_SMTPD_TLS_SECURITY_LEVEL: "may" POSTFIX_SMTPD_TLS_LOGLEVEL: 1 POSTFIX_REJECT_INVALID_HELO_HOSTNAME: "false" POSTFIX_REJECT_NON_FQDN_HELO_HOSTNAME: "false" POSTFIX_REJECT_UNKNOWN_HELO_HOSTNAME: "false" ENABLE_OPENDKIM: "true" OPENDKIM_SIGNINGTABLE: "/etc/mail/dkim/SigningTable" OPENDKIM_KEYTABLE: "/etc/mail/dkim/KeyTable" OPENDKIM_MODE: "s" OPENDKIM_INTERNALHOSTS: "your.local.LAN.subnet/prefix" OPENDKIM_LOGRESULTS: "true" OPENDKIM_LOGWHY: "true" ENABLE_CLAMAV: "true" CLAMAV_MILTER_REPORT_HOSTNAME: "mail.yourdomain.tld" volumes: - "certs:/etc/postfix/certs:ro" - "dkim:/etc/mail/dkim:rw" - "clamav_out:/var/lib/clamav:rw" - "queue_out:/var/spool/postfix:rw" - "logs_out:/var/log:rw" mail_in: image: mikenye/postfix container_name: mail_in restart: always logging: driver: "json-file" options: max-file: "10" max-size: "10m" dns: - 8.8.8.8 - 8.8.4.4 ports: - "2525:25" environment: TZ: "Australia/Perth" POSTMASTER_EMAIL: "postmaster@yourdomain.tld" POSTFIX_INET_PROTOCOLS: "ipv4" POSTFIX_MYORIGIN: "mail.yourdomain.tld" POSTFIX_PROXY_INTERFACES: "your.external.IP.address" POSTFIX_MYDOMAIN: "yourdomain.tld" POSTFIX_MYHOSTNAME: "mail.yourdomain.tld" POSTFIX_MAIL_NAME: "inbound" POSTFIX_SMTPD_TLS_CHAIN_FILES: "/etc/postfix/certs/privkey.pem, /etc/postfix/certs/fullchain.pem" POSTFIX_SMTP_TLS_CHAIN_FILES: "/etc/postfix/certs/privkey.pem, /etc/postfix/certs/fullchain.pem" POSTFIX_SMTPD_TLS_SECURITY_LEVEL: "may" POSTFIX_SMTPD_TLS_LOGLEVEL: 1 POSTFIX_RELAYHOST: "exchange.server.IP.addr" POSTFIX_RELAY_DOMAINS: "yourdomain.tld,someotherdomain.tld" POSTFIX_DNSBL_SITES: "hostkarma.junkemailfilter.com=127.0.0.2, bl.spamcop.net, cbl.abuseat.org=127.0.0.2, zen.spamhaus.org" ENABLE_OPENDKIM: "true" OPENDKIM_MODE: "v" OPENDKIM_LOGRESULTS: "true" OPENDKIM_LOGWHY: "true" ENABLE_SPF: "true" ENABLE_CLAMAV: "true" CLAMAV_MILTER_REPORT_HOSTNAME: "mail.yourdomain.tld" ENABLE_POSTGREY: "true" ENABLE_LDAP_RECIPIENT_ACCESS: "true" POSTFIX_LDAP_SERVERS: "active.directory.server.IP,active.directory.server.IP" POSTFIX_LDAP_BIND_DN: "CN=mailrelay,OU=Service Accounts,OU=Users,DC=yourdomain,DC=tld" POSTFIX_LDAP_BIND_PW: "12345" POSTFIX_LDAP_SEARCH_BASE: "DC=yourdomain,DC=tld" volumes: - "certs:/etc/postfix/certs:ro" - "queue_in:/var/spool/postfix:rw" - "clamav_in:/var/lib/clamav:rw" - "postgrey_in:/etc/postgrey:ro" - "tables_in:/etc/postfix/tables:ro" - "aliases_in:/etc/postfix/local_aliases:ro" - "logs_in:/var/log:rw"
建议将卷挂载到可访问的路径,以便轻松编辑文件、加载证书和查看日志。例如,可映射到本地已知路径:
yamlvolumes: queue_out: driver: local type: 'none' o: 'bind' device: '/opt/mail/queue_out'
或使用NFS映射到文件服务器:
yamlvolumes: queue_out: driver: local type: nfs o: addr=1.2.3.4,rw device: ":/vol/mail/queue_out"
| 环境变量 | 描述 |
|---|---|
ENABLE_CLAMAV | 可选。设为"true"以启用ClamAV。默认值为"false"。 |
ENABLE_LDAP_RECIPIENT_ACCESS | 可选。启用基于LDAP的收件人验证。详见下文"LDAP收件人验证"部分。 |
ENABLE_OPENDKIM | 可选。设为"true"以启用OpenDKIM。若启用,需设置下文"OpenDKIM配置"中的变量。默认值为"false"。 |
ENABLE_POSTGREY | 可选。设为"true"以启用postgrey。默认值为"false"。 |
ENABLE_SPF | 可选。设为"true"以启用policyd-spf。默认值为"false"。 |
POSTMASTER_EMAIL | 必填。设置域名的邮局管理员***。例如:postmaster@domain.tld。 |
TZ | 推荐。设置容器时区。默认值为UTC。 |
| 环境变量 | 描述 |
|---|---|
SYSLOG_PRIORITY | 可选。仅记录优先级高于SYSLOG_PRIORITY的消息。0=紧急,1=警报,2=严重,3=错误,4=警告,5=通知,6=信息(默认),7=调试 |
| 环境变量 | 文档链接 |
|---|---|
POSTFIX_DNSBL_SITES | 参见文档链接 |
POSTFIX_DNSBL_THRESHOLD | 参见文档链接 |
POSTFIX_INET_PROTOCOLS | 参见文档链接 |
POSTFIX_MAIL_NAME | 参见文档链接 |
POSTFIX_MESSAGE_SIZE_LIMIT | 参见文档链接 |
POSTFIX_MYDOMAIN | 参见文档链接 |
POSTFIX_MYHOSTNAME | 参见文档链接 |
POSTFIX_MYNETWORKS | 参见文档链接 |
POSTFIX_MYORIGIN | 参见文档链接 |
POSTFIX_PROXY_INTERFACES | 参见文档链接 |
POSTFIX_REJECT_INVALID_HELO_HOSTNAME | 参见文档链接 |
POSTFIX_REJECT_NON_FQDN_HELO_HOSTNAME | 参见文档链接 |
POSTFIX_REJECT_UNKNOWN_HELO_HOSTNAME | 参见文档链接 |
POSTFIX_RELAY_DOMAINS | 参见文档链接 |
POSTFIX_RELAYHOST_PORT | POSTFIX_RELAYHOST的可选端口参数。默认值为25,仅当relayhost使用非默认端口时需要修改。 |
POSTFIX_RELAYHOST | 参见文档链接 |
POSTFIX_SMTP_TLS_CHAIN_FILES | 参见文档链接 |
POSTFIX_SMTPD_MILTERS | 此处指定的邮件过滤器在DKIM和ClamAV之后应用。参见文档链接 |
POSTFIX_SMTPD_RECIPIENT_RESTRICTIONS_PERMIT_SASL_AUTHENTICATED | 设为true以在smtpd_recipient_restrictions中包含此规则。参见文档链接 |
POSTFIX_SMTPD_TLS_CERT_FILE | 参见文档链接 |
POSTFIX_SMTPD_TLS_CHAIN_FILES | 参见文档链接 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务