Azure服务器通过Amazon SNS发送含devCollector.local的SMS失败原因咨询
问题原因分析与规避方案
核心问题现象
- 从Azure云服务器通过Amazon SNS发送含
devCollector.local:的SMS时,触发Phone carrier has blocked this message错误,更换Verizon/Google Voice号码均无效 - 将字符串改为
devCollector (local):后可正常发送 - 本地机器(Node.js v14.18.3)用同一脚本发送含
jeremy-crow.local的短信无问题 - 手机点对点发送该字符串正常,排除字符串本身的内容违规
可能的原因
SNS的IP信誉+关键词联合过滤
Azure云服务器的IP可能被SNS归入高风险IP池(比如该IP段曾有垃圾短信记录),加上xxx.local这种类似内网域名的格式,被SNS的自动检测系统判定为潜在钓鱼/垃圾信息,直接触发运营商拦截。本地机器IP不在高风险池,所以能绕过检测。运营商针对SNS源的严格过滤规则
运营商对来自云服务平台的短信(尤其是跨云场景:Azure→AWS SNS)会启用更严格的关键词过滤策略。.local这类后缀容易被识别为疑似域名,被判定为可能携带恶意链接,因此直接拦截。而点对点短信的过滤规则宽松,不会触发拦截。跨云场景的额外风控
跨云发送短信的行为可能被AWS或运营商视为异常流量,结合敏感格式的关键词,进一步提高了拦截概率。如果用AWS EC2发送相同内容,可能不会出现该问题。
规避方案
- 修改字符串格式:替换
.分隔符为其他符号,比如括号、下划线,例如devCollector_(local):或devCollector[local]: - 调整内容位置:将类似
xxx.local的标识放在短信内容的末尾,而非开头,降低被检测为恶意内容的概率 - IP信誉申诉:如果长期需要从Azure服务器发送SNS短信,可向AWS提交申诉,确认服务器IP是否被误标记为高风险,申请加入白名单
- 切换发送源:测试使用AWS EC2实例发送,验证是否为跨云IP导致的风控拦截
内容的提问来源于stack exchange,提问作者tyspice
相关产品推荐
相关产品推荐

