From 68f5f0c3f45bec781462546c4dffdc6214306ea3 Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Mon, 16 Jun 2025 19:53:50 -0500 Subject: [PATCH] check inboxes & domains --- email_api/email_api/app.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/email_api/email_api/app.py b/email_api/email_api/app.py index fbc0aee..1839088 100644 --- a/email_api/email_api/app.py +++ b/email_api/email_api/app.py @@ -43,26 +43,33 @@ API_KEY = os.environ['MAILCOW_API_KEY'] MAILCOW_API = os.environ['MAILCOW_API'] s3_client = boto3.client('s3', region_name=AWS_REGION) - def domain_exists(domain): + """ + Prüft per /get/domain/all, ob `domain` im System ist. + """ url = f"{MAILCOW_API}/get/domain/all" headers = {'X-API-Key': API_KEY} resp = requests.get(url, headers=headers, timeout=5) resp.raise_for_status() domains = resp.json() - # domains ist eine Liste von Objekten mit key 'domain_name' - return any(d.get('domain_name') == domain for d in domains) + return any(d.get('domain_name', '').lower() == domain.lower() for d in domains) def inbox_exists(domain, local_part): """ - Prüft, ob für `local_part@domain` ein Postfach angelegt ist. + Liefert True, wenn domain im System ist UND local_part@domain ein Postfach hat. """ + # 1) Domain-Check + if not domain_exists(domain): + logger.info(f"Domain '{domain}' unknown – skip mailbox lookup") + return False + + # 2) Nur dann Mailbox-Listing holen url = f"{MAILCOW_API}/get/mailbox/all/{domain}" headers = {'X-API-Key': API_KEY} resp = requests.get(url, headers=headers, timeout=5) resp.raise_for_status() mailboxes = resp.json() - return any(m.get('local_part') == local_part for m in mailboxes) + return any(m.get('local_part', '').lower() == local_part.lower() for m in mailboxes) def mark_email_as_processed(bucket, key, status, processor='rest-api'): """Setzt processed-Metadaten auf einen beliebigen Status."""