diff --git a/ses-lambda-python/lambda_function.py b/ses-lambda-python/lambda_function.py index 77bd50b..c1533f4 100644 --- a/ses-lambda-python/lambda_function.py +++ b/ses-lambda-python/lambda_function.py @@ -98,36 +98,36 @@ def lambda_handler(event, context): print(f"Empfänger nach Domain-Filter ({expected_domain}): {recipients}") if not recipients: - raise Exception("Keine Empfänger gefunden, Abbruch") - - # Gültige Postfächer abrufen und Empfänger filtern - valid_inboxes = get_valid_inboxes() - valid_recipients = [rcpt for rcpt in recipients if rcpt.lower() in valid_inboxes] - print(f"Gültige Empfänger: {valid_recipients}") - - if not valid_recipients: - raise Exception("Keine gültigen Postfächer für die Empfänger gefunden, Abbruch") - - # SMTP-Verbindung und Envelope - start = time.time() - print("=== SMTP: Verbinde zu", MAILCOW_HOST, "Port", MAILCOW_PORT) - with smtplib.SMTP(MAILCOW_HOST, MAILCOW_PORT, timeout=30) as smtp: - smtp.ehlo() - smtp.starttls() - smtp.ehlo() - if SMTP_USER and SMTP_PASS: - smtp.login(SMTP_USER, SMTP_PASS) + print("Keine Empfänger gefunden, setze Metadatum und überspringe SMTP") + else: + # Gültige Postfächer abrufen und Empfänger filtern + valid_inboxes = get_valid_inboxes() + valid_recipients = [rcpt for rcpt in recipients if rcpt.lower() in valid_inboxes] + print(f"Gültige Empfänger: {valid_recipients}") - print("=== SMTP: MAIL FROM", frm_addr) - smtp.mail(frm_addr) - - for rcpt in valid_recipients: - print("=== SMTP: RCPT TO", rcpt) - smtp.rcpt(rcpt) + if valid_recipients: + # SMTP-Verbindung und Envelope + start = time.time() + print("=== SMTP: Verbinde zu", MAILCOW_HOST, "Port", MAILCOW_PORT) + with smtplib.SMTP(MAILCOW_HOST, MAILCOW_PORT, timeout=30) as smtp: + smtp.ehlo() + smtp.starttls() + smtp.ehlo() + if SMTP_USER and SMTP_PASS: + smtp.login(SMTP_USER, SMTP_PASS) + + print("=== SMTP: MAIL FROM", frm_addr) + smtp.mail(frm_addr) + + for rcpt in valid_recipients: + print("=== SMTP: RCPT TO", rcpt) + smtp.rcpt(rcpt) + + smtp.data(raw_bytes) + print(f"SMTP-Transfer in {time.time()-start:.2f}s abgeschlossen ...") + else: + print("Keine gültigen Postfächer für die Empfänger gefunden, setze Metadatum und überspringe SMTP") - smtp.data(raw_bytes) - print(f"SMTP-Transfer in {time.time()-start:.2f}s abgeschlossen ...") - # Metadatum "processed": "true" hinzufügen try: resp = s3.head_object(Bucket=bucket, Key=key) @@ -148,5 +148,5 @@ def lambda_handler(event, context): return { 'statusCode': 200, - 'body': f"E-Mail erfolgreich an {MAILCOW_HOST}:{MAILCOW_PORT} weitergeleitet ..." + 'body': f"E-Mail verarbeitet für {bucket}, SMTP-Weiterleitung: {bool(valid_recipients)}" } \ No newline at end of file