From d388ef37a18982591b282fe79f5265b18575c4e7 Mon Sep 17 00:00:00 2001 From: RvdH Date: Sun, 25 Apr 2021 00:19:20 +0200 Subject: [PATCH] SpamAssassin Envelope-Sender Use Envelope-Sender header in favour of first adding and later removing the Return-Path Header This basically undo's this pull https://github.com/hmailserver/hmailserver/issues/116 --- .../Common/AntiSpam/SpamTestSpamAssassin.cpp | 21 +++++-------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/hmailserver/source/Server/Common/AntiSpam/SpamTestSpamAssassin.cpp b/hmailserver/source/Server/Common/AntiSpam/SpamTestSpamAssassin.cpp index 5a163061b..790124895 100644 --- a/hmailserver/source/Server/Common/AntiSpam/SpamTestSpamAssassin.cpp +++ b/hmailserver/source/Server/Common/AntiSpam/SpamTestSpamAssassin.cpp @@ -57,18 +57,12 @@ namespace HM std::shared_ptr pMessage = pTestData->GetMessageData()->GetMessage(); const String sFilename = PersistentMessage::GetFileName(pMessage); - // Add Return-Path header if none exist (ExternalAccount download?) - if (pTestData->GetMessageData()->GetReturnPath().IsEmpty()) - { - String sEnvelopeFrom = pTestData->GetEnvelopeFrom(); + // Add envelope-from header "Envelope-Sender" + std::vector > fieldsToWrite; + fieldsToWrite.push_back(std::make_pair("Envelope-Sender", pTestData->GetEnvelopeFrom())); + TraceHeaderWriter writer; + writer.Write(sFilename, pMessage, fieldsToWrite); - std::vector> fieldsToWrite; - fieldsToWrite.push_back(std::make_pair("Return-Path", sEnvelopeFrom)); - - TraceHeaderWriter writer; - writer.Write(sFilename, pMessage, fieldsToWrite); - } - std::shared_ptr pIOService = Application::Instance()->GetIOService(); bool testCompleted; @@ -117,12 +111,7 @@ namespace HM // Check if the message is tagged as spam. std::shared_ptr pMessageData = pTestData->GetMessageData(); - pMessageData->RefreshFromMessage(); - // The Return-Path header was added above to help SpamAssassin with its SPF checks. - // We should remove it again to restore the headers to original state (except for any added by SA). - pMessageData->DeleteField("Return-Path"); - pMessageData->Write(sFilename); bool bIsSpam = false; AnsiString sSpamStatus = pMessageData->GetFieldValue("X-Spam-Status");