AcelleMail 把各 vendor 千姿百态的退信形态归并为一个小型语义 enum。文件 app/SendingServers/Webhooks/BounceType.php 恰好定义了驱动黑名单决策的两个 case:
enum BounceType: string
{
case HARD = 'hard';
case SOFT = 'soft';
}Vendor 的原始字符串(Amazon SNS 给 Permanent / Transient / Undetermined;Mailgun、SparkPost、SendGrid 各有各的分类法)单独保留在 BounceReceived::$bounceTypeRaw 供审计。模型 BounceLog 进一步用三个常量 — HARD、SOFT、UNKNOWN — 映射这层数据,与历史遗留列对齐。