fix: update Message-ID determination logic to prefer IMAP-parsed IDs over raw headers

This commit is contained in:
Abhinav Raut
2025-08-20 04:26:23 +05:30
parent 6bbfbe8cf6
commit 550a3fa801

View File

@@ -276,18 +276,18 @@ func (e *Email) processEnvelope(ctx context.Context, client *imapclient.Client,
} }
var fromAddress = strings.ToLower(env.From[0].Addr()) var fromAddress = strings.ToLower(env.From[0].Addr())
// Determine final Message ID - prefer extracted from raw headers, fallback to IMAP-parsed // Determine final Message ID - prefer IMAP-parsed, fallback to raw header extraction
messageID := extractedMessageID messageID := env.MessageID
if messageID == "" { if messageID == "" {
messageID = env.MessageID messageID = extractedMessageID
if messageID != "" { if messageID != "" {
e.lo.Debug("using IMAP-parsed Message-ID as fallback", "message_id", messageID, "subject", env.Subject, "from", fromAddress) e.lo.Debug("using raw header Message-ID as fallback for malformed ID", "message_id", messageID, "subject", env.Subject, "from", fromAddress)
} }
} }
// Drop message if we still don't have a valid Message ID // Drop message if we still don't have a valid Message ID
if messageID == "" { if messageID == "" {
e.lo.Error("dropping message: no valid Message-ID found in raw headers or IMAP parsing", "subject", env.Subject, "from", fromAddress) e.lo.Error("dropping message: no valid Message-ID found in IMAP parsing or raw headers", "subject", env.Subject, "from", fromAddress)
return nil return nil
} }