Recherche de serveurs DNS MX natifs C# (pas de dépendances)
Contexte
Parfois, nous devons vérifier si un email a un domaine valide et si ce domaine a des enregistrements MX bien configurés.
Cela peut être utilisé pour de nombreuses propositions telles que les validations d'e-mails avant la soumission du formulaire, en évitant les taux de rebond avant d'envoyer un e-mail à AWS SES, SendGrid ou un autre fournisseur de messagerie, en nettoyant l'ancienne base de données CRM avec validation primaire, etc.
Que fait cette application ?
L'application vous demande quel e-mail souhaitez-vous vérifier les enregistrements MX
Ensuite, il exécute la recherche DNS MX et affiche tous les serveurs de messagerie avec chaque préférence de serveur (priorité)
Après tout, vous demande si vous souhaitez réexécuter l'application ou si vous souhaitez quitter le programme
Pile et principaux sujets du projet
À propos de l'auteur et de la licence
- Erick est un développeur et architecte backend senior.
- Vous pouvez joindre Erick par email [email protected] ou Linkedin https://www.linkedin.com/in/seixaserick/
- Autres référentiels Github : https://github.com/seixaserick/
- Licence MIT (veuillez consulter LICENSE.txt pour plus de détails)
Comment exécuter ce projet
Cloner le référentiel
Si vous avez déjà installé Git pour Windows, exécutez les commandes ci-dessous :
git clone https://github.com/seixaserick/dotnet-dns-mx-lookup
cd dotnet-dns-mx-lookup
Comment exécuter ce projet dans des conteneurs Docker
Si vous avez déjà installé Docker Desktop, suivez simplement ces étapes ci-dessous
Création d'une image Docker
Pour créer une image Docker, exécutez la ligne de commande ci-dessous dans l'invite de commande du répertoire du projet :
docker build -t dotnet-dns-mx-lookup -f Dockerfile .
Exécuter l'application dans un conteneur Docker
Pour exécuter l'image dans le conteneur Docker et interagir avec elle, exécutez la ligne de commande ci-dessous :
docker run -it --name=dotnet-dns-mx-lookup --restart=unless-stopped dotnet-dns-mx-lookup
Pour arrêter le conteneur, exécutez la ligne de commande ci-dessous :
docker stop dotnet-dns-mx-lookup
Pour supprimer le conteneur (même s'il est en cours d'exécution), exécutez la ligne de commande ci-dessous :
docker rm --force dotnet-dns-mx-lookup
Comment créer et exécuter sans Docker (Windows)
Après avoir cloné le référentiel, vous pouvez ouvrir le projet avec Visual Studio. Construisez-le ou déboguez-le simplement en appuyant sur F5
.
Pour le compiler et l'exécuter sous Windows (Visual Studio requis)
Ouvrez le fichier solution dotnet-dns-mx-lookup.sln
avec votre Visual Studio, puis appuyez sur F5
pour exécuter le projet !
Points à retenir
- Le protocole DNS utilise le port 53 du protocole UPD
- Un domaine de messagerie peut avoir plusieurs enregistrements MX et vous devez communiquer avec des serveurs hautement prioritaires.
- Les applications Dotnet (console ou non) peuvent fonctionner sous Linux ou Windows.
- Docker est un outil intéressant pour exécuter des projets rapidement sans se soucier des dépendances et des configurations.
- C# est très similaire aux autres langages basés sur ECMA (Java, Javascript, etc.)
- Les applications de console sont simples et faciles à saisir et à sortir des données.
- De bons fichiers Markdown README.md peuvent aider d'autres développeurs à comprendre, cloner, exécuter et tester des projets.
Défi des devoirs
- Essayez d'implémenter une fonction de validation d'e-mail pour renvoyer true si un e-mail a au moins un domaine de serveur valide
- Essayez de trier la liste des serveurs DNS MX par préférence de serveur avant de l'imprimer sur la console.
- Essayez de vérifier si l'IP de chaque serveur DNS est valide et appelez ses ports TCP 25, 587 ou 465 (ports SMTP communs). Astuce : utilisez le DNS dotnet natif Une requête d'enregistrement pour trouver l'adresse IP du serveur (IPv4 ou IPv6) https://docs.microsoft.com/en-us/dotnet/api/system.net.dns?view=net-6.0
- Inspectez le code, augmentez le délai d'expiration de la requête DNS et forcez une déconnexion du réseau entre une recherche de serveur DNS (débranchez votre carte Ethernet et votre Wi-Fi) pour voir ce qui se passe. Essayez d'implémenter une gestion des erreurs pour les erreurs de délai d'attente. Vous pouvez simuler l'échec du DNS principal et le DNS secondaire renvoyant la requête (après avoir reconnecté votre réseau).
- Inspectez le contenu du Dockerfile pour voir comment Docker extrait les images du hub d'images
- Essayez de créer une WebAPI et d'implémenter un point de terminaison pour vérifier si un e-mail est valide (https://my-api-server.com/api/[email protected]). Vous pouvez l'utiliser sur votre site Web pour empêcher de faux e-mails (avec des domaines invalides) de vous contacter en envoyant un formulaire.
- Essayez d'implémenter un CACHE d'enregistrements MX de domaine en utilisant le cache mémoire dotnet natif ou le cache distribué REDIS.