#!/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."