BugFix downloader, add IAM User to send EMails for a specific Domain
This commit is contained in:
parent
67e37f8985
commit
9905481e26
|
|
@ -106,3 +106,46 @@ aws ses create-receipt-rule --rule-set-name "bizmatch-ruleset" --rule '{
|
||||||
}],
|
}],
|
||||||
"TlsPolicy": "Require"
|
"TlsPolicy": "Require"
|
||||||
}'
|
}'
|
||||||
|
|
||||||
|
USER_NAME="${DOMAIN_NAME//./-}-ses-user" # Ersetzt Punkte durch Bindestriche für validen IAM-Username
|
||||||
|
|
||||||
|
# 1. IAM-User erstellen
|
||||||
|
echo "Erstelle IAM-User: $USER_NAME"
|
||||||
|
aws iam create-user --user-name $USER_NAME
|
||||||
|
|
||||||
|
# 2. Policy-Dokument für SES-Vollzugriff erstellen
|
||||||
|
POLICY_DOCUMENT='{
|
||||||
|
"Version": "2012-10-17",
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": [
|
||||||
|
"ses:*"
|
||||||
|
],
|
||||||
|
"Resource": "*"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}'
|
||||||
|
|
||||||
|
# 3. Option 1: Managed Policy AmazonSESFullAccess anhängen
|
||||||
|
echo "Hänge AmazonSESFullAccess Policy an"
|
||||||
|
aws iam attach-user-policy \
|
||||||
|
--user-name $USER_NAME \
|
||||||
|
--policy-arn arn:aws:iam::aws:policy/AmazonSESFullAccess
|
||||||
|
|
||||||
|
# 4. 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)
|
||||||
|
|
||||||
|
# 5. Keys ausgeben (am besten in eine sichere Datei speichern)
|
||||||
|
echo "Zugriffsschlüssel wurden erstellt. Bitte sicher aufbewahren:"
|
||||||
|
echo "$KEY_OUTPUT" | jq .
|
||||||
|
|
||||||
|
# Optional: Keys in separaten Variablen speichern für weitere Verwendung
|
||||||
|
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!"
|
||||||
|
|
@ -274,7 +274,7 @@ def delete_s3_emails(s3_client, bucket, emails_to_delete, email_info):
|
||||||
|
|
||||||
return deleted_count
|
return deleted_count
|
||||||
|
|
||||||
def process_domain(domain_name, domain_config, last_sync):
|
def process_domain(domain_name, domain_config, last_sync, all_domains_config):
|
||||||
"""Verarbeitet eine einzelne Domain"""
|
"""Verarbeitet eine einzelne Domain"""
|
||||||
bucket = domain_config["bucket"]
|
bucket = domain_config["bucket"]
|
||||||
prefix = domain_config["prefix"]
|
prefix = domain_config["prefix"]
|
||||||
|
|
@ -344,11 +344,14 @@ def process_domain(domain_name, domain_config, last_sync):
|
||||||
}
|
}
|
||||||
|
|
||||||
# Alle Domains-Konfigurationen für die Validierung verwenden
|
# Alle Domains-Konfigurationen für die Validierung verwenden
|
||||||
is_valid, recipient_domain = is_valid_recipient(to_address, {domain_name: domain_config})
|
# BUGFIX: Hier prüfen wir gegen ALLE konfigurierten Domains
|
||||||
|
is_valid, recipient_domain = is_valid_recipient(to_address, all_domains_config)
|
||||||
|
|
||||||
if is_valid:
|
if is_valid:
|
||||||
logger.info(f"Gültige E-Mail für: {to_address}")
|
logger.info(f"Gültige E-Mail für: {to_address}")
|
||||||
|
|
||||||
|
# Nur speichern, wenn die E-Mail zur aktuellen Domain gehört
|
||||||
|
if recipient_domain == domain_name:
|
||||||
# E-Mail speichern
|
# E-Mail speichern
|
||||||
if store_email(email_content, to_address, message_id, key, MAIL_DIR):
|
if store_email(email_content, to_address, message_id, key, MAIL_DIR):
|
||||||
# Status aktualisieren
|
# Status aktualisieren
|
||||||
|
|
@ -366,6 +369,9 @@ def process_domain(domain_name, domain_config, last_sync):
|
||||||
if new_emails % 10 == 0:
|
if new_emails % 10 == 0:
|
||||||
save_sync_status(last_sync)
|
save_sync_status(last_sync)
|
||||||
logger.info(f"Zwischenspeicherung: {new_emails} neue E-Mails bisher")
|
logger.info(f"Zwischenspeicherung: {new_emails} neue E-Mails bisher")
|
||||||
|
else:
|
||||||
|
# Gültige E-Mail, aber für eine andere Domain - nicht löschen!
|
||||||
|
logger.info(f"E-Mail {key} ist für Domain {recipient_domain}, wird übersprungen (nicht gelöscht)")
|
||||||
else:
|
else:
|
||||||
logger.info(f"Ungültige Empfängeradresse: {to_address} für {key}")
|
logger.info(f"Ungültige Empfängeradresse: {to_address} für {key}")
|
||||||
emails_to_delete.append(key)
|
emails_to_delete.append(key)
|
||||||
|
|
@ -415,7 +421,8 @@ def main():
|
||||||
total_all_emails = 0
|
total_all_emails = 0
|
||||||
|
|
||||||
for domain_name, domain_config in domains_config.items():
|
for domain_name, domain_config in domains_config.items():
|
||||||
new_emails, all_emails = process_domain(domain_name, domain_config, last_sync)
|
# BUGFIX: all_domains_config übergeben statt nur der aktuellen Domain-Konfiguration
|
||||||
|
new_emails, all_emails = process_domain(domain_name, domain_config, last_sync, domains_config)
|
||||||
total_new_emails += new_emails
|
total_new_emails += new_emails
|
||||||
total_all_emails += all_emails
|
total_all_emails += all_emails
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue