本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

docker-postfix 是一个基于 Alpine Linux 的轻量级 Postfix 中继主机镜像,专为 Docker 容器环境设计。它允许在 Docker 云/ swarm 部署中集中管理出站邮件发送,支持直接发送邮件或通过公司主服务器中继邮件。
MYNETWORKS 限制允许发送邮件的网络范围ALLOWED_SENDER_DOMAINS 限制允许的发件人域名docker run --rm --name postfix -e "ALLOWED_SENDER_DOMAINS=example.com" -p 1587:587 boky/postfix
启动后,可使用 localhost:1587 作为 SMTP 服务器地址发送邮件。注意:需确保 example.com 域名已正确配置 SPF 记录(参见 openspf),否则邮件可能被标记为垃圾邮件。
重要:镜像默认使用提交端口(587),不暴露端口 25(因常被 ISP 封锁或被其他服务占用)。
| 环境变量 | 描述 |
|---|---|
HOSTNAME | Postfix 服务器标识主机名(默认使用 Docker 容器 ID) |
RELAYHOST | 中继主机地址(格式:host 或 host:port 或 [ipv6]:port) |
RELAYHOST_USERNAME | 中继主机认证用户名(可选) |
RELAYHOST_PASSWORD | 中继主机认证密码(可选) |
MYNETWORKS | 允许发送邮件的网络范围(默认:127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) |
ALLOWED_SENDER_DOMAINS | 允许的发件人域名(空格分隔多个域名,必填,除非设置 ALLOW_EMPTY_SENDER_DOMAINS) |
ALLOW_EMPTY_SENDER_DOMAINS | 允许空发件人域名(设置为非空值如 "true" 时,ALLOWED_SENDER_DOMAINS 可省略) |
MASQUERADED_DOMAINS | 地址伪装域名(重写发件人地址,如 *** → ***) |
RELAYHOST_TLS_LEVEL | 中继主机 TLS 安全级别(默认:may,详见 Postfix 文档) |
MESSAGE_SIZE_LIMIT | 最大邮件大小(字节,默认 0 表示无限制) |
INBOUND_DEBUGGING | 启用来自 MYNETWORKS 的连接调试(设置为非空值如 "1" 启用) |
SMTP_HEADER_CHECKS | SMTP 头检查配置(格式:type:path,设置为 "1" 时使用默认配置) |
HOSTNAME设置 Postfix 服务器标识主机名,默认使用容器 ID(如 f73792d540a5)。建议显式设置以方便日志追踪:
docker run --rm --name postfix -e HOSTNAME=postfix-docker -e "ALLOWED_SENDER_DOMAINS=example.com" -p 1587:587 boky/postfix
RELAYHOST, RELAYHOST_USERNAME, RELAYHOST_PASSWORD配置中继主机,用于通过外部服务器发送邮件(如公司邮件服务器或第三方 SMTP 服务):
基本中继(默认端口 25):
docker run --rm --name postfix -e "RELAYHOST=192.168.115.215" -e "ALLOWED_SENDER_DOMAINS=example.com" -p 1587:587 boky/postfix
指定端口:
docker run --rm --name postfix -e "RELAYHOST=192.168.115.215:587" -e "ALLOWED_SENDER_DOMAINS=example.com" -p 1587:587 boky/postfix
IPv6 地址:
docker run --rm --name postfix -e 'RELAYHOST=[2001:db8::1]:587' -e "ALLOWED_SENDER_DOMAINS=example.com" -p 1587:587 boky/postfix
带认证的中继:
docker run --rm --name postfix \ -e "RELAYHOST=mail.google.com:587" \ -e "RELAYHOST_USERNAME=***" \ -e "RELAYHOST_PASSWORD=your-password" \ -e "ALLOWED_SENDER_DOMAINS=example.com" \ -p 1587:587 boky/postfix
MYNETWORKS限制允许发送邮件的网络范围(CIDR 格式,逗号分隔)。默认包含私有网络,如需收紧限制:
docker run --rm --name postfix -e "MYNETWORKS=10.1.2.0/24" -e "ALLOWED_SENDER_DOMAINS=example.com" -p 1587:587 boky/postfix
ALLOWED_SENDER_DOMAINS必填项,指定允许的发件人域名(空格分隔多个域名),用于 Postfix 中继限制:
docker run --rm --name postfix -e "ALLOWED_SENDER_DOMAINS=example.com example.org" -p 1587:587 boky/postfix
若需仅限制收件人而非发件人,设置 ALLOW_EMPTY_SENDER_DOMAINS=true 并将 ALLOWED_SENDER_DOMAINS 设为空,然后通过自定义脚本扩展配置。
MASQUERADED_DOMAINS启用地址伪装,重写发件人地址(如 *** → ***):
docker run --rm --name postfix \ -e "ALLOWED_SENDER_DOMAINS=example.com example.org" \ -e "MASQUERADED_DOMAINS=example.com" \ -p 1587:587 boky/postfix
SMTP_HEADER_CHECKS配置 SMTP 头检查(用于过滤或修改邮件头)。设置为 "1" 时使用默认配置(regexp:/etc/postfix/smtp_header_checks):
docker run --rm --name postfix \ -e "SMTP_HEADER_CHECKS=regexp:/etc/postfix/smtp_header_checks" \ -e "ALLOWED_SENDER_DOMAINS=example.com" \ -p 1587:587 boky/postfix
opendkim-tools 或 opendkim-utils(根据系统)mkdir -p /host/keys && cd /host/keys for DOMAIN in example.com example.org; do # 生成 selector 为 "mail" 的密钥 opendkim-genkey -b 2048 -h rsa-sha256 -r -v --subdomains -s mail -d $DOMAIN # 修复哈希算法标识 sed -i 's/h=rsa-sha256/h=sha256/' mail.txt # 重命名文件 mv mail.private $DOMAIN.private mv mail.txt $DOMAIN.txt done
将 <domain>.txt 文件中的内容添加到对应域名的 DNS TXT 记录(如 mail._domainkey.example.com)。
docker run --rm --name postfix \ -e "ALLOWED_SENDER_DOMAINS=example.com example.org" \ -v /host/keys:/etc/opendkim/keys \ -p 1587:587 boky/postfix
通过自定义脚本扩展 Postfix 配置,脚本需放在 /docker-init.db/ 目录(.sh 扩展名),启动时自动执行。
FROM boky/postfix LABEL maintainer="Jack Sparrow <***>" ADD additional-config.sh /docker-init.db/
#!/bin/sh # 添加自定义 Postfix 配置 postconf -e "address_verify_negative_cache=yes"
version: '3' services: postfix: image: boky/postfix container_name: postfix environment: - ALLOWED_SENDER_DOMAINS=example.com example.org - HOSTNAME=postfix.example.com - RELAYHOST=smtp.example.com:587 - RELAYHOST_USERNAME=*** - RELAYHOST_PASSWORD=smtp-password - MYNETWORKS=10.0.0.0/8,172.16.0.0/12 ports: - "1587:587" volumes: - ./dkim-keys:/etc/opendkim/keys - ./custom-scripts:/docker-init.db restart: unless-stopped
root 运行(Postfix 设计如此),子进程以 postfix 用户(UID:GID 100:101)运行opendkim 用户(UID:GID 102:103)运行MYNETWORKS 范围,避免未授权网络发送邮件免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429