Elm 作者 Evan 用 Haskell 加 C 手搓了一个发信程序,想搞清楚为什么 1000 封邮件要收 15 美元。结论是发送本身一点也不难——SMTP 就是一个和 HTTP 1.1 同样土气的明文协议,加一层 TLS 就和发一个 HTTPS 请求差不多;难的是身份与信誉:原始协议可以随便伪称发件人,所以要加 DNS TXT 记录做签名验证,然后还要撞上各家收件方行为各异的垃圾过滤器,有的只认域名、有的认单个 IP、有的直接连坐整个 IP 段。
🔑 核心要点
原始 SMTP 发一封信要七个往返,而且那个年代连 TLS 都没有,全程明文
协议最大的洞是 发件人身份——默认允许你自称任何域名,所以必须补 DNS TXT 记录(SPF/DKIM 那一类)用公钥证明身份
验证身份之后仍然撞上 信誉系统:Gmail 主要看域名,有的收件方看单个 IP,有的干脆看整个 IP 段连坐
作者的实测结果:自己的信能进 Gmail 收件箱,用 Outlook 的人连垃圾箱都看不到
所以成本不在代码,在 IP 段——想覆盖所有收件箱就得自己有 IP 段并跑到足够大的日发信量,这才是那 15 美元的来源
💡 金句
Actually setting up the code to send emails is a relatively doable one-time thing. From a technical perspective, it is essentially the same as sending an HTTPS request.