2009-11-03 17 views
9

Se me ha pedido que implemente alguna validación de dirección de correo electrónico en una aplicación web. Estoy seguro de que hemos estado allí miles de veces ... sin embargo, esta vez se me ha pedido que haga un MX Buscar en el dominio para ver si acepta correos electrónicos.Validación de correo electrónico MX Lookup

¿Alguien sabe de algún problema potencial al hacer esto? ¿Es una búsqueda de mx una forma confiable de averiguar si un dominio acepta correo electrónico? ¿Hay algún caso límite en el que una dirección de correo electrónico válida pueda fallar en una comprobación de búsqueda MX?

Gracias por su consejo!

Respuesta

7

¿hay casos extremos en una dirección válida de correo electrónico podría fallar una ¿Comprobación de búsqueda MX?

Sí, en el caso de que no exista un registro MX, los MTA vuelven a utilizar el registro A en su lugar. Entonces, solo permitir registros MX fallaría una clase de servidores de correo que funcionan en el mundo real.

Permitir cualquier nombre con un MX o Un registro detecta al menos las falsas mistificaciones que resultan en NXDOMAIN. Sin embargo, aún permitirá las mistificaciones que terminan en sitios ilegales. Un paso adicional para direcciones resueltas por registros A podría ser verificar dónde el puerto 25 está aceptando conexiones en esa dirección.

+0

Para registros A, no lo haría con otros puertos como 2525/587/465/2526 trabajo también? Saludos ~ – lulalala

+1

@lulalala: para aceptar el correo electrónico público entrante, ese puerto siempre debe ser 25. El puerto 587 y las alternativas personalizadas son para el envío de correo saliente. – bobince

2

Solo puede verificar si hay un servidor de correo registrado para el dominio.

Si el servidor también acepta correos electrónicos y si la dirección es válida (no sintácticamente, sino en el sentido de que existe una bandeja de entrada para ella, etc.), solo se enterará cuando envíe los p. Ej. correo electrónico de registro

muestra sobre cómo hacer esto en PHP

function mailserver_exists($email) { 
list($user,$domain) = split('@',$email); 
//included check for 'A' after [comment from bobince][1] 
return checkdnsrr($domain,'MX') || checkdnsrr($domain,'A'); 
} 
if(domain_exists('[email protected]')) {...} else {...} 

Sí, puedes usar '[email protected]' también. La documentación de PHP para checkdnsrr(host, type) estados

huésped puede ser o bien la dirección IP en notación de cuaterna o el nombre de host

+0

Hola inestabilidad: gracias por la respuesta. ¿Sabe si las búsquedas MX funcionarán si la dirección de correo electrónico está usando la dirección IP: algo así como [email protected] – Paul

+0

respuesta ampliada para responder a su pregunta adicional – jitter

Cuestiones relacionadas