
mikenye/postfixPostfix是Wietse Venema开发的优秀邮件服务器。本容器旨在简化入站和出站邮件中继的设置,以保护和增强自托管邮件服务器(如Microsoft Exchange)。容器采用Postfix的Postscreen提供增强保护。
除基本邮件中继功能外,容器还可选择性提供以下功能:
容器通过环境变量完全配置,容器启动时会根据环境变量构建各服务的配置文件,同时支持通过卷映射部分配置文件。目前支持的Docker架构包括linux/386、linux/amd64、linux/arm/v7和linux/arm64。
本容器使用优秀的s6-overlay进行进程管理(及其他实用功能)。
| 服务名称 | 描述 | 启动条件 |
|---|---|---|
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提供日志功能 | 始终启动 |
!包装Exchange服务器
在此部署示例中,创建两个容器(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_*** "***" 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_*** "***" 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: "***" 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 | 必填。设置域名的邮局管理员***。例如:***。 |
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 | 参见文档链接 |




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务