#!/usr/bin/env python3 import csv import imaplib import sys import time # Konfiguration IMAP_SERVER = "secure.emailsrvr.com" IMAP_PORT = 993 DELAY_SECONDS = 1 # Kurze Pause, um Rate-Limiting oder Fail2Ban zu vermeiden def check_imap_login(email, password): try: # Verbindung zum IMAP-Server via SSL herstellen mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT) mail.login(email, password) mail.logout() return True except imaplib.IMAP4.error: # Login fehlgeschlagen (falsches Passwort/User) return False except Exception as e: print(f" [!] Netzwerk- oder Serverfehler bei {email}: {e}") return False def main(csv_filepath): erfolgreich = [] fehlgeschlagen = [] uebersprungen = [] try: with open(csv_filepath, mode='r', encoding='utf-8') as f: # Nutze csv.reader für sauberes Parsing der Kommas reader = csv.reader(f) for row_num, row in enumerate(reader, start=1): if not row: continue email = row[0].strip() # Prüfen, ob ein zweites Feld (Passwort) existiert und nicht leer ist password = row[1].strip() if len(row) > 1 else "" if not password: print(f"[{row_num}] Überspringe {email} (Kein Passwort)") uebersprungen.append(email) continue print(f"[{row_num}] Prüfe {email}... ", end="", flush=True) if check_imap_login(email, password): print("OK") erfolgreich.append(email) else: print("FEHLGESCHLAGEN") fehlgeschlagen.append(email) # Kurze Pause einlegen, um den Mailserver nicht zu fluten time.sleep(DELAY_SECONDS) except FileNotFoundError: print(f"\nFehler: Die Datei '{csv_filepath}' wurde nicht gefunden.") sys.exit(1) except Exception as e: print(f"\nEin unerwarteter Fehler ist aufgetreten: {e}") sys.exit(1) # Ausgabe der Zusammenfassung print("\n" + "="*40) print("ZUSAMMENFASSUNG DER PRÜFUNG") print("="*40) print(f"\nErfolgreich ({len(erfolgreich)}):") for e in erfolgreich: print(f" - {e}") print(f"\nFehlgeschlagen ({len(fehlgeschlagen)}):") for e in fehlgeschlagen: print(f" - {e}") print(f"\nÜbersprungen (kein Passwort) ({len(uebersprungen)}):") for e in uebersprungen: print(f" - {e}") if __name__ == "__main__": if len(sys.argv) != 2: print("Verwendung: ./check_logins.py ") sys.exit(1) csv_file = sys.argv[1] main(csv_file)