由于最近在折腾邮件服务器,正好想测试一下自己以前注册的其他几个邮箱。
发现 outlook 邮箱在发信时,居然可以把发信人设置为和 outlook 帐号关联的邮箱帐号。
比如在 outlook 帐号下,[email protected] 和 [email protected] 是关联的,当发送到 [email protected] 时,可以选择 [email protected] 作为发信人。
并且 gmail 收到的邮件也显示是 [email protected] ,但被送进了 spam 。
具体看了一下 headers 是
From: [email protected]
Sender: [email protected]
虽然说在注册 outlook 时会验证 [email protected] ,但是这种随意伪装其他邮件地址的行为真的好吗?

因为之前都不怎么把不同的邮箱关联在一起,所以最近才发现。其实让我最惊讶的一点是,这种行为完全就是邮件伪造的定义,这种做法也被不少邮件服务器的 DMARC 策略禁止/隔离了,而 outlook (以及其他各种大的邮件服务提供商)却依然提供这种特性。outlook 只单方面的验证了 protonmail 的邮箱的确属于用户,而 protonmail 并没有显式认可。比如 outlook 这边要接收其他邮箱的邮件时,会通过 POP/IMAP 协议的用户名和密码来从第三方获取邮件,按理说发信时也该利用 SMTP 协议的用户名密码来发信。这里的用户名密码即为某种显式认可。类似的,当你把域名的 SPF/DKIM 记录设置为第三方邮件服务提供商时,第三方可以利用你的域名收发邮件,这也是某种显式认可。毕竟电子邮件在我的印象中是比较正式的通讯方式,可以理解由于历史原因 SMTP/POP/IMAP 协议存在很多不安全的方面。只是没想到快 2024 了,还存在这么多让人匪夷所思的特性。特别是当你不了解 SMTP 协议时,你不知道怎么区分被分类为 Spam 的邮件到底是伪造的,还是由于误分类导致的。

这有啥,早几年 gmail 也可以

自己写个发邮件的程序一样可以,Gmail 现在也是可以的,而且我记得还有一种模式是记住其他账户的密码,从而直接通过正确的服务器发送。这算不上伪装吧,毕竟 Sender 写明了是谁。电子邮件头的很多信息和传输来源目的是分开的,比如很多邮件服务器都会在送达 bcc 收件人的时候也删去 bcc 行,另外邮件列表也大量运用 Sender/From 不同、To/Cc/Bcc 都没有实际收到邮件的邮箱地址的情况。

域名所有者可以设置 DMARC 记录,这个记录可以禁止第三方通过自己的域名发邮件。_dmarc.gmail.com 的记录是 p=none ,说明 gmail 允许第三方以 .com 作为发件人发信,且不会进 spam 。_dmarc.protonmail.com 是 p=quarantine ,所以被送进了 spam 文件夹。如果设置为 p=reject ,这种修改发件人的邮件就发不出去了(例如 _dmarc.cloudflare.com )。所有不设置为 p=reject 的域名都是某种程度上允许“伪装”发件人的,比如常用的邮件转发也是修改了 From 。

support.google.com/mail/answer/22370?hl=en Gmail 也有一样的功能。这不算伪装,From 就是可以改的,这是邮件协议的一部分

protonmail 比较特殊,本身比较强调隐私,API 很多限制(我隐约记得 SMTP 直接给禁用了需要用官方的一个叫 bridge 的东西转发)。 其他很多邮箱服务比如 gmail 都是可以授权给第三方发邮件的,根本谈不上伪装吧,相当于 outlook 既是电子邮箱服务同时也是第三方邮箱的客户端

研究一下电子邮件的原理,你甚至可以在你自己的电脑上通过你的家庭 IP ,冒充任何一个邮箱地址向任何一个电子邮件地址发邮件,不过有极大概率(如果不是肯定的话)会进垃圾箱并被标注为危险邮件。

电子邮件的原理就是这样的,你可以随意伪造任何地址,甚至连 smtp 服务器都不用所以说反垃圾邮件是一个大问题

这个伪装不好的点在哪?不都是你自己拥有的邮箱吗?

Gmail 都不像 outlook 一样允许拥有自己的别名, outlook 甚至都可以换, 这点不好

qq 邮箱也有

我的 pve 自动发送的邮件没被标注危险,估计是因为那个域名是我解析到家里的。

不稀奇啊

gmail 也可以,163 也可以

什么,大清亡了?

不用大惊小怪,这是 Email 的标准行为,SMTP 协议所允许的,早年所有邮箱服务商、邮箱客户端几乎都允许这么干。只是后来一些服务商出于反垃圾需要,人为加上了不允许伪装的限制。Outlook 在某些情况下开了个口子而已。

我前些年还弄到过 .com 的账号,只能显示在发信里,不能收信。那会儿好像有 bug ,微软的域名随便整。

啊? QQ 邮箱这不是很多年前就有了

邮箱的发件人类似于英文信 title 上的地址,不是真正的寄出地址,真正的发送方得点开详细信息才能看到。

smtp 协议允许,并不需要跨域检测。

恭喜你,发现了钓鱼邮件的一个来源;其实你甚至不需要一个邮箱系统,就能通过 SMTP 协议发送一封任意源邮件地址的邮件,只是区别于收件服务器信不信任而已。目前可以通过 SPF 、DKIM 、DMARC 来限制伪造邮件。

这个 feature 好像马上要没了,明年之前就要取消了,不允许再继续添加。前几天 v2 有人把这个当域名邮箱,但是这个肯定会进垃圾箱。

这就是电子邮件的 feature 啊,如果域名所有者想要禁用这个 feature ,那就应该设置 DMARC

这种代发邮件,收信方一般会明确提醒“由 xxx 代发”,github 通知邮件就是这样的。

好多年前,申请到了 AOL 的 .com 的邮箱,一直用 gmail 代收代发。后来 AOL 不让这样干了,我的密码也忘记了……

还可以设置 rdns ,通过 ip 可以查到域名,如果邮件发送地址不是你的 ip ,也不会被接收。

你这不算啥。我 outlook 绑定了别人的邮箱。能收到别人的邮件。。。我也不知道怎么搞的。。。

QQ 邮箱也可以

一直都可以....这样发出去的电邮都会挂着 on behalf of/由某人代发

大惊小怪,不但 Gmail 、QQ 邮箱能这样做,规模稍微大一点的企业早就利用这种特性了。比如某个部门拥有自己的部门邮箱,部门内的员工在关联完成后,就可以在自己的邮箱以“代发”的形式,选择部门邮箱把邮件发出去。有些企业甚至会做限制,只允许部门邮箱使用代发功能,不可以直接用部门邮箱本身发邮件。

可以的,我微软账号是 d*@gov.cn 注册的,也能这样。

学到了,我就说某些钓鱼邮件怎么能用匪夷所思的地址发过来

我的域名邮箱当时就被伪造发信勒索我,不过直接进了垃圾箱。前几天黑五刚在 AppSume 上买了 DmarcReport,com 的 Dmarc 服务,这几天还没来得及设置。感觉设置上应该会好很多

说起来电子邮件,前段时间折腾客户端的时候,发现一堆邮件没有设置 Date 字段。我用的 zoho 域名邮箱,网页显示正常,但是客户端拉下来时间就乱了。查了很久最后发现,网页靠的是 Receive 字段的时间排序,这个是接收的时候收信方生成的一定存在;而很多应用( thunderbird 、outlook 等)都是靠的 Date ,没有 Date 拉下来时间就变成了拉去时间。实测的客户端,MS 套件里的 outlook 没弄成; thunderbird 需要手动编辑配置之后可以按照 Receive 展示; spark 默认正常,但是有点贵;苹果自带客户端默认正常;最后还是用的 zoho 官方客户端。

很正常,这封还是当年我用 telnet 发的 XD
各位大学计算机网络学到电子邮件协议时,自己或者身边难道没有伪造 from 发给老师同学的例子吗

只是修改了 FROM 邮件原文还是能看到你的原始发送邮箱吧