Búsqueda de servidores DNS MX nativos de C# (sin dependencias)
Contexto
En ocasiones necesitamos comprobar si un correo electrónico tiene un dominio válido y si este dominio tiene registros MX bien configurados.
Esto se puede utilizar para muchas propuestas, como validaciones de correo electrónico antes del envío del formulario, evitar tasas de rebote antes de enviar un correo electrónico a AWS SES, SendGrid u otro proveedor de correo electrónico, limpiar la base de datos antigua de CRM con validación primaria, etc.
¿Qué hace esta aplicación?
La aplicación pregunta qué correo electrónico desea verificar los registros MX.
Luego, ejecuta la búsqueda DNS MX y muestra todos los servidores de correo con cada preferencia de servidor (prioridad).
Después de todo, pregunta si desea ejecutar nuevamente la aplicación o si desea salir del programa.
Pila y temas principales del proyecto.
Sobre el autor y la licencia
- Erick es arquitecto y desarrollador backend senior.
- Puede comunicarse con Erick por correo electrónico [email protected] o Linkedin https://www.linkedin.com/in/seixaserick/
- Otros repositorios de Github: https://github.com/seixaserick/
- Licencia MIT (consulte LICENSE.txt para obtener más detalles)
Cómo ejecutar este proyecto
Clonar el repositorio
Si ya instaló Git para Windows, ejecute los siguientes comandos:
git clone https://github.com/seixaserick/dotnet-dns-mx-lookup
cd dotnet-dns-mx-lookup
Cómo ejecutar este proyecto en contenedores Docker
Si ya instaló Docker Desktop, simplemente siga estos pasos a continuación
Creando una imagen acoplable
Para crear una imagen de Docker, ejecute la siguiente línea de comando en el símbolo del sistema del directorio del proyecto:
docker build -t dotnet-dns-mx-lookup -f Dockerfile .
Ejecutar la aplicación en un contenedor acoplable
Para ejecutar la imagen en el contenedor Docker e interactuar con ella, ejecute la línea de comando a continuación:
docker run -it --name=dotnet-dns-mx-lookup --restart=unless-stopped dotnet-dns-mx-lookup
Para detener el contenedor, ejecute la siguiente línea de comando:
docker stop dotnet-dns-mx-lookup
Para eliminar el contenedor (incluso si se está ejecutando), ejecute la siguiente línea de comando:
docker rm --force dotnet-dns-mx-lookup
Cómo compilar y ejecutar sin Docker (Windows)
Después de clonar el repositorio, puede abrir el proyecto con Visual Studio. Compílelo o simplemente depurelo presionando F5
.
Para compilarlo y ejecutarlo en Windows (se requiere Visual Studio)
Abra el archivo de solución dotnet-dns-mx-lookup.sln
con su Visual Studio, luego presione F5
para ejecutar el proyecto.
Comidas para llevar
- El protocolo DNS utiliza el puerto 53 del protocolo UPD
- Un dominio de correo electrónico puede tener más de un registro MX y debes comunicarte con servidores de alta prioridad.
- Las aplicaciones Dotnet (consola o no) pueden ejecutarse en el sistema operativo Linux o Windows.
- Docker es una buena herramienta para ejecutar proyectos rápidamente sin preocuparse por las dependencias y configuraciones.
- C# es muy similar a otros lenguajes basados en ECMA (Java, Javascript, etc.)
- Las aplicaciones de consola son simples y fáciles de ingresar y generar datos.
- Los buenos archivos Markdown README.md pueden ayudar a otros desarrolladores a comprender, clonar, ejecutar y probar proyectos.
Desafío de tarea
- Intente implementar una función de validación de correo electrónico para que devuelva verdadero si un correo electrónico tiene al menos un dominio de servidor válido.
- Intente ordenar la lista de servidores DNS MX por preferencia de servidor antes de imprimirla en la consola.
- Intente verificar si la IP de cada servidor DNS es válida y llame a sus puertos TCP 25, 587 o 465 (puertos SMTP comunes). Consejo: Utilice DNS dotnet nativo Una consulta de registro para encontrar la IP del servidor (IPv4 o IPv6) https://docs.microsoft.com/en-us/dotnet/api/system.net.dns?view=net-6.0
- Inspeccione el código, aumente el tiempo de espera de la consulta DNS y fuerce una desconexión de la red entre una búsqueda de servidor DNS (desconecte su tarjeta Ethernet y Wi-Fi) para ver qué sucede. Intente implementar un manejo de errores para el error de tiempo de espera. Puede simular una falla del DNS primario y un DNS secundario que devuelve la consulta (después de volver a conectar su red).
- Inspeccione el contenido de Dockerfile para ver cómo Docker extrae imágenes del centro de imágenes.
- Intente crear una WebAPI e implementar un punto final para verificar si un correo electrónico es válido (https://my-api-server.com/api/[email protected]). Puede utilizar esto en su sitio web para evitar que correos electrónicos falsos (con dominios no válidos) se comuniquen con usted mediante el envío de formularios.
- Intente implementar un CACHE de registros MX de dominio utilizando la memoria caché nativa dotnet o la caché distribuida REDIS.