Mailinglisten-Archive |
> follgendes php3 script sollte eigentlcih der perfekte e-mail check sein, > aber irgendwie gibt er nicht aus, kann mal jemand schauen was fehlt? Mir > fehlt noch ein groseß Stueck Verstaendnis um das zu Kapieren...: Das funktioniert leider nicht genügend. Auf den ersten Blick scheint das der richtige Weg zu sein, im richtigen Leben versagt er leider zu oft. Es basiert darauf, daß SMTP zurückgibt, ob ein lokaler User existiert oder nicht. Kriegt man bei dem Versuch, dem SMTP-Server zu sagen, er solle eine Mail an User Joe losschicken, eine 550-Rückmeldung, soll das bedeuten, daß es den User lokal auf dem System nicht gibt. Perfekt, in der Theorie. Leider geben viele Server generell ein 250 (User existiert) zurück. Ich hab das mal bei meinem SMTP-Server probiert, und siehe da, er gibt 250 für jeden User: bash-2.01$ telnet smtp.dnet.it 25 Trying 194.242.192.2... Connected to ns.dnet.it. Escape character is '^]'. 220 ns.dnet.it ESMTP Sendmail 8.9.3/8.9.3; Tue, 26 Oct 1999 14:02:43 +0200 (MET) HELO www.profi.it 250 ns.dnet.it Hello www.profi.it [194.242.192.194], pleased to meet you MAIL FROM: tobias_(at)_dnet.it 250 tobias_(at)_dnet.it... Sender ok RCPT TO: this.user.doesnt.exist.for.sure 250 this.user.doesnt.exist.for.sure... Recipient ok QUIT 221 ns.dnet.it closing connection Connection closed by foreign host. Dasselbe passiert z.B. auch bei AOL. Eine bessere Idee wäre es, zu checken, ob der MX (Mail eXchange)-Host existiert. Das kann die Validierung allerdings ziemlich verlangsamen, wenn man auf einen langsamen Remote Host stößt oder der NS-Lookup nicht im lokalen DNS-Server gecached ist. Die einzige 100% Validierung, ist eine Mail an den User zu schicken und eine Bestätigung zu verlangen. Diese Bestätigung kann dann natürlich automatisch, z.B. mit PHP, ausgewertet werden. Mit freundlichen Grüßen, Tobias Ratschiller
php::bar PHP Wiki - Listenarchive