Moin!
Du hast recht. Die statische Liste ist Blödsinn. Jedesmal eine DNS Abfrage abzusetzen aber auch ein ziemlicher Overhead. Ich werd das ganz weglassen.
Es hängt davon ab, was zu erreichen ist.
Ich propagiere insbesondere für Javascript-Ungefährchecks ja den regulären Ausdruck ".+@.+...+" - eine reguläre Mailadresse kann heutzutage nicht kürzer als 6 Zeichen sein. Vor dem @ beliebig viele Zeichen, hinter dem @ beliebig viele Zeichen in den Domains, dann ein Punkt, und nochmal mindestens zwei Zeichen TLD (den Regex kann man auch anders schreiben, kommt aber auf das gleiche raus).
Wenn es hingegen absolut auf die Existenz einer Mailadresse ankommt, z.B. in einem Internetshop, dann prüfe ich weitergehend nacheinander noch:
1. Existiert die angegebene Domain tatsächlich?
2. Hat die Domain MX-Einträge (ein Nein ist nicht böse, aber ungewöhnlich)
3. Akzeptiert der Mailserver die Mail für diese Adresse?
Schritt 3 wird kombiniert mit dem Versuch, dem Neukunden des Shops seine gewählten Accountdaten zuzuschicken. Wenn der Mailserver dort streikt, kriegt er statt "Alles ok, willkommen" eben im Affenformular nochmal die Aufgabe, seine Mailadresse korrekt einzugeben.
Mit diesen reihenweisen Schritten wird der Overhead eigentlich ganz gut minimiert, denn eine komplett falsche Mailadresse wird gar nicht erst in die DNS-Prüfung übergeben, und zum Wegmailen benötige ich zwingend entweder die existierenden MX-Einträge, oder den A-Eintrag der Domain. Es wird also keine überflüssige Arbeit geleistet, um die eigentliche Aufgabe "Mail an den Kunden senden" zu erfüllen - nebenbei wird aber jede fatale Fehlerkondition berücksichtigt.
Übrigend kriegt man sowas selbstverständlich nicht per mail() hin, dazu empfiehlt sich eher die Nutzung von PEAR::Net_SMTP.
- Sven Rautenberg
My sssignature, my preciousssss!