114 lines
3.0 KiB
Bash
114 lines
3.0 KiB
Bash
#!/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 <S3_KEY> <FROM> <RECIPIENT>"
|
|
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." |