尽管有reject_authenticated_sender_login_mismatch,但仍伪造FROM:标头

尽管有reject_authenticated_sender_login_mismatch,但仍伪造FROM:标头

结构描述

  • 服务器 A 运行 postfix 并充当服务器 B(也运行 postfix)的智能主机,reject_authenticated_sender_login_mismatch 已设置并(几乎)按预期工作,见下文
  • 客户端 C 的 MUA 通过服务器 A 发送邮件
  • B 和 C 都通过提交端口连接并使用 STARTTLS 进行身份验证

尝试伪造发件人时会发生什么

  • 通过更改 thunderbird 中的发件人地址或在 roundcube 中添加新身份来设置任意 FROM:标头会导致预期结果:邮件被拒绝
  • 在服务器 B 上使用 A 作为智能主机执行相同操作可成功发送邮件mail -s "This is a Subject" -a "From: [email protected]"

观察到的差异

通过增加 postfix' smtpd 的详细程度,观察到以下情况

  • thunderbird 和 roundcube 登录然后直接设置FROM:为可接受的值
  • 服务器 B 以同样的方式启动,但不知何故FROM:后来设法更改了标头。这在 postfix smtpd 日志文件中看不到,但在最终发送的邮件中可以看到:

    Return-Path: <[email protected]>
    Delivered-To: [email protected]
    Received: from mail.example.com 
    by mail.example.com (Dovecot) with LMTP id UuV2IVaP3lvdKAAAEby5rg
    for <[email protected]>; Sun, 04 Nov 2018 07:19:02 +0100
    To: [email protected]
    Subject: This is a Subject
    From: [email protected]
    MIME-Version: 1.0
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: 8bit
    Message-Id: <[email protected]>
    Date: Sun,  4 Nov 2018 07:19:02 +0100 (CET)
    Authentication-Results: ORIGINATING;
        auth=pass [email protected] 
    [email protected]
    
    
    body of your email
    
    • 至少它不是(与有效邮件相反)DKIM 签名的
    • 这不是垃圾邮件,我只是不希望“每个人”都能伪造发件人地址

问题

  • 为什么会发生这种情况?
  • 更重要的是:我能做些什么来防止这种情况发生?

答案1

这是预期的行为,因为 SMTP信封发件人From:header 是分开的。reject_sender_login_mismatch(仅限经过身份验证的用户使用的版本)阻止在 SMTPMAIL FROM命令中使用地址,除非它与经过 SASL 身份验证的所有者匹配。它不关心邮件内容 - 包括其标题。这就是电子邮件的设计方式,而且还有许多其他这种不匹配的正当理由

使用时,mail -a您单独修改标头。正如您所建议的那样,它之后不会更改。您无法使用 Thunderbird 执行此操作的唯一原因是它在信封和标头中使用相同的地址。它不受您的服务器限制。

相关内容