最近几个月,Gmail 总是收到很多垃圾邮件,来自不同地址,标题五花八门,无论 Mark as Spam 多少次,Gmail 依然无法自动识别这些邮件。
每次标记垃圾邮件没有效果,只能自己想办法了,我发现这些邮件大多都来自很少见后缀的域名,.biz, .nl, .uk 等等,并且都有着 webmaster, admin 这样的前缀。
首先尝试使用 Gmail 内建的过滤器,结果 Gmail Filter 中使用通配符的效果差强人意,你可以使用类似这样的关键词进行搜索过滤。
in:anywhere from:(contact*@*.uk OR @*.nl)
但是想要更精细一些,就效果不太好了,于是想到了 Google App Scripts,简单的学习之后,写了一个初始的脚本。
这样其实就可以挡住很多发件地址特征很明显的垃圾邮件了,但是还有一些,没有那么好识别,于是我对脚本又做了一些改进,设置了邮件标题和发件地址的组合标记。
const EMAILS = {
spam: [
/webmaster@.*\.uk/i,
/admin@.*\.uk/i,
/.*winner.*@.*\.biz/i,
],
warn: [
/.*@.*\.biz/i,
/.*@.*\.nl/i,
/.*@.*\.uk/i,
]
}
const SUBJECTS = {
spam: [
/GEICO/i,
],
warn: [
/credit/i,
/score/i,
/arrived/i,
/health/i,
]
}
如果 Subject 和 From 任何一个命中 spam 规则,就标记垃圾邮件,如果同时命中 warn 规则,也标记为垃圾邮件。这样又干掉了一大批。
但是仍然剩下一些顽疾的邮件,处理不掉,他们的标题和域名都没有特别明显的特征。
比如下面这种通篇就一个大图加一个文字链接,有的甚至没有文字,只在图片上面放了链接。
这种正文这么明显的,Google 都无法识别也是醉了。通过查看邮件原始内容,发现了一些端倪。
以红线作为分割,上面的是邮件显示的内容,下面的是隐藏的内容,看似是一片有内容的邮件,实则暗藏玄机。
这样就好处理了, <object>
标签正经邮件谁会去用呀,于是我又给脚本追加了一条判断规则:正文同时包含隐藏内容