From bd43d8bd72c533d59c39dfd70826f995a539b661 Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Tue, 14 Oct 2025 22:10:46 -0500 Subject: [PATCH] requeue --- requeue-email.sh | 114 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 requeue-email.sh diff --git a/requeue-email.sh b/requeue-email.sh new file mode 100644 index 0000000..1e319bb --- /dev/null +++ b/requeue-email.sh @@ -0,0 +1,114 @@ +#!/bin/bash +# requeue-email.sh - Sendet eine E-Mail aus S3 manuell in die SQS Queue + +set -e + +# Parameter prüfen +if [ $# -lt 3 ]; then + echo "Usage: $0 " + echo "" + echo "Example:" + echo " $0 rgskc3d59dqdm6lq1scenpuvdq7ikhi3cqk382g1 sender@example.com user@bayarea-cc.com" + echo "" + exit 1 +fi + +S3_KEY=$1 +FROM=$2 +RECIPIENT=$3 + +# Konfiguration +AWS_REGION="us-east-2" + +# Domain aus Recipient extrahieren +DOMAIN=$(echo "$RECIPIENT" | cut -d'@' -f2) + +# Bucket-Name aus Domain ableiten +BUCKET="${DOMAIN//./-}-emails" + +# Queue-Name aus Domain ableiten +QUEUE_NAME="${DOMAIN//./-}-queue" + +echo "===================================" +echo "Requeue E-Mail zu SQS Queue" +echo "===================================" +echo "S3 Key: $S3_KEY" +echo "From: $FROM" +echo "Recipient: $RECIPIENT" +echo "Domain: $DOMAIN" +echo "Bucket: $BUCKET" +echo "Queue: $QUEUE_NAME" +echo "" + +# Prüfen ob S3 Object existiert +echo "Prüfe S3 Object..." +if ! aws s3api head-object \ + --bucket "$BUCKET" \ + --key "$S3_KEY" \ + --region "$AWS_REGION" &>/dev/null; then + echo "ERROR: S3 Object nicht gefunden: s3://$BUCKET/$S3_KEY" + exit 1 +fi + +echo "✓ S3 Object existiert" + +# Queue URL ermitteln +echo "Ermittle Queue URL..." +QUEUE_URL=$(aws sqs get-queue-url \ + --queue-name "$QUEUE_NAME" \ + --region "$AWS_REGION" \ + --query 'QueueUrl' \ + --output text 2>/dev/null) + +if [ -z "$QUEUE_URL" ]; then + echo "ERROR: Queue nicht gefunden: $QUEUE_NAME" + exit 1 +fi + +echo "✓ Queue URL: $QUEUE_URL" + +# Optional: Subject aus E-Mail extrahieren +echo "Versuche Subject zu extrahieren..." +TEMP_FILE="/tmp/email-${S3_KEY}.eml" +aws s3 cp "s3://$BUCKET/$S3_KEY" "$TEMP_FILE" --region "$AWS_REGION" --quiet + +SUBJECT=$(grep -m1 "^Subject:" "$TEMP_FILE" | sed 's/Subject: //' | head -c 200 || echo "(no subject)") +rm -f "$TEMP_FILE" + +echo "Subject: $SUBJECT" +echo "" + +# Message in Queue senden +echo "Sende Message in Queue..." +TIMESTAMP=$(date +%s) + +RESPONSE=$(aws sqs send-message \ + --queue-url "$QUEUE_URL" \ + --region "$AWS_REGION" \ + --message-body "{ + \"bucket\": \"$BUCKET\", + \"key\": \"$S3_KEY\", + \"from\": \"$FROM\", + \"recipient\": \"$RECIPIENT\", + \"domain\": \"$DOMAIN\", + \"subject\": \"$SUBJECT\", + \"message_id\": \"$S3_KEY\", + \"timestamp\": $TIMESTAMP + }" \ + --message-attributes "{ + \"domain\": {\"StringValue\": \"$DOMAIN\", \"DataType\": \"String\"}, + \"bucket\": {\"StringValue\": \"$BUCKET\", \"DataType\": \"String\"}, + \"recipient\": {\"StringValue\": \"$RECIPIENT\", \"DataType\": \"String\"}, + \"message_id\": {\"StringValue\": \"$S3_KEY\", \"DataType\": \"String\"} + }") + +MESSAGE_ID=$(echo "$RESPONSE" | jq -r '.MessageId') + +echo "" +echo "===================================" +echo "✅ E-Mail erfolgreich in Queue" +echo "===================================" +echo "SQS Message ID: $MESSAGE_ID" +echo "Queue: $QUEUE_NAME" +echo "" +echo "Der Worker wird die E-Mail in Kürze verarbeiten." \ No newline at end of file