SMTP 邮件转发器是一个轻量级的邮件转发服务,支持将本地SMTP服务接收到的邮件转发到外部SMTP服务器。适用于部署在内网环境中,接收并通过外部SMTP服务器转发各类监控和设备的告警邮件的场景。
更适合运维人员,用于解决内部网络中无法直接访问外部SMTP服务器的问题,同时兼容各类系统SMTP的配置要求(如:只兼容25端口的老设备、不支持填用户密码的、必须要填用户密码的、填了用户密码必须要启用SSL/TLS加密协议的各类奇葩配置要求)。
- 支持本地SMTP服务(普通/TLS/SSL)
- 支持转发到外部SMTP服务器(TLS/SSL)
- 灵活的IP白名单控制
- 详细的日志记录(支持日志轮转)
- 邮件队列管理(支持重试机制)
- 集成错误钉钉告警功能
- 简单易用的YAML配置文件
- 支持 SMTP AUTH Plain 认证(启用情况下客户端也能跳过,只是为了兼容某些 SMTP client 强制需要服务端支持 AUTH)
-
克隆项目
git clone https://github.com/sheaven79/SmtpForwarder.git cd SmtpForwarder
-
复制示例配置文件,并根据实际需求修改
cp config.yaml.example config.yaml
-
编辑配置文件 根据实际情况修改
config.yaml
文件中的配置项。 -
下载依赖文件
go mod download
-
运行服务
go run main.go
-
编译后运行
go build -o ./bin/smtpforwarder -ldflags "-s -w" -a ./main.go ./bin/smtpforwarder
配置文件采用YAML格式,基本配置如下(详细请看日志注释):
local:
port: 25 # 普通SMTP端口
allowed_ips: # Client IP白名单
- "127.0.0.1"
- "192.168.1.0/24"
enable_auth: true # 是否启用SMTP认证
username: "your-username" # 认证用户名(仅在enable_auth为true时有效)
password: "your-password" # 认证密码(仅在enable_auth为true时有效)
remote:
host: "smtp.example.com" # SMTP服务器地址
port: 465 # SMTP服务器端口
use_tls: false # 是否使用TLS
use_ssl: true # 是否使用SSL
username: "your-username" # 认证用户名
password: "your-password" # 认证密码
from: "[email protected]" # 发件人邮箱,部分邮箱要求 from 和登录的 username 一致
MIT License