diff --git a/dovecot/s3_email_downloader.py b/dovecot/s3_email_downloader.py index cd54673..ba77ce7 100644 --- a/dovecot/s3_email_downloader.py +++ b/dovecot/s3_email_downloader.py @@ -42,7 +42,7 @@ logger = logging.getLogger("s3-email-downloader") AWS_REGION = os.environ.get('AWS_REGION', 'us-east-2') S3_BUCKET = os.environ.get('S3_BUCKET', '') EMAIL_PREFIX = os.environ.get('EMAIL_PREFIX', 'emails/') -MAIL_DIR = os.environ.get('MAIL_DIR', './data/mail') # Pfad zum Docker-Volume +MAIL_DIR = os.environ.get('MAIL_DIR', './mail') # Pfad zum Docker-Volume VALID_DOMAIN = os.environ.get('VALID_DOMAIN', 'bizmatch.net') VALID_USERNAMES = os.environ.get('VALID_USERNAMES', 'accounting,info,sales,support,test1,test2,test3') @@ -163,7 +163,7 @@ def store_email(email_content, to_address, message_id, s3_key, mail_dir): logger.error(f"Fehler beim Speichern der E-Mail {s3_key}: {str(e)}") return False -def delete_s3_emails(s3, emails_to_delete): +def delete_s3_emails(s3, emails_to_delete, email_info): """Löscht E-Mails aus dem S3-Bucket""" if not emails_to_delete: return 0 @@ -171,11 +171,15 @@ def delete_s3_emails(s3, emails_to_delete): if not AUTO_DELETE: # Bestätigung einholen print(f"\nFolgende {len(emails_to_delete)} E-Mails werden gelöscht:") - for i, key in enumerate(emails_to_delete[:10]): + for key in emails_to_delete: + info = email_info.get(key, {}) + from_addr = info.get('from', 'Unbekannt') + to_addr = info.get('to', 'Unbekannt') + date = info.get('date', 'Unbekannt') print(f" - {key}") - - if len(emails_to_delete) > 10: - print(f" ... und {len(emails_to_delete) - 10} weitere") + print(f" Von: {from_addr}") + print(f" An: {to_addr}") + print(f" Datum: {date}\n") confirmation = input("\nMöchten Sie diese E-Mails wirklich löschen? (j/n): ") if confirmation.lower() not in ['j', 'ja', 'y', 'yes']: @@ -221,7 +225,8 @@ def main(): new_emails = 0 total_emails = 0 emails_to_delete = [] - + email_info = {} + # Alle Seiten durchlaufen for page in pages: if 'Contents' not in page: @@ -251,8 +256,16 @@ def main(): try: headers = BytesParser(policy=policy.default).parsebytes(email_content, headersonly=True) to_address = headers.get('To', '') + from_address = headers.get('From', '') + date = headers.get('Date', '') message_id = headers.get('Message-ID', '') - + # E-Mail-Informationen speichern + email_info[key] = { + 'to': to_address, + 'from': from_address, + 'date': date + } + # Prüfen, ob die Empfängeradresse gültig ist if is_valid_recipient(to_address): logger.info(f"Gültige E-Mail für: {to_address}") @@ -288,7 +301,7 @@ def main(): # Ungültige E-Mails löschen if emails_to_delete: - deleted_count = delete_s3_emails(s3, emails_to_delete) + deleted_count = delete_s3_emails(s3, emails_to_delete, email_info) logger.info(f"Insgesamt {deleted_count} von {len(emails_to_delete)} ungültigen E-Mails gelöscht") logger.info(f"Verarbeitung abgeschlossen. Insgesamt {total_emails} E-Mails gefunden, {new_emails} neue heruntergeladen.")