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

邮件发送和接收协议的问题

  •  
  •   sunsongxp · 2013-01-18 15:47:07 +08:00 · 4214 次点击
    这是一个创建于 4333 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们知道SMTP协议用来发送邮件,比如[email protected],通过自己的帐户认证就可以从[email protected][email protected];我们还知道POP协议用来检索自己的邮箱信件。

    问题来了

    1、gmail在收到用户通过smtp协议发送的邮件后,肯定转发到domain.com的smtp服务器上,那么domain.com的服务器是不是不需要来自Gmail服务器的认证信息(因为domain.com没法确认来自[email protected]的邮件是不是本人发出),直接明文发送内容为from ... to... Subject... Content这样的邮件。

    2、如果domain.com需要来自gmail邮箱的身份确认,那么确认的机制是什么(SSL只能认证对方的身份,自己主动连接对方服务器的时候出示client的证书)?

    3、如果无法确认,是不是可以这样理解,gmail用户发送到gmail服务器通过的是SMTP协议,并且有身份认证,但是两个电子邮箱服务器之间,虽然也是使用SMTP服务器,但是没有身份认证?

    4、如果3是正确的,那么我是不是可以直接使用SMTP协议,伪造一个 [email protected] ,然后直接发送到 [email protected]
    10 条回复    1970-01-01 08:00:00 +08:00
    sunsongxp
        1
    sunsongxp  
    OP
       2013-01-18 15:48:13 +08:00
    更新下,是smtp.gmail.com不是[email protected]
    cloudcn
        2
    cloudcn  
       2013-01-18 16:01:09 +08:00
    关键是怎么伪造呢?
    就像伪造ip一样,说起来简单。
    BOYPT
        3
    BOYPT  
       2013-01-18 16:16:25 +08:00
    SMTP服务器之间没有严格的身份认证机制,因为协议太古老,必须向下兼容,只有通过一些侧面去猜测是不是,最常见有是:

    1. domian.com发来SMTP的来源IP,和domian.com的域名解释是否相近;
    2. 来源IP是否可以revert-dns查询到记录;
    3. domian.com是否包含SPF记录;
    BOYPT
        4
    BOYPT  
       2013-01-18 16:17:55 +08:00
    这些属于反垃圾邮件规则了,因为最开始的SMTP发信就是随便扔的,垃圾邮件泛滥后才开始有这些规则出现,但是SMTP依然不变。
    sunsongxp
        5
    sunsongxp  
    OP
       2013-01-18 16:25:00 +08:00
    感谢@BOYPT的回复,我刚才找到一篇博客

    http://php.js.cn/blog/smtp-mail/

    上面写明了,原来接受方的mail server会检查发送方mail server的DNS记录中spf记录,比如文中例子:

    “首先需要设置 php.js.cn 域名的 txt 记录为:v=spf1 ip4:173.230.145.228 ~all 。意思是增加一个spf记录,允许173.230.145.228ip发送邮件。邮件服务器收到邮件的时候会检查这个。”

    这样一句话就解释了所有问题
    sNullp
        6
    sNullp  
       2013-01-18 16:31:19 +08:00   ❤️ 1
    但事实上伪造一个没有SFP记录的domain的邮件,比如 [email protected] 发到gmail,是完全可行的。
    jackyz
        7
    jackyz  
       2013-01-18 17:12:18 +08:00
    对,所以防止邮件被放到垃圾里的要点就是做 IP 地址的 DNS 反向解析。否则就会被高度怀疑为垃圾邮件。
    swulling
        8
    swulling  
       2013-01-18 17:20:00 +08:00   ❤️ 1
    @sunsongxp 那是垃圾邮件泛滥后的解决办法,但是不是SMTP标准

    所以依然可以伪造邮件,只不过容易被各大邮件服务提供商标记为垃圾邮件而已
    lqs
        9
    lqs  
       2013-01-18 17:59:51 +08:00
    我们学校以前的邮件系统,写邮件界面的『发件人』一栏是个文本框可以随便填邮箱。
    gamexg
        10
    gamexg  
       2013-01-19 17:42:37 +08:00
    确认机制 DKIM (域密钥识别邮件)技术
    http://www.ifanr.com/180826
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2239 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:51 · PVG 08:51 · LAX 16:51 · JFK 19:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.