电商项目之Mailgun邮件退信率升高

文章目录

  • 1 项目背景
  • 2 前言
  • 3 采取的措施
  • 4 排查的思路
  • 5 原因
  • 6 技术实现方案

1 项目背景

运维人员进行日常巡检发现Mailgun邮件代发渠道的退信率不寻常,在某个时间段会飙高。这会有2个影响:
(1)针对运维的角度,Mailgun官方会将公司注册的mailgun账号封了。
(2)针对业务方的角度,电商系统无法在买家支付后发出订单邮件,从而导致买家取消订单、拒付的概率升高,最终导致支付成功率下降。

2 前言

  • 本文阐述的是笔者遇到的真实案例,非八股文或者自己玩玩的小demo。本文适合对电商业务感兴趣的小伙伴
  • 本文将着重以整体解决方案叙述作为一名Java开发者应该如何去处理生产级别的故障,不会手把手教你写代码,更多的是偏向于方法论、思考、技术设计落地、技术软能力

3 采取的措施

  1. 配合运维人员排查退信率升高的原因(互相成就对方,相辅相成)
  2. 从业务角度(咨询业务方)、技术角度(代码)排查什么场景会发送邮件
  3. 向领导、运维人员、业务方反馈结果并沟通确定解决方案

4 排查的思路

退信率升高,肯定是因为发送邮件失败了。跟业务方确认,都有哪些场景会发送邮件,有(1)支付成功;(2)发货;(3)弃单通知;三个场景。查询在退信率飙高的时间段内创建的订单,并查询每个订单对应的邮箱。找业务方确认是否存在某些卖家进行刷单(由于是刷单,所以邮箱基本都是乱填的,会导致发邮件失败)。统计三个场景的发件数量。

5 原因

由于涉及到公司的业务,此小节简略一笔带过

  1. 查到有某个卖家在刷单(支付成功触发的发送邮件)
  2. 弃单通知发送邮件的数量过多,且大部分邮箱都是无效的

6 技术实现方案

  1. 与运维调研新的邮件代发渠道,使用策略+模板模式整合多种邮件代发渠道,以此来达到支持快速切换渠道,降低账号被封的风险。上线后的效果:由于换了别的渠道发邮件,因此mailgun的退信率降低了。但是没有根本性解决mailgun退信率升高的问题,难道一直不用mailgun发邮件吗?不可能的。此方案只是用于临时解决mailgun退信率继续升高
  2. 考虑到弃单通知挽回客户的价值不大,停止发送弃单通知邮件。上线后的效果:退信率大幅度降低,低于5%。但这只是临时性解决问题,无法从根本上解决(因为一开启发送弃单通知邮件,退信率仍然会升高)。在接下来的几天里,自研邮件风控方案并落地。
  3. 自研邮件风控方案。
    (1)做一个收件人邮箱黑名单,存储发送失败的收件人邮箱,或收件人邮箱不存在、不可达。发信前先查收件人邮箱黑名单(由于C端页面并发量大,要做缓存,double check查询机制)。
    (2)统计每个站点的发信情况(已发送,发送失败,退信率,退信率阈值等,表设计留一个is_deleted字段标记是否删除,可以用来作为该站点的历史情况统计)。统计每条发信的情况(收件人,是否发送失败,失败原因等)。站点的退信率超过阈值则风控该站点,不允许发送该站点的邮件。
    (3)利用MX记录,校验收件人邮箱的域名,无法通过校验的邮箱,则不进行发送邮件并写入收件人邮箱黑名单(使用Double check写入库)。
    (4)引入第三方收费的邮箱校验服务。使用该服务前先校验MX记录来降低收费服务的成本。使用策略+模板模式整合多种第三方校验服务,以此来达到快速切换的效果。如果调用收费服务失败,需要告警到企业微信群(要做到把信息掌控在自己的手中,可以用来快速分析问题或者回答领导提出的问题)

你可能感兴趣的:(解决方案,运维,微服务,架构)