Das Kontaktformular sagt „Danke“ – aber keine Mail kommt an
Ein Kontaktformular kann ausfallen, ohne dass jemand einen Fehler sieht: Besucher erhalten eine Bestätigung, Sie erhalten nichts. Warum das passiert und wie Sie es rechtzeitig bemerken.
Stellen Sie sich eine kleine Physiotherapiepraxis vor. Auf ihrer Website gibt es ein Kontaktformular, und das Formular funktioniert – zumindest sieht es so aus. Besucher füllen es aus, klicken auf „Senden“ und sehen ein freundliches „Danke, wir melden uns bald“. Was niemand sieht: Die Nachrichten kommen seit einiger Zeit nicht mehr im Postfach der Praxis an. Kein Fehler, keine Unzustellbarkeitsmeldung in irgendeinem Postfach, nirgends leuchtet eine rote Lampe. Das Formular fällt still aus.
Warum es niemand merkt
Die „Danke“-Seite eines Formulars bedeutet meist nur eines: Die Website hat die Nachricht weitergereicht. Ob ein Mailserver sie annimmt, in den Spam sortiert oder unterwegs ablehnt, passiert später – außerhalb des Blickfelds des Formulars. Die PHP-Funktion mail() meldet zum Beispiel Erfolg, sobald das lokale System die Nachricht zur Zustellung angenommen hat, nicht erst, wenn sie bei jemandem ankommt. Der Besucher bekommt also seine Bestätigung und ist zufrieden. Der Inhaber sieht ein leeres Postfach und hält es für einen ruhigen Monat. Weniger Anfragen beunruhigen selten für sich genommen: Urlaubszeit, Wetter, Konjunktur – es gibt immer eine Erklärung, die plausibler klingt als „das Formular ist kaputt“.
- Tag 0Über Nacht läuft ein routinemäßiges Plugin-Update. Die Website sieht genauso aus wie vorher.
- Tag 1Die letzte Nachricht kommt an. Niemand weiß, dass es die letzte ist.
- Tag 2–13Besucher schicken weiter das Formular ab und sehen weiter „Danke“. Im Postfach kommt nichts an.
- Tag 14Jemand ruft an und fragt etwas verärgert, warum nie jemand auf die Anfrage geantwortet hat.
- Tag 15Die Ursache ist in einer Stunde gefunden. Die Nachrichten dieser zwei Wochen sind weg – es sei denn, das Formular hat zusätzlich eine Kopie gespeichert.
Die üblichen Ursachen
- Das SMTP-Passwort oder der Mailanbieter hat sich geändert. Das Formular meldet sich weiter mit den alten Zugangsdaten an, und der Mailserver lehnt ab – für Besucher völlig unbemerkt.
- PHP mail() ohne Authentifizierung. Der Webserver verschickt direkt, ohne sich an einem richtigen Mailserver anzumelden. Viele empfangende Server stufen solche Mails als verdächtig ein: Sie landen im Spam oder werden gleich abgelehnt.
- SPF, DKIM und DMARC passen nicht zusammen. Viele Formulare tragen die Adresse des Besuchers als Absender (From) ein. Die Nachricht gibt dann vor, etwa von einer gmail.com-Adresse zu kommen, wird aber von Ihrem Webserver verschickt – genau das soll DMARC verhindern.
- Ein Plugin-Update oder Theme-Wechsel beschädigt das Formular oder sein CAPTCHA. Ein geändertes Template verliert ein Feld, ein Skript lädt nicht mehr, oder das CAPTCHA-Widget erscheint ohne sein Skript – und jede Einsendung scheitert an der Prüfung.
- Das Empfangspostfach ist voll. Der Mailserver nimmt nichts mehr an, und die Unzustellbarkeitsmeldung geht an eine Adresse, die niemand liest.
- Der Cookie-Banner blockiert das Formularskript. Stuft das Consent-Tool das CAPTCHA oder das Formularskript als „Marketing“ ein, bekommen Besucher, die Cookies ablehnen, unter Umständen ein Formular, das sich nicht absenden lässt – oder dessen Einsendungen abgelehnt werden, weil ein Token fehlt.
- Ein abgelaufenes TLS-Zertifikat oder eine abgelaufene Domain. Besucher sehen eine Browserwarnung und gehen, oder der Mailserver ist nicht mehr sicher erreichbar. Läuft die Domain des Empfangspostfachs ab, kommt schlicht keine Mail mehr an.
- Eine Cache-Schicht liefert veraltete Seiten aus. Ein Seiten-Cache kann ein Formular mit abgelaufenem Sicherheitstoken (Nonce oder CSRF-Token) ausliefern. Der Server lehnt die Einsendung ab, und je nach Setup sieht der Besucher keinen klaren Fehler.
Die Absender-Falle
Die dritte Ursache verdient einen genaueren Blick, weil sie in vielen Formular-Setups standardmäßig eingebaut ist. DMARC prüft, ob die Domain in der sichtbaren Absenderadresse (From) zu einer Domain passt, für die SPF oder DKIM bürgen. Verschickt das Formular eine Nachricht „von“ der Adresse des Besuchers, ist Ihr Server nicht berechtigt, für dessen Domain zu senden – die Prüfung schlägt fehl. Je nach DMARC-Richtlinie der Besucher-Domain und je nach Ihrem eigenen Mailanbieter landet die Nachricht im Spam oder wird abgelehnt. Die Lösung ist einfach: Senden Sie von einer Adresse Ihrer eigenen Domain und tragen Sie die Adresse des Besuchers als Reply-To ein. Ein Klick auf „Antworten“ erreicht trotzdem den Besucher.
- From: die Adresse des Besuchers
- Kein Reply-To
- PHP mail() direkt vom Webserver
- Kein SPF, DKIM oder DMARC für die Absenderdomain
- Die Nachricht existiert nur als E-Mail
- From: eine Adresse Ihrer Domain, z. B. formular@ihredomain
- Reply-To: die Adresse des Besuchers
- SMTP mit Authentifizierung oder ein Versanddienst
- SPF, DKIM und DMARC eingerichtet und stimmig
- Zusätzlich liegt eine Kopie in der Datenbank
Was Sie tun können
- 1Schicken Sie regelmäßig eine Testnachricht über Ihr eigenes Formular – mindestens monatlich und immer nach Updates, Theme-Wechseln oder Änderungen an den Mail-Einstellungen. Kennzeichnen Sie sie klar als Test, damit niemand darauf antwortet.
- 2Kennen Sie Ihren normalen Rhythmus. Bringt das Formular sonst ein paar Nachrichten pro Woche, sind zwei Wochen Stille ein Anlass zur Prüfung – kein ruhiger Monat.
- 3Versenden Sie per SMTP mit Authentifizierung – über Ihren Mailanbieter oder einen spezialisierten Versanddienst –, statt sich auf PHP mail() zu verlassen.
- 4Verwenden Sie Ihre eigene Domain als Absender (From) und die Adresse des Besuchers als Reply-To. Richten Sie dann SPF, DKIM und DMARC für diese Domain ein, damit die Nachrichten die Prüfungen bestehen.
- 5Speichern Sie jede Einsendung zusätzlich in der Datenbank. Viele Formular-Plugins bieten das an, manchmal als Erweiterung. Fällt die Mail aus, sind die Anfragen trotzdem da.
- 6Prüfen Sie das Formular nach jedem Plugin-Update – inklusive CAPTCHA und auch mit abgelehnten Cookies.
Solche Prüfungen geraten leicht in Vergessenheit, deshalb lohnt es sich, sie zu automatisieren. Mit einem Konto und einer verifizierten Domain kann formexposed eine klar gekennzeichnete Testeinsendung schicken und prüfen, ob sie tatsächlich ankommt (Zustellprüfung, nur nach Aktivierung). Außerdem erkennt der Dienst Stille – ein Formular, das sonst Nachrichten bekommt, bekommt plötzlich keine mehr – und prüft SPF, DKIM und DMARC der Benachrichtigungsmails sowie den Ablauf von TLS-Zertifikat und Domain. Benachrichtigt werden Sie nur, wenn sich etwas ändert.
Wenn Sie erst einmal nur einen Blick darauf werfen möchten: Ein kostenloser Check auf formexposed.com braucht kein Konto und schickt nichts ab. Er zeigt unter anderem, ob ein CAPTCHA zwar vorhanden, aber defekt ist – ein Widget ohne Skript, ein öffentlicher Testschlüssel, Fehler im Browser. Das ist einer der leiseren Wege, auf denen ein Formular ausfällt. Ob Nachrichten wirklich ankommen, beweist dagegen nur eine echte Testnachricht – schicken Sie also heute noch eine ab.