轻量双通道邮件中继
让每一次投递,
有路可循。
从业务服务器,到邮件服务器。
主动推送与被动拉取协同工作,让短暂的连接中断,
不再成为一封重要邮件的终点。
看看邮件如何抵达 ↓
连接可以中断,任务始终保存。
MAILRELAY.
Built for the messages that matter.Go + SQLite ↘
01 / 两条路,同一个目标
网络有起伏。
任务有归处。
01PUSH
连接畅通,即刻接力
业务先将邮件保存到 outbox,再主动提交中继。任务持久化后进入统一发送队列,快速完成时直接返回结果。
02PULL
主动受阻,反向接续
中继定期询问项目,领取待发任务。只要反向连接可用,邮件便有另一条路;双向中断时,任务留在队列等待恢复。
相同任务编号,共用一条队列。两种模式同时运行,正常情况下重复提交只接收一次。
02 / 把复杂留给中继
轻量运行。
清楚掌控。
为验证码与业务通知而生。
一处管理 SMTP,让项目专注业务。
先保存,再投递
SQLite 持久化任务与结果。重启后恢复处理,结果回报独立重试,回报失败不会让邮件重新发送。
QUEUEDACCEPTED
重试有序,过期即止
临时故障指数退避,永久拒绝保留原因。验证码沿用原内容和有效期,过期后不再开始新的投递。
RETRY / BACKOFF
配置与状态,尽在一处
网页初始化、账号授权、投递记录和失败重试。登录连续三次密码错误后锁定,使用服务器密钥验证解锁。
30h成功记录,适时退场。
投递成功的正文与日志保留 30 小时。待重试任务继续保留,最小去重状态单独维护。
↗
SMTP 已接收表示邮件服务器接受了邮件,不代表最终进入收件箱。确认丢失时采用送达优先策略,重试可能产生重复邮件。
YOUR NEXT MESSAGE, IN GOOD HANDS.
重要的消息,
值得多一条路。
从这里开始,连接你的项目与邮件服务器。