V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cnt2ex
V2EX  ›  程序员

outlook 邮箱居然允许伪装成另外一个邮箱

  •  1
     
  •   cnt2ex · 2023-11-30 06:08:56 +08:00 · 5934 次点击
    这是一个创建于 366 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于最近在折腾邮件服务器,正好想测试一下自己以前注册的其他几个邮箱。

    发现 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] ,但是这种随意伪装其他邮件地址的行为真的好吗?

    第 1 条附言  ·  2023-11-30 16:08:02 +08:00
    因为之前都不怎么把不同的邮箱关联在一起,所以最近才发现。

    其实让我最惊讶的一点是,这种行为完全就是邮件伪造的定义,这种做法也被不少邮件服务器的 DMARC 策略禁止/隔离了,而 outlook (以及其他各种大的邮件服务提供商)却依然提供这种特性。outlook 只单方面的验证了 protonmail 的邮箱的确属于用户,而 protonmail 并没有显式认可。

    比如 outlook 这边要接收其他邮箱的邮件时,会通过 POP/IMAP 协议的用户名和密码来从第三方获取邮件,按理说发信时也该利用 SMTP 协议的用户名密码来发信。这里的用户名密码即为某种显式认可。

    类似的,当你把域名的 SPF/DKIM 记录设置为第三方邮件服务提供商时,第三方可以利用你的域名收发邮件,这也是某种显式认可。

    毕竟电子邮件在我的印象中是比较正式的通讯方式,可以理解由于历史原因 SMTP/POP/IMAP 协议存在很多不安全的方面。只是没想到快 2024 了,还存在这么多让人匪夷所思的特性。特别是当你不了解 SMTP 协议时,你不知道怎么区分被分类为 Spam 的邮件到底是伪造的,还是由于误分类导致的。
    40 条回复    2023-12-02 07:37:05 +08:00
    helleon
        1
    helleon  
       2023-11-30 06:11:24 +08:00
    这有啥,早几年 gmail 也可以
    geelaw
        2
    geelaw  
       2023-11-30 06:24:06 +08:00
    自己写个发邮件的程序一样可以,Gmail 现在也是可以的,而且我记得还有一种模式是记住其他账户的密码,从而直接通过正确的服务器发送。这算不上伪装吧,毕竟 Sender 写明了是谁。

    电子邮件头的很多信息和传输来源目的是分开的,比如很多邮件服务器都会在送达 bcc 收件人的时候也删去 bcc 行,另外邮件列表也大量运用 Sender/From 不同、To/Cc/Bcc 都没有实际收到邮件的邮箱地址的情况。
    ZE3kr
        3
    ZE3kr  
       2023-11-30 06:33:22 +08:00   ❤️ 3
    域名所有者可以设置 DMARC 记录,这个记录可以禁止第三方通过自己的域名发邮件。

    _dmarc.gmail.com 的记录是 p=none ,说明 gmail 允许第三方以 @gmail.com 作为发件人发信,且不会进 spam 。

    _dmarc.protonmail.com 是 p=quarantine ,所以被送进了 spam 文件夹。

    如果设置为 p=reject ,这种修改发件人的邮件就发不出去了(例如 _dmarc.cloudflare.com )。所有不设置为 p=reject 的域名都是某种程度上允许“伪装”发件人的,比如常用的邮件转发也是修改了 From 。
    ZE3kr
        4
    ZE3kr  
       2023-11-30 06:36:22 +08:00   ❤️ 2
    https://support.google.com/mail/answer/22370?hl=en Gmail 也有一样的功能。这不算伪装,From 就是可以改的,这是邮件协议的一部分
    weazord
        5
    weazord  
       2023-11-30 06:38:23 +08:00
    protonmail 比较特殊,本身比较强调隐私,API 很多限制(我隐约记得 SMTP 直接给禁用了需要用官方的一个叫 bridge 的东西转发)。 其他很多邮箱服务比如 gmail 都是可以授权给第三方发邮件的,根本谈不上伪装吧,相当于 outlook 既是电子邮箱服务同时也是第三方邮箱的客户端
    dangyuluo
        6
    dangyuluo  
       2023-11-30 07:06:04 +08:00
    研究一下电子邮件的原理,你甚至可以在你自己的电脑上通过你的家庭 IP ,冒充任何一个邮箱地址向任何一个电子邮件地址发邮件,不过有极大概率(如果不是肯定的话)会进垃圾箱并被标注为危险邮件。
    ladypxy
        7
    ladypxy  
       2023-11-30 07:13:32 +08:00
    电子邮件的原理就是这样的,你可以随意伪造任何地址,甚至连 smtp 服务器都不用
    所以说反垃圾邮件是一个大问题
    Perry
        8
    Perry  
       2023-11-30 07:57:53 +08:00 via iPhone
    这个伪装不好的点在哪?不都是你自己拥有的邮箱吗?
    S179276SP
        9
    S179276SP  
       2023-11-30 07:59:43 +08:00
    Gmail 都不像 outlook 一样允许拥有自己的别名, outlook 甚至都可以换, 这点不好
    xctcc
        10
    xctcc  
       2023-11-30 08:11:28 +08:00
    qq 邮箱也有
    glouhao
        11
    glouhao  
       2023-11-30 08:48:56 +08:00
    @dangyuluo 我的 pve 自动发送的邮件没被标注危险,估计是因为那个域名是我解析到家里的。
    Tink
        12
    Tink  
       2023-11-30 09:04:29 +08:00 via iPhone
    不稀奇啊
    ruzztok
        13
    ruzztok  
       2023-11-30 09:08:56 +08:00
    gmail 也可以,163 也可以
    bianhui
        14
    bianhui  
       2023-11-30 09:15:16 +08:00
    什么,大清亡了?
    huyanprc
        15
    huyanprc  
       2023-11-30 09:16:19 +08:00
    不用大惊小怪,这是 Email 的标准行为,SMTP 协议所允许的,早年所有邮箱服务商、邮箱客户端几乎都允许这么干。只是后来一些服务商出于反垃圾需要,人为加上了不允许伪装的限制。Outlook 在某些情况下开了个口子而已。
    gdlv
        16
    gdlv  
       2023-11-30 09:18:57 +08:00
    我前些年还弄到过 @microsoft.com 的账号,只能显示在发信里,不能收信。
    那会儿好像有 bug ,微软的域名随便整。
    hervey0424
        17
    hervey0424  
       2023-11-30 09:39:58 +08:00
    啊? QQ 邮箱这不是很多年前就有了
    txydhr
        18
    txydhr  
       2023-11-30 09:54:50 +08:00 via iPhone
    邮箱的发件人类似于英文信 title 上的地址,不是真正的寄出地址,真正的发送方得点开详细信息才能看到。
    yy77
        19
    yy77  
       2023-11-30 10:08:18 +08:00
    smtp 协议允许,并不需要跨域检测。
    killva4624
        20
    killva4624  
       2023-11-30 10:10:30 +08:00
    恭喜你,发现了钓鱼邮件的一个来源;其实你甚至不需要一个邮箱系统,就能通过 SMTP 协议发送一封任意源邮件地址的邮件,只是区别于收件服务器信不信任而已。
    目前可以通过 SPF 、DKIM 、DMARC 来限制伪造邮件。
    Masoud2023
        21
    Masoud2023  
       2023-11-30 10:22:26 +08:00
    这个 feature 好像马上要没了,明年之前就要取消了,不允许再继续添加。

    前几天 v2 有人把这个当域名邮箱,但是这个肯定会进垃圾箱。
    kenvix
        22
    kenvix  
       2023-11-30 10:26:29 +08:00
    这就是电子邮件的 feature 啊,如果域名所有者想要禁用这个 feature ,那就应该设置 DMARC
    cccer
        23
    cccer  
       2023-11-30 10:36:54 +08:00
    这种代发邮件,收信方一般会明确提醒“由 xxx 代发”,github 通知邮件就是这样的。
    Daming
        24
    Daming  
       2023-11-30 10:40:40 +08:00
    好多年前,申请到了 AOL 的 @love.com 的邮箱,一直用 gmail 代收代发。
    后来 AOL 不让这样干了,我的密码也忘记了……
    woooooOOOO
        25
    woooooOOOO  
       2023-11-30 10:44:04 +08:00
    还可以设置 rdns ,通过 ip 可以查到域名,如果邮件发送地址不是你的 ip ,也不会被接收。
    est
        26
    est  
       2023-11-30 11:03:35 +08:00
    你这不算啥。我 outlook 绑定了别人的邮箱。能收到别人的邮件。。。

    我也不知道怎么搞的。。。
    lyhhh
        27
    lyhhh  
       2023-11-30 11:17:00 +08:00
    QQ 邮箱也可以
    ak47iej
        28
    ak47iej  
       2023-11-30 11:25:44 +08:00
    一直都可以....这样发出去的电邮都会挂着 on behalf of/由某人代发
    cnbatch
        29
    cnbatch  
       2023-11-30 11:39:48 +08:00
    大惊小怪,不但 Gmail 、QQ 邮箱能这样做,规模稍微大一点的企业早就利用这种特性了。

    比如某个部门拥有自己的部门邮箱,部门内的员工在关联完成后,就可以在自己的邮箱以“代发”的形式,选择部门邮箱把邮件发出去。有些企业甚至会做限制,只允许部门邮箱使用代发功能,不可以直接用部门邮箱本身发邮件。
    dianso
        30
    dianso  
       2023-11-30 11:40:57 +08:00
    可以的,我微软账号是 d***@gov.cn 注册的,也能这样。
    DIO
        31
    DIO  
       2023-11-30 14:45:15 +08:00
    学到了,我就说某些钓鱼邮件怎么能用匪夷所思的地址发过来
    davit
        32
    davit  
       2023-12-01 00:19:36 +08:00
    我的域名邮箱当时就被伪造发信勒索我,不过直接进了垃圾箱。前几天黑五刚在 AppSume 上买了 DmarcReport,com 的 Dmarc 服务,这几天还没来得及设置。感觉设置上应该会好很多
    zsh2517
        33
    zsh2517  
       2023-12-01 01:35:37 +08:00
    说起来电子邮件,前段时间折腾客户端的时候,发现一堆邮件没有设置 Date 字段。我用的 zoho 域名邮箱,网页显示正常,但是客户端拉下来时间就乱了。
    查了很久最后发现,网页靠的是 Receive 字段的时间排序,这个是接收的时候收信方生成的一定存在;而很多应用( thunderbird 、outlook 等)都是靠的 Date ,没有 Date 拉下来时间就变成了拉去时间。

    实测的客户端,MS 套件里的 outlook 没弄成; thunderbird 需要手动编辑配置之后可以按照 Receive 展示; spark 默认正常,但是有点贵;苹果自带客户端默认正常;最后还是用的 zoho 官方客户端。
    Saniter
        34
    Saniter  
       2023-12-01 11:07:58 +08:00
    很正常,这封还是当年我用 telnet 发的 XD
    Zepp
        35
    Zepp  
       2023-12-01 12:58:33 +08:00
    各位大学计算机网络学到电子邮件协议时,自己或者身边难道没有伪造 from 发给老师同学的例子吗
    liuhai233
        36
    liuhai233  
       2023-12-01 14:10:20 +08:00
    只是修改了 FROM 邮件原文还是能看到你的原始发送邮箱吧
    CivAx
        37
    CivAx  
       2023-12-01 16:04:52 +08:00
    正因为这个特性,所以可以配合 Mailgun 做无限量的、免费的收发双向正常的域名邮箱服务
    cnt2ex
        38
    cnt2ex  
    OP
       2023-12-01 18:03:07 +08:00
    @CivAx 这个特性和 mailgun 、amazonses 之类的邮件服务是两码事吧。

    mailgun 之类的服务,通常是通过域名所有者设置对应的 SPF/DKIM/DMARC 记录来完成,并且收发邮件时接收方也可以验证。

    比如接入 mailgun 这类服务提供商,通常是把子域名解析到第三方的 SPF/DKIM ,并且把 DMARC 记录里 aspf 和 adkim 设置为 relaxed ,从而允许子域名可以作为根域名通过检查。这样 mailgun 则可以通过子域名代发邮件,收件人也可以通过验证子域名的 SPF 和 DKIM 签名来验证。

    类似的,包括前面有人提到的同个部门之间可以相互代发,如果子域名和根域名本身就属于同个实体控制下的,所以允许他们相互代发很正常。

    但是 outlook 这种是直接修改 From 成另外一个域名,这完全是任何一个邮件伪造者的做法。
    CivAx
        39
    CivAx  
       2023-12-01 18:13:58 +08:00
    @cnt2ex 我这里讲的不是 Mailgun 作为 sender 的逻辑,而是 Mailgun 收 -> route 到 Outlook ,在 Outlook 绑定 Alias 并验证后从 Outlook 用 Alias 发出这一个逻辑,这样可以实现收件发件都是同一个邮箱名,而且收件发件都在 Outlook 上处理,Mailgun 只负责 route 收件到 Outlook 。
    cnt2ex
        40
    cnt2ex  
    OP
       364 天前
    @CivAx 你说的收邮件那更是另外一回事了。也是需要域名所有者设置 mx 记录到 mailgun 的邮件服务器,从而 mailgun 能接收邮件,再给你 route 到 outlook 。

    如果你要收第三方邮箱的信件,要么通过 IMAP/POP 用户名密码读取对应的邮箱,要么设置 mx 记录从而域名下所有邮件都发到你这里。这都是需要第三方参于的。
    而发邮件的逻辑却是直接采用了伪造发信者的方法。正是从收发邮件的逻辑来比较,我认为发邮件允许用户随意伪装所存在的不合理的地方。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1015 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:37 · PVG 03:37 · LAX 11:37 · JFK 14:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.