From ac008aff8ed808c1d5aab3341bad2f3f5aa96527 Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Mon, 13 Oct 2025 15:21:54 -0500 Subject: [PATCH] SES - Lambda Invokation added --- dovecot/awsdomain.sh | 2 +- dovecot/awsses.sh | 56 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/dovecot/awsdomain.sh b/dovecot/awsdomain.sh index fc93245..1948ff9 100755 --- a/dovecot/awsdomain.sh +++ b/dovecot/awsdomain.sh @@ -1,5 +1,5 @@ #!/bin/bash - +# awsdomain.sh - Konfiguriert Cloudflare mit den Amazon SES Angaben if [ -z "$DOMAIN_NAME" ]; then echo "Fehler: DOMAIN_NAME ist nicht gesetzt." echo "Bitte setzen Sie die Variable mit: export DOMAIN_NAME='IhreDomain.de'" diff --git a/dovecot/awsses.sh b/dovecot/awsses.sh index ed18460..7b9c4a8 100755 --- a/dovecot/awsses.sh +++ b/dovecot/awsses.sh @@ -89,6 +89,62 @@ else echo "Rule Set 'bizmatch-ruleset' ist bereits aktiv." fi +# ------------------------ +# Lambda-Funktion mit SES verknüpfen +# ------------------------ +echo "Verknüpfe Lambda-Funktion 'ses-to-sqs' mit SES..." + +# Lambda ARN ermitteln +LAMBDA_ARN=$(aws lambda get-function \ + --function-name ses-to-sqs \ + --region ${AWS_REGION} \ + --query 'Configuration.FunctionArn' \ + --output text) + +if [ -z "$LAMBDA_ARN" ]; then + echo "FEHLER: Lambda-Funktion 'ses-to-sqs' nicht gefunden!" + echo "Bitte zuerst Lambda-Funktion deployen." + exit 1 +fi + +echo "Lambda ARN: $LAMBDA_ARN" + +# SES Permission für Lambda hinzufügen (falls noch nicht vorhanden) +echo "Füge SES-Berechtigung zur Lambda-Funktion hinzu..." +aws lambda add-permission \ + --function-name ses-to-sqs \ + --statement-id "AllowSESInvoke-${DOMAIN_NAME//./}" \ + --action "lambda:InvokeFunction" \ + --principal ses.amazonaws.com \ + --source-account $(aws sts get-caller-identity --query Account --output text) \ + --region ${AWS_REGION} 2>/dev/null || echo "Permission bereits vorhanden" + +# Receipt Rule UPDATE: Lambda Action hinzufügen +echo "Aktualisiere Receipt Rule mit Lambda Action..." +aws ses update-receipt-rule --rule-set-name "bizmatch-ruleset" --rule '{ + "Name": "'"${RULE_NAME}"'", + "Enabled": true, + "ScanEnabled": true, + "Actions": [ + { + "S3Action": { + "BucketName": "'"${S3_BUCKET_NAME}"'", + "ObjectKeyPrefix": "'"${EMAIL_PREFIX}"'" + } + }, + { + "LambdaAction": { + "FunctionArn": "'"${LAMBDA_ARN}"'", + "InvocationType": "Event" + } + } + ], + "TlsPolicy": "Require", + "Recipients": ["'"${DOMAIN_NAME}"'"] +}' --region ${AWS_REGION} + +echo "✅ Lambda-Funktion erfolgreich mit SES verknüpft!" + echo "SES-Konfiguration für $DOMAIN_NAME abgeschlossen." echo echo "WICHTIG: Überprüfen Sie die Ausgabe oben für DNS-Einträge, die Sie bei Ihrem DNS-Provider setzen müssen:"