check for valid Domain

This commit is contained in:
Andreas Knuth 2025-07-21 11:51:01 -05:00
parent 5fadef1aac
commit 675c00209c
1 changed files with 9 additions and 2 deletions

View File

@ -18,6 +18,9 @@ MAILCOW_API_KEY = os.environ.get('MAILCOW_API_KEY')
def domain_to_bucket(domain): def domain_to_bucket(domain):
return domain.replace('.', '-') + '-emails' return domain.replace('.', '-') + '-emails'
def bucket_to_domain(bucket):
return bucket.replace('-emails', '').replace('-', '.')
def get_valid_inboxes(): def get_valid_inboxes():
url = 'https://mail.email-srvr.com/api/v1/get/mailbox/all' url = 'https://mail.email-srvr.com/api/v1/get/mailbox/all'
headers = {'X-API-Key': MAILCOW_API_KEY} headers = {'X-API-Key': MAILCOW_API_KEY}
@ -69,7 +72,6 @@ def lambda_handler(event, context):
} }
except Exception as e: except Exception as e:
print(f"Fehler beim Prüfen der Metadaten: {e}") print(f"Fehler beim Prüfen der Metadaten: {e}")
# Fortfahren, falls Metadaten nicht lesbar sind
# Raw-Mail aus S3 holen # Raw-Mail aus S3 holen
resp = s3.get_object(Bucket=bucket, Key=key) resp = s3.get_object(Bucket=bucket, Key=key)
@ -90,6 +92,11 @@ def lambda_handler(event, context):
recipients = to_addrs + cc_addrs + bcc_addrs recipients = to_addrs + cc_addrs + bcc_addrs
print("Empfänger aus Headern:", recipients) print("Empfänger aus Headern:", recipients)
# Im S3-Flow nur Empfänger mit passender Domain behalten
expected_domain = bucket_to_domain(bucket)
recipients = [rcpt for rcpt in recipients if rcpt.lower().split('@')[1] == expected_domain]
print(f"Empfänger nach Domain-Filter ({expected_domain}): {recipients}")
if not recipients: if not recipients:
raise Exception("Keine Empfänger gefunden, Abbruch") raise Exception("Keine Empfänger gefunden, Abbruch")
@ -137,7 +144,7 @@ def lambda_handler(event, context):
print("Metadatum 'processed:true' hinzugefügt.") print("Metadatum 'processed:true' hinzugefügt.")
except Exception as e: except Exception as e:
print(f"Fehler beim Schreiben des Metadatums: {e}") print(f"Fehler beim Schreiben des Metadatums: {e}")
raise # Fehler weiterleiten, um in CloudWatch sichtbar zu bleiben raise
return { return {
'statusCode': 200, 'statusCode': 200,