订阅表单一天新增四千条记录,邮箱后缀集中在一个不存在的域名,确认邮件全部退信,发信域名的信誉分掉到 60。日志里能对上时间点,这种反而好排。
表单只有邮箱一个字段,提交即入表,脚本可以直接刷。没有二次确认,假地址也算作有效订阅。发信时全量推送,退信率一高就被服务商限流。这一点先确认清楚,后面就不用反复试。
add_filter('subscribe_validate', function($ok, $email){
if (!empty($_POST['website'])) return false;
if (time() - (int)$_POST['ts'] < 3) return false;
return $ok;
}, 10, 2);
「订阅表单被灌」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。
处理上按这个顺序:改成二次确认,点确认链接后才算订阅成功;加一个隐藏字段和提交耗时校验,机器人通常填了隐藏字段;对同一 IP 限频,并把硬退信地址自动置为无效。
结果对不对很好判断,一天内新增记录回落到正常量,退信率降到百分之一以下。
