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

!logo
smtp-relay 是一个动态SMTP服务器镜像,旨在替代原 aws-smtp-relay 项目。它支持多种功能模式:作为本地调试SMTP服务器将邮件存储到文件夹;将SMTP协议转发至AWS SES API;模拟AWS SES的入站功能(如mail2s3、mail2sqs)及GCP对应功能(如mail2gcpstorage、mail2gcppubsub)。
aws(SES/SQS)、gcp(Pub/Sub)、file(文件存储)等类型使用Docker命令启动,映射端口并指定配置文件:
docker run -p 10025:10025 loopingz/smtp-relay:latest configs/aws-smtp-relay.jsonc
配置文件可引用官方JSON Schema验证格式:
{ "$schema": "[***]" }
提示:将URL中的
main替换为具体版本标签(如v1.0.0),可获取对应版本的配置格式。
{ "$schema": "[***]", "flows": { "localhost": { "filters": [ { "type": "whitelist", "ips": ["regexp:.*"] // 允许所有IP访问SMTP } ], "outputs": [ { "type": "aws", "ses": {} // 发送至AWS SES } ] } }, "options": { "disableReverseLookup": false, "authOptional": true, // 无需认证 "loggers": [ { "level": "INFO", "type": "CONSOLE" // 控制台日志 }, { "level": "INFO", "type": "FILE", "filepath": "./smtp.log" // 文件日志 } ] } }
将邮件存储到本地文件夹:
# 无认证模式 docker run -p 10025:10025 -v `pwd`/emails:/smtp-relay/received_emails loopingz/smtp-relay:latest ./configs/fake-smtp.jsonc # 带认证模式 docker run -e SMTP_USERNAME=test -e SMTP_PASSWORD=plain:test -p 10025:10025 -v `pwd`/emails:/smtp-relay/received-emails loopingz/smtp-relay:latest configs/fake-smtp-with-auth.jsonc
{ "flows": { "localhost": { "filters": [ { "type": "whitelist", "to": ["regexp:.*@mydomain.com"] // 过滤收件人为指定域名的邮件 } ], "outputs": [ { "type": "gcp", "path": "gs://myemail/", // 存储至GCP Storage桶 "pubsub": "" // 可选:发送消息至Pub/Sub队列 } ] } }, "options": { "disableReverseLookup": false, "authOptional": true } }
配置中可使用以下变量(处理器内可用):
_iso8601_:日期时间(YYYYmmddHHiiss格式)_timestamp_:UNIX时间戳_id_:会话ID_from_:发件人邮箱_messageId_:邮件ID_subject_:邮件主题_to_:收件人列表(逗号分隔)支持CONSOLE(控制台)和FILE(文件)类型日志,配置示例:
"loggers": [ { "level": "INFO", // 日志级别:DEBUG/INFO/WARN/ERROR "type": "CONSOLE" }, { "level": "INFO", "type": "FILE", "filepath": "./smtp.log", // 日志文件路径 "sizeLimit": 50000000 // 文件大小限制(字节),超过自动分割 } ]
允许指定IP或收件人:
{ "type": "whitelist", "ips": ["regexp:192\\.168\\..*"], // 允许192.168网段IP "to": ["regexp:.*@example\\.com"] // 允许发往example.com的邮件 }
将认证请求转发至HTTP端点:
{ "type": "http-auth", "url": "http://localhost:16662/smtp/filter", // 认证端点URL "method": "POST", "credentialsMethod": "BASIC_AUTH", // 使用Basic Auth传递凭据 "json_result": { // 可选:验证响应JSON内容 "path": "$.allowed", "value": "true" } }
通过配置文件或环境变量设置用户名密码,示例配置:
{ "type": "static-auth" }
环境变量设置:
SMTP_USERNAME:用户名SMTP_PASSWORD:密码(格式:哈希算法:哈希值,如sha256:abc123...)SMTP_PASSWORD_SALT:可选盐值生成加密密码(以sha256为例):
HASH="sha256" PASSWORD="TEST" node -e 'console.log(`${process.env.HASH}:${require("***").createHash(process.env.HASH).update(process.env.PASSWORD).digest("hex")}`)'
发送至SES或SQS:
{ "type": "aws", "ses": {}, // 发送至SES "sqs": { "queueUrl": "[***]" } // 可选:发送至SQS }
存储邮件到文件系统:
{ "type": "file", "path": "./received_emails/${_iso8601_}_${_id_}.eml" // 使用变量生成文件名 }
邮件的CloudEvent表示格式:
interface SmtpCloudEvent { email: { from?: AddressObject; // 发件人 attachments: { filename: string; size: number }[]; // 附件 subject?: string; // 主题 to?: AddressObject[]; // 收件人 cc?: AddressObject[]; // 抄送 bcc?: AddressObject[]; // 密送 replyTo?: string; // 回复地址 date?: Date; // 日期 text?: string; // 文本内容 html?: string; // HTML内容 }; server: { clientHostname: string; // 客户端主机名 remoteAddress: string; // 客户端IP remotePort: number; // 客户端端口 hostNameAppearAs: string; // 服务器显示名称 id: string; // 会话ID secure: boolean; // 是否加密传输 transmissionType: string; // 传输类型 username: string; // 认证用户名 }; }
使用openssl连接SMTP服务器,手动发送邮件:
docker run -p 10025:10025 loopingz/smtp-relay:latest
openssl s_client -connect localhost:10025
EHLO client.example.com AUTH LOGIN <base64编码的用户名> <base64编码的密码> MAIL FROM: <***> RCPT TO: <***> DATA Subject: Test Email Hello World! . QUIT
提示:使用
base64 <<< "username"命令生成base64编码的凭据。
免费版仅支持 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