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

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

  •  1
     
  •   cnt2ex · 362 天前 · 5927 次点击
    这是一个创建于 362 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    发现 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 条附言  ·  362 天前
    因为之前都不怎么把不同的邮箱关联在一起,所以最近才发现。

    其实让我最惊讶的一点是,这种行为完全就是邮件伪造的定义,这种做法也被不少邮件服务器的 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  
       362 天前
    这有啥,早几年 gmail 也可以
    geelaw
        2
    geelaw  
       362 天前
    自己写个发邮件的程序一样可以,Gmail 现在也是可以的,而且我记得还有一种模式是记住其他账户的密码,从而直接通过正确的服务器发送。这算不上伪装吧,毕竟 Sender 写明了是谁。

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

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

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

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

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

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

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

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

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

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