写了个邮件 DKIM 签名代码,有点用吗?

2018-11-11 16:51:07 +08:00
 xiangyuecn

如果我们的代码对邮件进行了 DKIM 签名,可以直接投递到对方邮件服务器,不经过己方的邮件服务器。

合法签名(先有个合法的域名)的邮件对方能够接收,最差也能投递到垃圾箱吧,一般不会被拦截或者被对方邮件服务器直接拒收。


.Net Framework 4.5 下 C# 实现的,项目地址:

Github: https://github.com/xiangyuecn/DKIM-Smtp-csharp


.Net 下进实现 DKIM 签名比较曲折,主要是系统带的 MailMessage、SmtpClient 功能太渣了,想要个什么好功能,对不起 private。很多控制功能缺乏,讲典型的 HELO 发的是服务器名字,看.Net 源码,内部是一个属性控制的,并且通过大量的代码、读各种环境配置来给他赋了个值,最后得出的是电脑名字;但是说到提供一个配置选项。。。想改?没门。

直到

遇到了一个神器,任何类内定义的方法都可以用一个自己写的方法来替换掉,包括.Net 框架内的,完美!

DotNetDetour 顺带给他提了个issues

2423 次点击
所在节点    程序员
7 条回复
txydhr
2018-11-12 07:19:14 +08:00
因为 dkim,spf 签名很容易,而且这两个东西主要还是防止自己的域名被其他人盗用,不能说明你本身发送的是非垃圾邮件。。
邮件服务商主要还是看发送 ip 的信誉和内容识别,我自己的个人邮箱 dkim,spf 都是设置好的,但是微软就默认把 digitalocean 的 ip 成段成段的封掉(垃圾箱都进不去),解封需要自己网页去申请。。。。
dkim 比 spf 的好处是邮件经过其他服务器转发以后邮件的 dkim 的域名和签名依然不变,spf 服务器经过转发服务器以后就失败了(除非你的域名的 spf 里也包括这个转发服务器)。。。。
xiangyuecn
2018-11-12 10:13:59 +08:00
@txydhr 人家不收也是没办法 ପ(・ω・) 好好学习天天向上
julyclyde
2018-11-12 11:46:35 +08:00
直接投递的话,不满足 spf 约束
而 spf 的部署,远远比 dkim 多
xiangyuecn
2018-11-12 12:43:09 +08:00
@julyclyde v=spf1 +all,比较任性的设置,163 好像签了一下 DKIM 就会收,不签嘛,不知道他们家是不是有缓存,成功一次后面随便发
julyclyde
2018-11-12 13:19:01 +08:00
@xiangyuecn +all 的话相当于不设防,你还要 spf 干什么呢?直接删了得了
txydhr
2018-11-12 14:22:44 +08:00
@xiangyuecn 大多数邮件服务商,比如 gmail 都不会拒收邮件,再垃圾的邮件都是进垃圾箱,另外能进自己的收件箱,可能还是会进别人垃圾箱。。。拒收目前只知道微软企业版和腾讯会,尤其是腾讯,服务器拒收用户都不知道,而且拒收的又多(只要是公司学校自己域名的邮箱,很容易就拒收),识别系统又烂,逻辑莫名其妙,连美国学校发的邮件都拒收,关键是大多数都能进邮箱,有几封就拒收(该学校用的 gmail 系统,连 gmail 的 ip 发来的邮件都拒收。。。)。微软企业版好歹每天都会告诉你我拒收了哪些邮件,而且拒收也很少发生,还可以点链接取回(如果当天有拒收的话)。。。可能跟美国的商业环境严重依赖 email 交流有关吧。。。想不通腾讯这种不通知用户随随便便就默默的拒收用户的邮件是什么逻辑。。。
xiangyuecn
2018-11-12 15:05:58 +08:00
@julyclyde +all 方便本地测试 哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/506737

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX