new scripts & new mail from

This commit is contained in:
2026-02-09 13:13:30 -06:00
parent 38fcf8c4d8
commit 8c3db9db95
3 changed files with 553 additions and 5 deletions

View File

@@ -1,7 +1,16 @@
#!/bin/bash
# awsses_lambda_global.sh - SES Setup mit S3 + Global Lambda Shim -> SQS
# awsses.sh - SES Setup mit S3 + Global Lambda Shim -> SQS
# Dieses Skript ist idempotent: Es kann sicher mehrfach ausgeführt werden.
# Globale Lambda für alle Domains.
#
# MAIL FROM Subdomain:
# Standard: mail.${DOMAIN_NAME}
# Override: export MAIL_FROM_SUBDOMAIN="mailfrom" (nur der Prefix, ohne Domain)
#
# Beispiel:
# export DOMAIN_NAME="buddelectric.net"
# export MAIL_FROM_SUBDOMAIN="mailfrom" # → mailfrom.buddelectric.net
# ./awsses.sh
set -e
@@ -21,6 +30,10 @@ AWS_REGION=${AWS_REGION:-"us-east-2"}
EMAIL_PREFIX=${EMAIL_PREFIX:-""}
CONFIGURATION_SET_NAME="relay-outbound"
# MAIL FROM Subdomain (konfigurierbar)
MAIL_FROM_SUBDOMAIN=${MAIL_FROM_SUBDOMAIN:-"mail"}
MAIL_FROM_DOMAIN="${MAIL_FROM_SUBDOMAIN}.${DOMAIN_NAME}"
# Bucket Name generieren falls leer
if [ -z "$S3_BUCKET_NAME" ]; then
S3_BUCKET_NAME=$(echo "$DOMAIN_NAME" | tr '.' '-' | awk '{print $0 "-emails"}')
@@ -35,6 +48,7 @@ LAMBDA_ROLE_NAME="SesShimGlobalRole"
echo "=========================================================="
echo " SES Setup (S3 -> Global Lambda Shim -> SQS) für $DOMAIN_NAME"
echo " MAIL FROM: $MAIL_FROM_DOMAIN"
echo "=========================================================="
# ---------------------------------------------------------
@@ -46,9 +60,11 @@ if ! aws sesv2 get-email-identity --email-identity ${DOMAIN_NAME} --region ${AWS
fi
# Update Attributes (Idempotent)
aws sesv2 put-email-identity-dkim-attributes --email-identity ${DOMAIN_NAME} --signing-enabled --region ${AWS_REGION}
aws sesv2 put-email-identity-mail-from-attributes --email-identity ${DOMAIN_NAME} --mail-from-domain "mail.${DOMAIN_NAME}" --behavior-on-mx-failure USE_DEFAULT_VALUE --region ${AWS_REGION}
aws sesv2 put-email-identity-mail-from-attributes --email-identity ${DOMAIN_NAME} --mail-from-domain "${MAIL_FROM_DOMAIN}" --behavior-on-mx-failure USE_DEFAULT_VALUE --region ${AWS_REGION}
aws sesv2 put-email-identity-configuration-set-attributes --email-identity ${DOMAIN_NAME} --configuration-set-name "$CONFIGURATION_SET_NAME" --region ${AWS_REGION}
echo " -> MAIL FROM Domain: ${MAIL_FROM_DOMAIN}"
# ---------------------------------------------------------
# 2. SQS Queue holen (nur zur Validierung, Lambda holt dynamisch)
# ---------------------------------------------------------
@@ -149,7 +165,7 @@ RULE_JSON=$(jq -n \
--arg larn "$LAMBDA_ARN" \
--arg rule "$RULE_NAME" \
--arg domain "$DOMAIN_NAME" \
--arg subdomain "mail.$DOMAIN_NAME" \
--arg subdomain "${MAIL_FROM_DOMAIN}" \
'{
Name: $rule,
Enabled: true,
@@ -181,7 +197,12 @@ else
fi
# Aktivieren
aws ses set-active-receipt-rule-set --rule-set-name "bizmatch-ruleset" --region ${AWS_REGION}
echo "========================================================"
echo "✅ Setup erfolgreich. Globale Lambda ($LAMBDA_NAME) für alle Domains."
echo " S3 -> Lambda -> Domain-spezifische SQS"
echo "✅ Setup erfolgreich."
echo " Domain: $DOMAIN_NAME"
echo " MAIL FROM: $MAIL_FROM_DOMAIN"
echo " S3 Bucket: $S3_BUCKET_NAME"
echo " SQS Queue: $QUEUE_NAME"
echo " Lambda: $LAMBDA_NAME (global)"
echo "========================================================"