V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
onice
V2EX  ›  Java

伪造邮件发件人的原理是什么? JavaMail 怎么实现?

  •  
  •   onice · Jul 28, 2016 · 15056 views
    This topic created in 3567 days ago, the information mentioned may be changed or developed.

    有时候收到垃圾邮件,发现发件人地址居然是自己。

    想问问这个的原理是什么,可以用一些 Mail 库去实现吗?例如 JavaMail 。

    主要是原理。。掌握了原理就知道该如何做了。谢谢大家。

    Supplement 1  ·  Jul 31, 2016
    感谢大家解答,结贴。
    18 replies    2016-07-29 18:40:06 +08:00
    frienmo
        1
    frienmo  
       Jul 28, 2016
    setFrom()
    owt5008137
        2
    owt5008137  
       Jul 28, 2016 via Android
    伪造发件人很容易被扔进垃圾邮件的
    qecxp
        3
    qecxp  
       Jul 28, 2016
    原理就是电子邮件 SMTP 协议本来就允许你以任何地址发送邮件。
    SkyRaker
        4
    SkyRaker  
       Jul 28, 2016
    自行构建邮件,然后通过 SMTP 服务器发送匿名邮件出去。基本各种语言都可以....你可以尝试 telnet 到邮件服务器(如 exchange ),自行构建 SMTP 包
    shiji
        5
    shiji  
       Jul 28, 2016 via Android
    就像 HTTP 客户端发送的 header 一样,你想写啥就能写啥。所以后来有了 SPF 记录限制发信 IP 。还有 DKIM, DMARC 之类的高级技术,从数字签名角度验证发信者。这两个我只知其名,具体的没有深入了解过
    kamen
        6
    kamen  
       Jul 28, 2016 via Android
    这种连垃圾箱都不会进,直接就没了
    msg7086
        7
    msg7086  
       Jul 29, 2016
    你寄信的时候不也可以随便写发信人的部分吗?
    SoloCompany
        8
    SoloCompany  
       Jul 29, 2016   ❤️ 1
    SPF - 一个 DNS 记录( TXT 类型),基于 IP 校验的描述,用来说明这个域名所有者通过什么 IP 可以发信出去
    DKIM 也依赖 DNS ,但记录的是数字签名公钥
    如果只是仅仅解决传输过程的伪造的话, StartTLS 加互换证书理论就能实现,但 DKIM 签名因为是存在于信头里面,那么即使通过 relay ,也可以对源发送方进行校验
    franklinyu
        9
    franklinyu  
       Jul 29, 2016
    @msg7086 讚,下一代是不是都不會寫信了…… 小學的時候還學寫信封來著
    luban
        10
    luban  
       Jul 29, 2016 via iPhone
    有邮件服务器就很好弄,但是目前主流邮箱会验证域名和邮箱是不是一致,不一致都会给出警告
    unifier
        11
    unifier  
       Jul 29, 2016
    @kamen 亲测国内各大邮箱都可以伪造……并且能正确接收到
    unifier
        12
    unifier  
       Jul 29, 2016   ❤️ 2
    @luban 其实并没有吧…… http://zacharyjia.me/2016/01/09/mail-sender-security/ 今年 1 月份的测试结果……
    zhxhwyzh14
        13
    zhxhwyzh14  
       Jul 29, 2016
    应该会显示代发那种吧?
    jasontse
        14
    jasontse  
       Jul 29, 2016 via iPad
    伪造就是乱写,没有什么原理
    mengzhuo
        15
    mengzhuo  
       Jul 29, 2016 via iPhone
    好好看书哈
    而且国内没有对 SPF 校验的邮箱,所以随便对方改咯
    wmhx
        16
    wmhx  
       Jul 29, 2016
    /bin/mail -r "[email protected]" -s "$title" "$m" < $content 真是很随便的 .
    yangxin0
        17
    yangxin0  
       Jul 29, 2016 via iPhone
    阅读 smtp 协议
    ysc3839
        18
    ysc3839  
       Jul 29, 2016 via Android
    SMTP 协议是可以随意设置发件人的……所以……伪造起来也就是发送的时候写你想要的发件人……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2494 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 01:08 · PVG 09:08 · LAX 18:08 · JFK 21:08
    ♥ Do have faith in what you're doing.