C# native DNS-MX-Server-Suche (keine Abhängigkeiten)
Kontext
Manchmal müssen wir überprüfen, ob eine E-Mail eine gültige Domäne hat und ob diese Domäne korrekt konfigurierte MX-Einträge hat.
Dies kann für viele Vorschläge verwendet werden, wie z. B. E-Mail-Validierungen vor der Formularübermittlung, Vermeidung von Absprungraten vor dem Senden einer E-Mail an AWS SES, SendGrid oder einen anderen E-Mail-Anbieter, Bereinigen alter CRM-Datenbanken mit primärer Validierung usw.
Was macht diese Anwendung?
Die App fragt Sie, welche E-Mail-Adresse Sie zur Überprüfung der MX-Einträge verwenden möchten
Anschließend führt es eine DNS-MX-Suche durch und zeigt alle Mailserver mit jeder Serverpräferenz (Priorität) an.
Anschließend werden Sie gefragt, ob Sie die App erneut ausführen oder das Programm beenden möchten
Stack und Hauptthemen im Projekt
Über den Autor und die Lizenz
- Erick ist Senior Backend-Entwickler und Architekt.
- Sie erreichen Erick per E-Mail [email protected] oder Linkedin https://www.linkedin.com/in/seixaserick/
- Andere Github-Repositories: https://github.com/seixaserick/
- MIT-Lizenz (weitere Informationen finden Sie in LICENSE.txt)
So führen Sie dieses Projekt aus
Klonen Sie das Repository
Wenn Sie Git für Windows bereits installiert haben, führen Sie die folgenden Befehle aus:
git clone https://github.com/seixaserick/dotnet-dns-mx-lookup
cd dotnet-dns-mx-lookup
So führen Sie dieses Projekt in Docker-Containern aus
Wenn Sie Docker Desktop bereits installiert haben, führen Sie einfach die folgenden Schritte aus
Erstellen eines Docker-Images
Um ein Docker-Image zu erstellen, führen Sie die folgende Befehlszeile in der Eingabeaufforderung des Projektverzeichnisses aus:
docker build -t dotnet-dns-mx-lookup -f Dockerfile .
Ausführen der App in einem Docker-Container
Um das Image im Docker-Container auszuführen und mit ihm zu interagieren, führen Sie die folgende Befehlszeile aus:
docker run -it --name=dotnet-dns-mx-lookup --restart=unless-stopped dotnet-dns-mx-lookup
Um den Container zu stoppen, führen Sie die folgende Befehlszeile aus:
docker stop dotnet-dns-mx-lookup
Um den Container zu entfernen (auch wenn er ausgeführt wird), führen Sie die folgende Befehlszeile aus:
docker rm --force dotnet-dns-mx-lookup
Erstellen und Ausführen ohne Docker (Windows)
Nachdem Sie das Repository geklont haben, können Sie das Projekt mit Visual Studio öffnen. Erstellen Sie es oder debuggen Sie es einfach, indem Sie F5
drücken.
Zum Kompilieren und Ausführen unter Windows (Visual Studio erforderlich)
Öffnen Sie die Lösungsdatei dotnet-dns-mx-lookup.sln
mit Ihrem Visual Studio und drücken Sie dann F5
, um das Projekt auszuführen!
Imbissbuden
- Das DNS-Protokoll verwendet den UPD-Protokollport 53
- Eine E-Mail-Domäne kann über mehr als einen MX-Eintrag verfügen und Sie sollten mit Servern mit hoher Priorität kommunizieren
- Dotnet-Apps (Konsole oder nicht) können unter Linux oder Windows ausgeführt werden.
- Docker ist ein nettes Tool, um Projekte schnell auszuführen, ohne sich Gedanken über Abhängigkeiten und Konfigurationen machen zu müssen.
- C# ist anderen ECMA-basierten Sprachen (Java, Javascript usw.) sehr ähnlich.
- Konsolen-Apps ermöglichen eine einfache und einfache Eingabe und Ausgabe von Daten.
- Gute Markdown-README.md-Dateien können anderen Entwicklern helfen, Projekte zu verstehen, zu klonen, auszuführen und zu testen.
Hausaufgaben-Herausforderung
- Versuchen Sie, eine E-Mail-Validierungsfunktion zu implementieren, um „true“ zurückzugeben, wenn eine E-Mail mindestens eine gültige Serverdomäne hat
- Versuchen Sie, die DNS-MX-Serverliste nach Serverpräferenz zu sortieren, bevor Sie sie auf der Konsole drucken.
- Versuchen Sie zu überprüfen, ob die IP-Adresse jedes DNS-Servers gültig ist, und rufen Sie die TCP-Ports 25, 587 oder 465 (allgemeine SMTP-Ports) auf. Tipp: Verwenden Sie die native Dotnet-DNS-A-Eintragsabfrage, um die IP-Adresse des Servers (IPv4 oder IPv6) zu finden: https://docs.microsoft.com/en-us/dotnet/api/system.net.dns?view=net-6.0
- Überprüfen Sie den Code, erhöhen Sie das DNS-Abfrage-Timeout und erzwingen Sie eine Netzwerktrennung zwischen einem DNS-Server-Lookup (entfernen Sie Ihre Ethernet-Karte und Ihr WLAN), um zu sehen, was passiert. Versuchen Sie, eine Fehlerbehandlung für Timeout-Fehler zu implementieren. Sie können simulieren, dass der primäre DNS ausfällt und der sekundäre DNS die Abfrage zurückgibt (nachdem Sie Ihr Netzwerk erneut verbunden haben).
- Überprüfen Sie den Inhalt der Docker-Datei, um zu sehen, wie Docker Bilder vom Hub der Bilder abruft
- Versuchen Sie, eine WebAPI zu erstellen und einen Endpunkt zu implementieren, um zu überprüfen, ob eine E-Mail gültig ist (https://my-api-server.com/api/[email protected]). Sie können dies auf Ihrer Website verwenden, um zu verhindern, dass gefälschte E-Mails (mit ungültigen Domänen) Sie über das Absenden eines Formulars kontaktieren.
- Versuchen Sie, einen Domänen-MX-Datensatz-CACHE mithilfe des nativen Dotnet-Speichercaches oder des verteilten REDIS-Cache zu implementieren.