From 56c7b51e3551830acae693cb5e3a20ba40fbd8ff Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Sat, 7 Mar 2026 15:01:56 -0600 Subject: [PATCH] changed blocked sender list --- email-worker-nodejs/src/email/blocklist.ts | 34 +++++++++---------- .../src/worker/message-processor.ts | 10 +++++- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/email-worker-nodejs/src/email/blocklist.ts b/email-worker-nodejs/src/email/blocklist.ts index 28f1f0a..6fdcdc1 100644 --- a/email-worker-nodejs/src/email/blocklist.ts +++ b/email-worker-nodejs/src/email/blocklist.ts @@ -26,15 +26,15 @@ export class BlocklistChecker { * Batch-check whether a sender is blocked for each recipient. * Uses a single batch DynamoDB call for efficiency. */ - async batchCheckBlockedSenders( +async batchCheckBlockedSenders( recipients: string[], - sender: string, + senders: string[], // <-- Geändert zu Array workerName: string, ): Promise> { - const patternsByRecipient = - await this.dynamodb.batchGetBlockedPatterns(recipients); - - const senderClean = extractAddress(sender); + const patternsByRecipient = await this.dynamodb.batchGetBlockedPatterns(recipients); + + // Alle übergebenen Adressen bereinigen + const sendersClean = senders.map(s => extractAddress(s)).filter(Boolean); const result: Record = {}; for (const recipient of recipients) { @@ -42,21 +42,21 @@ export class BlocklistChecker { let isBlocked = false; for (const pattern of patterns) { - if (picomatch.isMatch(senderClean, pattern.toLowerCase())) { - log( - `⛔ BLOCKED: Sender ${senderClean} matches pattern '${pattern}' ` + - `for inbox ${recipient}`, - 'WARNING', - workerName, - ); - isBlocked = true; - break; + for (const senderClean of sendersClean) { + if (picomatch.isMatch(senderClean, pattern.toLowerCase())) { + log( + `⛔ BLOCKED: Sender ${senderClean} matches pattern '${pattern}' for inbox ${recipient}`, + 'WARNING', + workerName, + ); + isBlocked = true; + break; + } } + if (isBlocked) break; } - result[recipient] = isBlocked; } - return result; } } diff --git a/email-worker-nodejs/src/worker/message-processor.ts b/email-worker-nodejs/src/worker/message-processor.ts index 4114c00..cdec270 100644 --- a/email-worker-nodejs/src/worker/message-processor.ts +++ b/email-worker-nodejs/src/worker/message-processor.ts @@ -179,9 +179,17 @@ export class MessageProcessor { } // 6. BLOCKLIST CHECK + const sendersToCheck: string[] = []; + if (fromAddrFinal) sendersToCheck.push(fromAddrFinal); + + const headerFrom = parsedFinal?.from?.text; + if (headerFrom && !sendersToCheck.includes(headerFrom)) { + sendersToCheck.push(headerFrom); + } + const blockedByRecipient = await this.blocklist.batchCheckBlockedSenders( recipients, - fromAddrFinal, + sendersToCheck, // <-- Array übergeben workerName, );