Kunden-E-Mail-Prüfung — Vollständige Anleitung
E-Mail-Zustellbarkeitsprüfung und Bereinigung der Kundendatenbank für PrestaShop 8 und 9 installieren, konfigurieren und nutzen.
Kunden-E-Mail-Prüfung kontrolliert die echte Zustellbarkeit jeder E-Mail-Adresse in Ihrem Shop: Syntax, Existenz der Domain über ihre MX-Einträge und optional eine SMTP-Sonde, die den Empfängerserver abfragt. Der Status jedes Kunden (Gültig, Ungültig, Riskant, Ungeprüft) erscheint in einem eigenen Back-Office-Tab, in dem Sie die gesamte Datenbank in Stapeln prüfen und alle Kunden, deren E-Mail nicht existiert, mit einem Klick löschen können — ohne je einen echten Kunden versehentlich zu entfernen. Diese Anleitung behandelt Installation, Konfiguration, Prüfstufen und Datenbankbereinigung.
Installation
- Laden Sie das Archiv
dfemailcheck.zipaus Ihrem DataFirefly-Konto herunter. - PrestaShop-Back-Office → Module → Modul hochladen → senden Sie die ZIP-Datei.
- Bei der Installation erstellt das Modul seine Tabelle
df_email_check, registriert seine Hooks und fügt den Tab Kunden → E-Mail-Prüfung hinzu.
Kompatibel mit PrestaShop 8.0 bis 9.x, unter PHP 7.4 bis 8.3. Kein Theme-Override, keine Composer-Abhängigkeit. Multistore-kompatibel und übersetzbar.
Konfiguration
Gehen Sie zu Module → Kunden-E-Mail-Prüfung → Konfigurieren.
Prüfung bei der Registrierung
Wenn die Option Bei der Kontoerstellung prüfen aktiviert ist, wird jeder neue Kunde bei der Erstellung automatisch geprüft (Hook actionObjectCustomerAddAfter). Zu diesem Zeitpunkt läuft nur die schnelle Prüfung — Syntax und Domain —, damit der Bestellprozess nicht verlangsamt wird. Der Status wird auch neu berechnet, wenn ein Kunde seine E-Mail-Adresse ändert.
Registrierung blockieren
Die Option Registrierung blockieren, wenn Domain ungültig lehnt das Registrierungsformular ab, wenn die E-Mail-Domain keinen MX- oder A-Eintrag besitzt (Hook actionValidateCustomerFormFields). Der Kunde sieht dann eine Fehlermeldung im E-Mail-Feld. Standardmäßig deaktiviert.
SMTP-Prüfung (erweitert)
Die SMTP-Sonde bestätigt die tatsächliche Existenz des Postfachs durch einen Dialog mit dem Empfängerserver (Befehl RCPT TO), mit Erkennung von Catch-all-Servern. Drei Einstellungen gehören dazu:
- SMTP-Prüfung: aktiviert oder deaktiviert die Sonde. Standardmäßig deaktiviert.
- SMTP-Absenderadresse: die während des Dialogs angekündigte Adresse (
MAIL FROM). - SMTP-Timeout: maximale Wartezeit pro Server, in Sekunden (Standard 6).
Die SMTP-Prüfung benötigt den ausgehenden Port 25, der im Shared Hosting sehr oft geschlossen ist. Ohne ihn stoppt die Prüfung bei der Domain — was bereits die große Mehrheit der Fake-Adressen erkennt.
Sicherheit beim Löschen
- Kunden mit Bestellungen schützen: verhindert das Löschen jedes Kunden mit mindestens einer Bestellung, um verwaiste Bestellungen zu vermeiden. Standardmäßig aktiviert.
- Stapelgröße: Anzahl der pro Durchgang verarbeiteten Kunden bei Massenprüfungen (Standard 50).
Die Prüfstufen
Die Kontrolle erfolgt in drei Stufen, von der schnellsten bis zur genauesten:
- Syntax: Validierung des Adressformats.
- Domain: Abfrage der MX-Einträge der Domain, mit Rückgriff auf die A/AAAA-Einträge.
- SMTP (optional): Dialog mit dem Empfängerserver zur Bestätigung des Postfachs, mit Erkennung von Catch-all-Servern.
Die Status
Jeder Kunde erhält einen der folgenden vier Status:
- Gültig: korrekte Syntax und erreichbare Domain (und bestätigtes Postfach, wenn die SMTP-Sonde aktiv ist).
- Ungültig: eindeutiges negatives Signal — fehlerhafte Syntax (
bad_syntax), eine Domain ohne MX oder A (no_mx) oder eine explizite SMTP-Ablehnung (smtp_rejected). Dies sind die einzigen löschbaren Kunden. - Riskant: Catch-all-Server (
smtp_catch_all) — die Adresse wird akzeptiert, aber der Server akzeptiert auch nicht existierende Adressen. Wird nie automatisch gelöscht. - Ungeprüft: unklares Ergebnis — Timeout, geschlossener Port, Greylisting oder ein nie geprüfter Kunde. Wird nie gelöscht.
Der Detailcode (zum Beispiel no_mx, smtp_catch_all) wird in der Liste neben dem Status angezeigt, um jede Entscheidung zu erklären.
Das Dashboard
Der Tab Kunden → E-Mail-Prüfung zeigt oben fünf Zähler: Gesamtzahl der Kunden, gültig, ungültig, riskant und ungeprüft. Darunter lässt sich die vollständige Kundenliste nach Status filtern. Zwei Schaltflächen starten die Prüfung:
- Neue Kunden prüfen: prüft nur nie geprüfte Kunden.
- Alles erneut prüfen: prüft die gesamte Datenbank erneut.
Die Verarbeitung erfolgt in Stapeln über AJAX, mit einem Fortschrittsbalken, wodurch große Datenbanken ohne Timeout verarbeitet werden können. Die SMTP-Sonde wird, wenn aktiviert, nur bei diesen Massenprüfungen verwendet.
Ungültige Kunden löschen
Die Schaltfläche Ungültige Kunden löschen entfernt in einem Durchgang alle Kunden mit dem Status Ungültig. Kunden mit mindestens einer Bestellung werden übersprungen, solange die Schutzoption aktiv ist. Sie können auch über die Massenaktionen der Liste auf eine bestimmte Auswahl wirken: Auswahl erneut prüfen oder Auswahl löschen. Das Löschen verwendet den nativen Mechanismus von PrestaShop (Customer::delete()) und bereinigt auch die Ergebnistabelle.
Das Löschen eines Kunden ist endgültig. Prüfen Sie den Zähler „Ungültig“ und filtern Sie die Liste bei Bedarf nach diesem Status, um die Adressen vor der Bereinigung zu kontrollieren.
Sicherheit — keine Fehlalarme
Die zentrale Regel des Moduls: Eine Adresse wird niemals bei bloßem Zweifel als Ungültig markiert. Ein Timeout, ein Greylisting, ein geschlossener SMTP-Port oder eine temporäre Antwort (4xx) belassen den Status auf Ungeprüft, nie gelöscht. Nur eindeutige negative Signale (Syntax, fehlendes MX/A, 5xx-Ablehnung) machen einen Kunden löschbar. In Kombination mit dem Schutz von Kunden mit Bestellungen vermeidet diese Logik, einen echten Kunden versehentlich zu entfernen.
Kompatibilität und technische Hinweise
- PrestaShop 8.0 bis 9.x, Multistore, übersetzbare Oberfläche.
- Legacy-Admin-Controller (kein Symfony-Controller) für die PS8/PS9-Kompatibilität.
- Hooks:
actionObjectCustomerAddAfter,actionObjectCustomerUpdateAfter,actionObjectCustomerDeleteAfter,actionValidateCustomerFormFields. - Back-Office-AJAX-Endpoint über das 4. Argument von
getAdminLink(); JSON-Ausgabe über eine dedizierte Methode. - Tabelle
df_email_check: ein Eintrag pro Kunde (E-Mail, Status, Detailcode, Prüfdatum). - Kein Aufruf eines Drittanbieterdienstes: Die Prüfung stützt sich nur auf DNS und optional auf eine direkte SMTP-Verbindung.
FAQ und Fehlerbehebung
Die SMTP-Prüfung liefert immer „Ungeprüft“. Der ausgehende Port 25 ist wahrscheinlich von Ihrem Hoster geschlossen. Deaktivieren Sie die SMTP-Sonde: Die Domain-Prüfung (MX) reicht in den meisten Fällen aus.
Legitime Kunden erscheinen als „Riskant“. Ihr Mailserver ist Catch-all (er akzeptiert jede Adresse). Das ist Serververhalten, kein Fehler; diese Kunden werden nie automatisch gelöscht.
Die Bereinigung löscht keinen Kunden, obwohl der Zähler Ungültig positiv ist. Prüfen Sie die Option „Kunden mit Bestellungen schützen“: Ungültige Kunden mit einer Bestellung werden bewusst übersprungen.
Die Registrierungsblockierung wird nicht ausgelöst. Der Formularvalidierungs-Hook hängt von der PrestaShop-Version ab; löst Ihre Version ihn nicht aus, läuft die Prüfung trotzdem direkt nach der Kontoerstellung, und der Kunde erscheint dann als „Ungültig“ in der Liste.
Verlangsamt die Prüfung die Registrierung? Nein. Bei der Registrierung läuft nur die schnelle Prüfung (Syntax und Domain). Die SMTP-Sonde läuft nur bei Massenprüfungen im Back-Office.