From fc1d0724048365429f1703f14cbc211087a3a23e Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Sat, 22 Mar 2025 11:44:27 +0100 Subject: [PATCH] new aws scripts --- dovecot/awsdomain.sh | 84 ++++++++++++++--- dovecot/awsiam.sh | 127 ++++++++++++++++++++++++++ dovecot/awss3.sh | 85 +++++++++++++++++ dovecot/awsses.sh | 99 ++++++++++++++++++++ dovecot/generate_ses_smtp_password.js | 71 ++++++++++++++ dovecot/setup_email_domain.sh | 38 ++++++++ 6 files changed, 491 insertions(+), 13 deletions(-) create mode 100644 dovecot/awsiam.sh create mode 100644 dovecot/awss3.sh create mode 100644 dovecot/awsses.sh create mode 100644 dovecot/generate_ses_smtp_password.js create mode 100644 dovecot/setup_email_domain.sh diff --git a/dovecot/awsdomain.sh b/dovecot/awsdomain.sh index a1cfe1c..fc93245 100755 --- a/dovecot/awsdomain.sh +++ b/dovecot/awsdomain.sh @@ -12,7 +12,7 @@ S3_BUCKET_NAME=$(echo "$DOMAIN_NAME" | tr '.' '-' | awk '{print $0 "-emails"}') RULE_NAME="store-$(echo "$DOMAIN_NAME" | tr '.' '-')-to-s3" # ------------------------ -# 1. S3 Bucket erstellen +# S3 Bucket erstellen # ------------------------ echo "S3 Bucket erstellen..." aws s3api create-bucket \ @@ -68,7 +68,7 @@ aws s3api put-bucket-policy \ }' # ------------------------ -# 2. SES Domain-Identität erstellen +# SES Domain-Identität erstellen # ------------------------ echo "SES Domain-Identität erstellen..." aws sesv2 create-email-identity \ @@ -88,9 +88,6 @@ aws sesv2 put-email-identity-mail-from-attributes \ --behavior-on-mx-failure USE_DEFAULT_VALUE \ --region ${AWS_REGION} -# -------------------------- -# Receive Emails -# ------------------------- # 3. Receipt Rule Set erstellen echo "Receipt Rule for bizmatch ruleset erstellen..." @@ -107,31 +104,46 @@ aws ses create-receipt-rule --rule-set-name "bizmatch-ruleset" --rule '{ "TlsPolicy": "Require" }' + +# -------------------------- +# IAM-User erstellen +# ------------------------- USER_NAME="${DOMAIN_NAME//./-}-ses-user" # Ersetzt Punkte durch Bindestriche für validen IAM-Username -# 1. IAM-User erstellen +NODE_SCRIPT_PATH="./generate_ses_smtp_password.js" +# Prüfen, ob das Node.js-Script existiert +if [ ! -f "$NODE_SCRIPT_PATH" ]; then + echo "Fehler: Das Node.js-Script '$NODE_SCRIPT_PATH' wurde nicht gefunden." + echo "Bitte stelle sicher, dass das Script im angegebenen Pfad existiert." + exit 1 +fi + echo "Erstelle IAM-User: $USER_NAME" aws iam create-user --user-name $USER_NAME # 2. Policy-Dokument für SES-Vollzugriff erstellen +POLICY_NAME="${USER_NAME}-SendRawEmailPolicy" POLICY_DOCUMENT='{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", - "Action": [ - "ses:*" - ], + "Action": "ses:SendRawEmail", "Resource": "*" } ] }' +echo "Erstelle benutzerdefinierte Policy für SES SendRawEmail" +POLICY_ARN=$(aws iam create-policy \ + --policy-name $POLICY_NAME \ + --policy-document "$POLICY_DOCUMENT" \ + --query 'Policy.Arn' \ + --output text) -# 3. Option 1: Managed Policy AmazonSESFullAccess anhängen -echo "Hänge AmazonSESFullAccess Policy an" +echo "Hänge Policy an: $POLICY_ARN" aws iam attach-user-policy \ --user-name $USER_NAME \ - --policy-arn arn:aws:iam::aws:policy/AmazonSESFullAccess + --policy-arn $POLICY_ARN # 4. Access Key und Secret Key für den User erstellen echo "Erstelle Access Key für den User: $USER_NAME" @@ -148,4 +160,50 @@ SECRET_KEY=$(echo "$KEY_OUTPUT" | jq -r .AccessKey.SecretAccessKey) echo "ACCESS_KEY: $ACCESS_KEY" echo "SECRET_KEY: $SECRET_KEY" -echo "WICHTIG: Speichere den Secret Key jetzt, da er später nicht mehr abgerufen werden kann!" \ No newline at end of file +echo "WICHTIG: Speichere den Secret Key jetzt, da er später nicht mehr abgerufen werden kann!" +# -------------------------- +# SMTP Passwort generieren +# -------------------------- +echo -e "\nGeneriere SMTP-Passwort für Region $AWS_REGION..." + +# Führe das Node.js-Script aus, um das SMTP-Passwort zu generieren +SMTP_PASSWORD=$(node "$NODE_SCRIPT_PATH" "$SECRET_KEY" "$AWS_REGION") + +# Prüfen, ob die Ausführung erfolgreich war +if [ $? -ne 0 ]; then + echo "Fehler bei der Generierung des SMTP-Passworts. Bitte überprüfe das Node.js-Script." + exit 1 +fi + +# SMTP-Benutzername ist der Access Key +SMTP_USERNAME="$ACCESS_KEY" + +# Ausgabe der SMTP-Anmeldeinformationen +echo -e "\nSMTP-Anmeldeinformationen für Amazon SES in Region $AWS_REGION:" +echo "--------------------------------------------------------------" +echo "SMTP-Server: email-smtp.$AWS_REGION.amazonaws.com" +echo "SMTP-Port: 587 (TLS) oder 465 (SSL)" +echo "SMTP-Benutzername: $SMTP_USERNAME" +echo "SMTP-Passwort: $SMTP_PASSWORD" + +# Speichere die Anmeldeinformationen in einer Datei +echo -e "\nSpeichere SMTP-Anmeldeinformationen in ses_smtp_credentials.txt" +cat > "ses_smtp_credentials.txt" << EOF +SMTP-Server: email-smtp.$AWS_REGION.amazonaws.com +SMTP-Port: 587 (TLS) oder 465 (SSL) +SMTP-Benutzername: $SMTP_USERNAME +SMTP-Passwort: $SMTP_PASSWORD +EOF + +# Hinweise für die weitere Konfiguration +echo -e "\nHinweise:" +echo "1. Stellen Sie sicher, dass Ihre Domains in Amazon SES verifiziert sind." +echo "2. Bei Bedarf beantragen Sie die Aufhebung der SES-Sandbox-Einschränkungen." +echo "3. Für SMTP-Anwendungen verwenden Sie die SMTP-Anmeldeinformationen (nicht die IAM-Zugangsdaten)." + +# Format für .env-Datei +echo -e "\nFür .env-Datei:" +echo "AWS_SES_SMTP_USERNAME=$SMTP_USERNAME" +echo "AWS_SES_SMTP_PASSWORD=$SMTP_PASSWORD" +echo "AWS_SES_SMTP_HOST=email-smtp.$AWS_REGION.amazonaws.com" +echo "AWS_SES_SMTP_PORT=587" \ No newline at end of file diff --git a/dovecot/awsiam.sh b/dovecot/awsiam.sh new file mode 100644 index 0000000..aad1440 --- /dev/null +++ b/dovecot/awsiam.sh @@ -0,0 +1,127 @@ +#!/bin/bash +# awsiam.sh - Erstellt einen IAM-Benutzer für Amazon SES mit SMTP-Zugangsdaten + +# Überprüfen, ob die Domain-Variable gesetzt ist +if [ -z "$DOMAIN_NAME" ]; then + echo "Fehler: DOMAIN_NAME ist nicht gesetzt." + echo "Bitte setzen Sie die Variable mit: export DOMAIN_NAME='IhreDomain.de'" + exit 1 +fi + +# Konfiguration +AWS_REGION=${AWS_REGION:-"us-east-2"} +USER_NAME="${DOMAIN_NAME//./-}-ses-user" # Ersetzt Punkte durch Bindestriche für validen IAM-Username +NODE_SCRIPT_PATH="./generate_ses_smtp_password.js" +OUTPUT_FILE="${DOMAIN_NAME//./_}_ses_credentials.txt" # Sichere Dateibenennung + +# Prüfen, ob das Node.js-Script existiert +if [ ! -f "$NODE_SCRIPT_PATH" ]; then + echo "Fehler: Das Node.js-Script '$NODE_SCRIPT_PATH' wurde nicht gefunden." + echo "Bitte stelle sicher, dass das Script im angegebenen Pfad existiert." + exit 1 +fi + +echo "=== IAM-Benutzer für SES SMTP-Zugang erstellen ===" +echo "Domain: $DOMAIN_NAME" +echo "Region: $AWS_REGION" +echo "IAM-Benutzername: $USER_NAME" + +# -------------------------- +# IAM-User erstellen +# -------------------------- +echo "Erstelle IAM-User: $USER_NAME" +aws iam create-user --user-name $USER_NAME + +# Benutzerdefinierte Policy für SES-Sendeberechtigungen erstellen +POLICY_NAME="${USER_NAME}-SendRawEmailPolicy" +POLICY_DOCUMENT='{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "ses:SendRawEmail", + "Resource": "*" + } + ] +}' + +echo "Erstelle benutzerdefinierte Policy für SES SendRawEmail" +POLICY_ARN=$(aws iam create-policy \ + --policy-name $POLICY_NAME \ + --policy-document "$POLICY_DOCUMENT" \ + --query 'Policy.Arn' \ + --output text) + +echo "Hänge Policy an: $POLICY_ARN" +aws iam attach-user-policy \ + --user-name $USER_NAME \ + --policy-arn $POLICY_ARN + +# Access Key und Secret Key für den User erstellen +echo "Erstelle Access Key für den User: $USER_NAME" +KEY_OUTPUT=$(aws iam create-access-key --user-name $USER_NAME) + +# Keys ausgeben und in Variablen speichern +echo "Zugriffsschlüssel wurden erstellt. Bitte sicher aufbewahren:" +echo "$KEY_OUTPUT" | jq . + +ACCESS_KEY=$(echo "$KEY_OUTPUT" | jq -r .AccessKey.AccessKeyId) +SECRET_KEY=$(echo "$KEY_OUTPUT" | jq -r .AccessKey.SecretAccessKey) + +echo "ACCESS_KEY: $ACCESS_KEY" +echo "SECRET_KEY: $SECRET_KEY" + +echo "WICHTIG: Speichere den Secret Key jetzt, da er später nicht mehr abgerufen werden kann!" + +# -------------------------- +# SMTP Passwort generieren +# -------------------------- +echo -e "\nGeneriere SMTP-Passwort für Region $AWS_REGION..." + +# Führe das Node.js-Script aus, um das SMTP-Passwort zu generieren +SMTP_PASSWORD=$(node "$NODE_SCRIPT_PATH" "$SECRET_KEY" "$AWS_REGION") + +# Prüfen, ob die Ausführung erfolgreich war +if [ $? -ne 0 ]; then + echo "Fehler bei der Generierung des SMTP-Passworts. Bitte überprüfe das Node.js-Script." + exit 1 +fi + +# SMTP-Benutzername ist der Access Key +SMTP_USERNAME="$ACCESS_KEY" + +# Ausgabe der SMTP-Anmeldeinformationen +echo -e "\nSMTP-Anmeldeinformationen für Amazon SES in Region $AWS_REGION:" +echo "--------------------------------------------------------------" +echo "SMTP-Server: email-smtp.$AWS_REGION.amazonaws.com" +echo "SMTP-Port: 587 (TLS) oder 465 (SSL)" +echo "SMTP-Benutzername: $SMTP_USERNAME" +echo "SMTP-Passwort: $SMTP_PASSWORD" + +# Speichere die Anmeldeinformationen in einer Datei +echo -e "\nSpeichere SMTP-Anmeldeinformationen in $OUTPUT_FILE" +cat > "$OUTPUT_FILE" << EOF +DOMAIN_NAME: $DOMAIN_NAME +SMTP-Server: email-smtp.$AWS_REGION.amazonaws.com +SMTP-Port: 587 (TLS) oder 465 (SSL) +SMTP-Benutzername: $SMTP_USERNAME +SMTP-Passwort: $SMTP_PASSWORD + +IAM-Benutzer: $USER_NAME +Access Key ID: $ACCESS_KEY +Secret Access Key: $SECRET_KEY +EOF + +chmod 600 "$OUTPUT_FILE" # Nur für den Besitzer lesbar machen + +# Format für .env-Datei +echo -e "\nFür .env-Datei:" +echo "AWS_SES_SMTP_USERNAME=$SMTP_USERNAME" +echo "AWS_SES_SMTP_PASSWORD=$SMTP_PASSWORD" +echo "AWS_SES_SMTP_HOST=email-smtp.$AWS_REGION.amazonaws.com" +echo "AWS_SES_SMTP_PORT=587" + +echo -e "\nHinweise:" +echo "1. Die SMTP-Anmeldeinformationen wurden in $OUTPUT_FILE gespeichert." +echo "2. Verwenden Sie diese SMTP-Anmeldeinformationen in Ihrer E-Mail-Anwendung oder Ihrem E-Mail-Server." +echo "3. Der IAM-Benutzer hat nur die Berechtigung, E-Mails über SES zu senden." \ No newline at end of file diff --git a/dovecot/awss3.sh b/dovecot/awss3.sh new file mode 100644 index 0000000..f5c54e0 --- /dev/null +++ b/dovecot/awss3.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# awss3.sh - Erstellt einen S3-Bucket für Amazon SES E-Mail-Speicherung + +# Überprüfen, ob die Domain-Variable gesetzt ist +if [ -z "$DOMAIN_NAME" ]; then + echo "Fehler: DOMAIN_NAME ist nicht gesetzt." + echo "Bitte setzen Sie die Variable mit: export DOMAIN_NAME='IhreDomain.de'" + exit 1 +fi + +# Konfiguration +AWS_REGION=${AWS_REGION:-"us-east-2"} +EMAIL_PREFIX=${EMAIL_PREFIX:-"emails/"} +S3_BUCKET_NAME=$(echo "$DOMAIN_NAME" | tr '.' '-' | awk '{print $0 "-emails"}') + +echo "=== S3 Bucket Configuration für $DOMAIN_NAME ===" +echo "Region: $AWS_REGION" +echo "Bucket-Name: $S3_BUCKET_NAME" +echo "E-Mail-Präfix: $EMAIL_PREFIX" + +# ------------------------ +# S3 Bucket erstellen +# ------------------------ +echo "S3 Bucket erstellen..." +aws s3api create-bucket \ + --bucket ${S3_BUCKET_NAME} \ + --region ${AWS_REGION} \ + --create-bucket-configuration LocationConstraint=${AWS_REGION} + +# Öffentlichen Zugriff blockieren +echo "Öffentlichen Zugriff blockieren..." +aws s3api put-public-access-block \ + --bucket ${S3_BUCKET_NAME} \ + --public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true" + +# Lebenszyklus-Konfiguration hinzufügen +echo "Lebenszyklus-Konfiguration hinzufügen (E-Mails werden nach 90 Tagen gelöscht)..." +aws s3api put-bucket-lifecycle-configuration \ + --bucket ${S3_BUCKET_NAME} \ + --lifecycle-configuration '{ + "Rules": [ + { + "ID": "DeleteOldEmails", + "Status": "Enabled", + "Expiration": { + "Days": 90 + }, + "Filter": { + "Prefix": "" + } + } + ] + }' + +echo "S3 Bucket Policy hinzufügen für SES-Zugriff..." +aws s3api put-bucket-policy \ + --bucket ${S3_BUCKET_NAME} \ + --policy '{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "ses.amazonaws.com" + }, + "Action": [ + "s3:PutObject", + "s3:GetBucketLocation", + "s3:ListBucket" + ], + "Resource": [ + "arn:aws:s3:::'${S3_BUCKET_NAME}'", + "arn:aws:s3:::'${S3_BUCKET_NAME}'/*" + ] + } + ] + }' + +echo "S3 Bucket $S3_BUCKET_NAME wurde erfolgreich erstellt und konfiguriert." +echo "Bucket-ARN: arn:aws:s3:::$S3_BUCKET_NAME" + +# Exportiere Variablen für andere Scripte +echo +echo "Für die Verwendung in den anderen Scripten setzen Sie:" +echo "export S3_BUCKET_NAME=$S3_BUCKET_NAME" \ No newline at end of file diff --git a/dovecot/awsses.sh b/dovecot/awsses.sh new file mode 100644 index 0000000..de29fd6 --- /dev/null +++ b/dovecot/awsses.sh @@ -0,0 +1,99 @@ +#!/bin/bash +# awsses.sh - Konfiguriert Amazon SES für eine Domain und erstellt eine Receipt Rule + +# Überprüfen, ob die Domain-Variable gesetzt ist +if [ -z "$DOMAIN_NAME" ]; then + echo "Fehler: DOMAIN_NAME ist nicht gesetzt." + echo "Bitte setzen Sie die Variable mit: export DOMAIN_NAME='IhreDomain.de'" + exit 1 +fi + +# Überprüfen, ob S3_BUCKET_NAME gesetzt ist +if [ -z "$S3_BUCKET_NAME" ]; then + echo "Warnung: S3_BUCKET_NAME ist nicht gesetzt." + echo "Wird automatisch aus DOMAIN_NAME generiert, verwenden Sie idealerweise zuerst awss3.sh." + S3_BUCKET_NAME=$(echo "$DOMAIN_NAME" | tr '.' '-' | awk '{print $0 "-emails"}') + echo "Generierter Bucket-Name: $S3_BUCKET_NAME" +fi + +# Konfiguration +AWS_REGION=${AWS_REGION:-"us-east-2"} +EMAIL_PREFIX=${EMAIL_PREFIX:-"emails/"} +RULE_NAME="store-$(echo "$DOMAIN_NAME" | tr '.' '-')-to-s3" + +echo "=== SES Konfiguration für $DOMAIN_NAME ===" +echo "Region: $AWS_REGION" +echo "S3 Bucket: $S3_BUCKET_NAME" +echo "Receipt Rule Name: $RULE_NAME" + +# ------------------------ +# SES Domain-Identität erstellen +# ------------------------ +echo "SES Domain-Identität erstellen..." +IDENTITY_RESULT=$(aws sesv2 create-email-identity \ + --email-identity ${DOMAIN_NAME} \ + --region ${AWS_REGION}) + +echo "Identity erstellt. Überprüfen Sie die DNS-Einträge für die Domain-Verifizierung." +echo "$IDENTITY_RESULT" | jq . + +# DKIM-Signierung aktivieren +echo "DKIM-Signierung aktivieren..." +aws sesv2 put-email-identity-dkim-attributes \ + --email-identity ${DOMAIN_NAME} \ + --signing-enabled \ + --region ${AWS_REGION} + +# Mail-From-Domain konfigurieren +echo "Mail-From-Domain konfigurieren..." +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} + +# Überprüfen, ob der Rule Set existiert, sonst erstellen +echo "Überprüfe oder erstelle Receipt Rule Set..." +RULESET_EXISTS=$(aws ses describe-receipt-rule-sets --region ${AWS_REGION} | jq -r '.RuleSets[] | select(.Name == "bizmatch-ruleset") | .Name') + +if [ -z "$RULESET_EXISTS" ]; then + echo "Receipt Rule Set 'bizmatch-ruleset' existiert nicht, wird erstellt..." + aws ses create-receipt-rule-set --rule-set-name "bizmatch-ruleset" --region ${AWS_REGION} +else + echo "Receipt Rule Set 'bizmatch-ruleset' existiert bereits." +fi + +# Receipt Rule erstellen +echo "Receipt Rule für E-Mail-Empfang erstellen..." +aws ses create-receipt-rule --rule-set-name "bizmatch-ruleset" --rule '{ + "Name": "'"${RULE_NAME}"'", + "Enabled": true, + "ScanEnabled": true, + "Actions": [{ + "S3Action": { + "BucketName": "'"${S3_BUCKET_NAME}"'", + "ObjectKeyPrefix": "'"${EMAIL_PREFIX}"'" + } + }], + "TlsPolicy": "Require", + "Recipients": ["'"${DOMAIN_NAME}"'"] +}' --region ${AWS_REGION} + +# Prüfen, ob der Rule Set aktiv ist +ACTIVE_RULESET=$(aws ses describe-active-receipt-rule-set --region ${AWS_REGION} | jq -r '.Metadata.Name') + +if [ "$ACTIVE_RULESET" != "bizmatch-ruleset" ]; then + echo "Aktiviere Rule Set 'bizmatch-ruleset'..." + aws ses set-active-receipt-rule-set --rule-set-name "bizmatch-ruleset" --region ${AWS_REGION} +else + echo "Rule Set 'bizmatch-ruleset' ist bereits aktiv." +fi + +echo "SES-Konfiguration für $DOMAIN_NAME abgeschlossen." +echo +echo "WICHTIG: Überprüfen Sie die Ausgabe oben für DNS-Einträge, die Sie bei Ihrem DNS-Provider setzen müssen:" +echo "1. DKIM-Einträge (3 CNAME-Einträge)" +echo "2. MAIL FROM MX und TXT-Einträge" +echo "3. SPF-Eintrag (TXT): v=spf1 include:amazonses.com ~all" +echo +echo "Nach dem Setzen der DNS-Einträge kann es bis zu 72 Stunden dauern, bis die Verifizierung abgeschlossen ist." \ No newline at end of file diff --git a/dovecot/generate_ses_smtp_password.js b/dovecot/generate_ses_smtp_password.js new file mode 100644 index 0000000..4385bc9 --- /dev/null +++ b/dovecot/generate_ses_smtp_password.js @@ -0,0 +1,71 @@ +#!/usr/bin/env node + +/** + * Obtaining Amazon SES SMTP credentials by converting existing AWS credentials + * + * Script based on: + * https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html + */ + +const crypto = require('crypto'); + +const SMTP_REGIONS = [ + 'us-east-2', // US East (Ohio) + 'us-east-1', // US East (N. Virginia) + 'us-west-2', // US West (Oregon) + 'ap-south-1', // Asia Pacific (Mumbai) + 'ap-northeast-2', // Asia Pacific (Seoul) + 'ap-southeast-1', // Asia Pacific (Singapore) + 'ap-southeast-2', // Asia Pacific (Sydney) + 'ap-northeast-1', // Asia Pacific (Tokyo) + 'ca-central-1', // Canada (Central) + 'eu-central-1', // Europe (Frankfurt) + 'eu-west-1', // Europe (Ireland) + 'eu-west-2', // Europe (London) + 'sa-east-1', // South America (Sao Paulo) + 'us-gov-west-1', // AWS GovCloud (US) +]; + +// These values are required to calculate the signature. Do not change them. +const DATE = '11111111'; +const SERVICE = 'ses'; +const MESSAGE = 'SendRawEmail'; +const TERMINAL = 'aws4_request'; +const VERSION = [0x04]; + +function sign(key, msg) { + return crypto.createHmac('sha256', key).update(msg).digest(); +} + +function calculate_key(secret_access_key, region) { + if (!SMTP_REGIONS.includes(region)) { + throw new Error(`The ${region} Region doesn't have an SMTP endpoint`); + } + + let signature; + + signature = sign(`AWS4${secret_access_key}`, DATE); + signature = sign(signature, region); + signature = sign(signature, SERVICE); + signature = sign(signature, TERMINAL); + signature = sign(signature, MESSAGE); + + const signature_and_version = Buffer.concat([ + Buffer.from(VERSION), + signature, + ]); + + const smtp_password = Buffer.from(signature_and_version).toString('base64'); + + return smtp_password; +} + +function main() { + const [secret, region] = process.argv.slice(2); + + console.log(calculate_key(secret, region)); +} + +if (require.main === module) { + main(); +} \ No newline at end of file diff --git a/dovecot/setup_email_domain.sh b/dovecot/setup_email_domain.sh new file mode 100644 index 0000000..b10905f --- /dev/null +++ b/dovecot/setup_email_domain.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# setup_email_domain.sh - Ein Wrapper-Script, das alle drei Skripte in der richtigen Reihenfolge ausführt + +# Überprüfen, ob die Domain-Variable gesetzt ist +if [ -z "$1" ]; then + echo "Fehler: Keine Domain angegeben." + echo "Verwendung: ./setup_email_domain.sh domain.de [region]" + exit 1 +fi + +DOMAIN_NAME=$1 +AWS_REGION=${2:-"us-east-2"} + +# Variablen exportieren +export DOMAIN_NAME +export AWS_REGION + +echo "=== AWS E-Mail-Infrastruktur für $DOMAIN_NAME einrichten ===" +echo "AWS-Region: $AWS_REGION" +echo + +# Skripte nacheinander ausführen +echo "1. S3-Bucket erstellen..." +./awss3.sh +echo + +echo "2. SES-Konfiguration einrichten..." +export S3_BUCKET_NAME=$(echo "$DOMAIN_NAME" | tr '.' '-' | awk '{print $0 "-emails"}') +./awsses.sh +echo + +echo "3. IAM-Benutzer und SMTP-Zugangsdaten erstellen..." +./awsiam.sh +echo + +echo "=== Setup abgeschlossen ===" +echo "Alle Schritte wurden abgeschlossen. Bitte überprüfen Sie die Ausgaben der einzelnen Skripte." +echo "Vergessen Sie nicht, die benötigten DNS-Einträge für Ihre Domain zu setzen, um die SES-Verifizierung abzuschließen." \ No newline at end of file