如何将Azure Logic App与本地SMTP Relay集成发送规则处理错误通知邮件
前置准备:打通Azure Logic App到本地SMTP Relay的网络通路
- 本地SMTP Relay运行在内网环境,公有云托管的Logic App没办法直接访问内网地址,首先要在本地网络里找一台能同时连通SMTP Relay和Azure网关服务的机器,安装本地数据网关(OPDG):这台机器不需要对内外网开入方向端口,只需要满足两个条件:一是能直接访问SMTP Relay的服务端口(比如内网的
smtp-relay.corp.local:587),二是能主动出方向连通Azure的公共网关服务。 - 把安装好的本地数据网关注册到和Logic App同一个Azure AD租户下,给网关分配对应的连接权限,确保Logic App可以选中这个网关通路。
配置Logic App内的SMTP邮件操作
- 进到你的Logic App工作流,定位到规则处理报错的分支(就是你用作用域错误捕获、判断运行状态是失败的那个逻辑分支),添加内置的SMTP连接器操作,不要选Office 365 Outlook这类公有云SaaS的邮件连接器。
- 配置SMTP连接参数的时候:
- 服务器地址填SMTP Relay的内网地址,端口填Relay实际开放的SMTP服务端口,和你本地客户端连这个Relay用的地址、端口完全一致就行
- 加密、身份验证选项完全匹配SMTP Relay的配置:如果Relay是内网信任模式不需要账号密码,就选无身份验证、无加密;如果开了STARTTLS就选对应的TLS模式,不要硬套公网邮件服务的加密要求
- 连接的网络通路选项里,下拉选之前装好的本地数据网关,不要走公有云的直连通路
- 发件人地址填SMTP Relay允许的合法发件域地址,一般是你们公司内网域名下的无回复邮箱,比如
logicapp-alert@yourcorp.com
- 配置邮件正文内容的时候,把关键的告警信息塞进去:失败的规则ID、错误详情、工作流运行时间、运行追踪ID,不要只发一句“规则出错了”,不然支持团队收到还要花时间找上下文。
场景适配的优化点
- 绝对不要图省事把本地SMTP Relay直接做端口映射暴露到公网,靠公网IP直接给Logic App发信,这种配置很容易被扫到,沦为垃圾邮件转发节点,全流程走本地数据网关的内网转发是最合规的选择
- 如果你用的是单租户/标准型Logic App,不需要依赖托管的本地数据网关,可以直接给Logic App配置虚拟网络集成,通过已经打通内网的VPN/ExpressRoute专线直接访问SMTP Relay,链路延迟比走网关转发低很多
- 把SMTP操作的重试策略改成3次重试、1分钟间隔,避免偶发的网络抖动、Relay临时负载高导致告警漏发
- 提前在SMTP Relay的访问控制列表里,把安装本地数据网关的机器IP加到发信白名单,避免Relay的反垃圾策略把通知邮件当成垃圾信拦截
内容的提问来源于stack exchange,提问作者VeeAar
相关产品推荐
相关产品推荐

