Postfix

Forged FROM: header 儘管reject_authenticated_sender_login_mismatch

  • November 4, 2018

結構描述

  • 伺服器 A 執行 postfix 並充當伺服器 B 的智能主機(也執行 postfix),reject_authenticated_sender_login_mismatch 已設置並(幾乎)按預期工作,見下文
  • 客戶端 C 的 MUA 通過伺服器 A 發送郵件
  • B 和 C 都通過送出埠連接並使用 STARTTLS 進行身份驗證

嘗試偽造發件人時會發生什麼

  • 通過更改 Thunderbird 中的發件人地址或在 Roundcube 中添加新身份來設置任意 FROM: 標頭會導致預期結果:郵件被拒絕
  • 在伺服器 B 上使用 A 作為 Smarthost執行相同操作mail -s "This is a Subject" -a "From: forged_address@example.net"會導致成功發送郵件

觀察到的差異

通過增加 postfix’ smtpd 的詳細程度觀察到以下情況

  • 雷鳥和圓形立方體登錄,然後直接將其設置FROM:為可接受的值
  • 伺服器 B 以相同的方式啟動,但後來設法更改了FROM:標頭。這在 postfix smtpd 日誌文件中看不到,但在最終發送的郵件中看不到:
Return-Path: <valid_address@example.com>
Delivered-To: herrhannes@example.com
Received: from mail.example.com 
by mail.example.com (Dovecot) with LMTP id UuV2IVaP3lvdKAAAEby5rg
for <herrhannes@example.com>; Sun, 04 Nov 2018 07:19:02 +0100
To: herrhannes@example.com
Subject: This is a Subject
From: forged_address@example.com
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Message-Id: <20181104061902.15A9F4A9@debian.example.com>
Date: Sun,  4 Nov 2018 07:19:02 +0100 (CET)
Authentication-Results: ORIGINATING;
   auth=pass smtp.auth=valid_address@example.com 
smtp.mailfrom=valid_address@example.com


body of your email
  • 至少它不是(與有效郵件相反)DKIM 簽名的
  • 這不是垃圾郵件,我只是不希望“每個人”都能偽造發件人地址

問題

  • 為什麼會這樣?
  • 更重要的是:我能做些什麼來防止它發生?

這是預期的行為,因為 SMTP信封發件人From:標頭是不同的東西。(reject_sender_login_mismatch以及僅限於經過身份驗證的使用者的版本)阻止在 SMTPMAIL FROM命令中使用地址,除非它與經過 SASL 身份驗證的所有者匹配。它不關心消息中的內容——包括它的標題。這就是電子郵件的設計方式,而且這種不匹配也有許多合理的原因

使用時mail -a,您單獨修改標題。正如你所建議的那樣,它之後沒有改變。您不能使用 Thunderbird 執行此操作的唯一原因是它在信封和標題中使用相同的地址。它不受您的伺服器的限制。

引用自:https://serverfault.com/questions/938548