diff --git a/requeue-email.sh b/requeue-email.sh index 1e319bb..5963dbd 100644 --- a/requeue-email.sh +++ b/requeue-email.sh @@ -72,7 +72,8 @@ 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)") +# Subject extrahieren und JSON-escape (Newlines, Tabs, Quotes entfernen) +SUBJECT=$(grep -m1 "^Subject:" "$TEMP_FILE" | sed 's/Subject: //' | tr -d '\n\r\t"' | head -c 200 || echo "(no subject)") rm -f "$TEMP_FILE" echo "Subject: $SUBJECT" @@ -82,23 +83,28 @@ echo "" echo "Sende Message in Queue..." TIMESTAMP=$(date +%s) +# JSON-escape für alle Felder +FROM_ESCAPED=$(echo "$FROM" | sed 's/"/\\"/g' | tr -d '\n\r\t') +RECIPIENT_ESCAPED=$(echo "$RECIPIENT" | sed 's/"/\\"/g' | tr -d '\n\r\t') +SUBJECT_ESCAPED=$(echo "$SUBJECT" | sed 's/"/\\"/g' | tr -d '\n\r\t') + RESPONSE=$(aws sqs send-message \ --queue-url "$QUEUE_URL" \ --region "$AWS_REGION" \ --message-body "{ \"bucket\": \"$BUCKET\", \"key\": \"$S3_KEY\", - \"from\": \"$FROM\", - \"recipient\": \"$RECIPIENT\", + \"from\": \"$FROM_ESCAPED\", + \"recipient\": \"$RECIPIENT_ESCAPED\", \"domain\": \"$DOMAIN\", - \"subject\": \"$SUBJECT\", + \"subject\": \"$SUBJECT_ESCAPED\", \"message_id\": \"$S3_KEY\", \"timestamp\": $TIMESTAMP }" \ --message-attributes "{ \"domain\": {\"StringValue\": \"$DOMAIN\", \"DataType\": \"String\"}, \"bucket\": {\"StringValue\": \"$BUCKET\", \"DataType\": \"String\"}, - \"recipient\": {\"StringValue\": \"$RECIPIENT\", \"DataType\": \"String\"}, + \"recipient\": {\"StringValue\": \"$RECIPIENT_ESCAPED\", \"DataType\": \"String\"}, \"message_id\": {\"StringValue\": \"$S3_KEY\", \"DataType\": \"String\"} }")