changed blocked sender list

This commit is contained in:
Andreas Knuth 2026-03-07 15:01:56 -06:00
parent c826d4c299
commit 56c7b51e35
2 changed files with 26 additions and 18 deletions

View File

@ -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<Record<string, boolean>> {
const patternsByRecipient =
await this.dynamodb.batchGetBlockedPatterns(recipients);
const patternsByRecipient = await this.dynamodb.batchGetBlockedPatterns(recipients);
const senderClean = extractAddress(sender);
// Alle übergebenen Adressen bereinigen
const sendersClean = senders.map(s => extractAddress(s)).filter(Boolean);
const result: Record<string, boolean> = {};
for (const recipient of recipients) {
@ -42,10 +42,10 @@ export class BlocklistChecker {
let isBlocked = false;
for (const pattern of patterns) {
for (const senderClean of sendersClean) {
if (picomatch.isMatch(senderClean, pattern.toLowerCase())) {
log(
`⛔ BLOCKED: Sender ${senderClean} matches pattern '${pattern}' ` +
`for inbox ${recipient}`,
`⛔ BLOCKED: Sender ${senderClean} matches pattern '${pattern}' for inbox ${recipient}`,
'WARNING',
workerName,
);
@ -53,10 +53,10 @@ export class BlocklistChecker {
break;
}
}
if (isBlocked) break;
}
result[recipient] = isBlocked;
}
return result;
}
}

View File

@ -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,
);