การค้นหาเซิร์ฟเวอร์ DNS MX ดั้งเดิมของ C # (ไม่มีการขึ้นต่อกัน)
บริบท
บางครั้งเราจำเป็นต้องตรวจสอบว่าอีเมลมีโดเมนที่ถูกต้องหรือไม่ และโดเมนนี้มีการกำหนดค่าระเบียน MX ไว้อย่างดีหรือไม่
ซึ่งสามารถใช้ได้กับข้อเสนอมากมาย เช่น การตรวจสอบอีเมลก่อนส่งแบบฟอร์ม การหลีกเลี่ยงอัตราตีกลับก่อนส่งอีเมลไปยัง AWS SES, SendGrid หรือผู้ให้บริการอีเมลรายอื่น การล้างฐานข้อมูลเก่าของ CRM ด้วยการตรวจสอบหลัก เป็นต้น
แอปพลิเคชั่นนี้ทำอะไร?
แอปจะถามว่าคุณต้องการยืนยันอีเมลใดในระเบียน MX
จากนั้นจะเรียกใช้การค้นหา DNS MX และแสดงเมลเซิร์ฟเวอร์ทั้งหมดตามการตั้งค่าเซิร์ฟเวอร์แต่ละรายการ (ลำดับความสำคัญ)
Alfer all ถามว่าคุณต้องการเรียกใช้แอปอีกครั้งหรือต้องการออกจากโปรแกรม
สแต็กและหัวข้อหลักในโครงการ
เกี่ยวกับผู้แต่งและใบอนุญาต
- Erick เป็นนักพัฒนาและสถาปนิกแบ็กเอนด์อาวุโส
- คุณสามารถติดต่อ Erick ทางอีเมล [email protected] หรือ Linkedin https://www.linkedin.com/in/seixaserick/
- ที่เก็บ Github อื่น ๆ: https://github.com/seixaserick/
- ใบอนุญาต MIT (โปรดตรวจสอบ LICENSE.txt สำหรับรายละเอียดเพิ่มเติม)
วิธีการดำเนินโครงการนี้
โคลนพื้นที่เก็บข้อมูล
หากคุณติดตั้ง Git สำหรับ Windows แล้ว ให้รันคำสั่งด้านล่าง:
git clone https://github.com/seixaserick/dotnet-dns-mx-lookup
cd dotnet-dns-mx-lookup
วิธีรันโปรเจ็กต์นี้ในคอนเทนเนอร์ Docker
หากคุณติดตั้ง Docker Desktop แล้ว เพียงทำตามขั้นตอนด้านล่าง
การสร้างอิมเมจนักเทียบท่า
หากต้องการสร้างอิมเมจ Docker ให้เรียกใช้บรรทัดคำสั่งด้านล่างในพร้อมท์คำสั่งของไดเร็กทอรีโปรเจ็กต์:
docker build -t dotnet-dns-mx-lookup -f Dockerfile .
เรียกใช้แอปในคอนเทนเนอร์นักเทียบท่า
หากต้องการเรียกใช้อิมเมจในคอนเทนเนอร์ Docker และโต้ตอบกับอิมเมจ ให้เรียกใช้บรรทัดคำสั่งด้านล่าง:
docker run -it --name=dotnet-dns-mx-lookup --restart=unless-stopped dotnet-dns-mx-lookup
หากต้องการหยุดคอนเทนเนอร์ ให้เรียกใช้บรรทัดคำสั่งด้านล่าง:
docker stop dotnet-dns-mx-lookup
หากต้องการลบคอนเทนเนอร์ออก (แม้ว่าจะกำลังทำงานอยู่) ให้เรียกใช้บรรทัดคำสั่งด้านล่าง:
docker rm --force dotnet-dns-mx-lookup
วิธีสร้างและรันโดยไม่ต้องใช้ Docker (Windows)
หลังจากโคลนพื้นที่เก็บข้อมูลแล้ว คุณสามารถเปิดโปรเจ็กต์ด้วย Visual Studio ได้ สร้างหรือเพียงแค่แก้ไขข้อบกพร่องโดยกด F5
เพื่อคอมไพล์และรันใน Windows (ต้องใช้ Visual Studio)
เปิดไฟล์โซลูชัน dotnet-dns-mx-lookup.sln
ด้วย Visual Studio ของคุณ จากนั้นกด F5
เพื่อรันโปรเจ็กต์!
ซื้อกลับบ้าน
- โปรโตคอล DNS ใช้พอร์ตโปรโตคอล UPD 53
- โดเมนอีเมลของฉันมีระเบียน MX มากกว่าหนึ่งรายการ และคุณควรสื่อสารกับเซิร์ฟเวอร์ที่มีลำดับความสำคัญสูง
- แอพ Dotnet (คอนโซลหรือไม่ก็ได้) สามารถทำงานใน Linux หรือ Windows OS
- Docker เป็นเครื่องมือที่ดีในการรันโปรเจ็กต์อย่างรวดเร็วโดยไม่ต้องกังวลเรื่องการขึ้นต่อกันและการกำหนดค่า
- C# มีความคล้ายคลึงกับภาษาที่ใช้ ECMA อื่นๆ มาก (Java, Javascript ฯลฯ)
- แอปคอนโซลนั้นเรียบง่ายและง่ายต่อการป้อนข้อมูลและส่งออก
- ไฟล์ Markdown README.md ที่ดีสามารถช่วยให้นักพัฒนารายอื่นเข้าใจ โคลน รัน และทดสอบโปรเจ็กต์ได้
ความท้าทายในการบ้าน
- ลองใช้ฟังก์ชันการตรวจสอบอีเมลเพื่อคืนค่าเป็นจริงหากอีเมลมีโดเมนเซิร์ฟเวอร์ที่ถูกต้องอย่างน้อยหนึ่งโดเมน
- ลองเรียงลำดับรายการเซิร์ฟเวอร์ DNS MX ตามการตั้งค่าเซิร์ฟเวอร์ก่อนที่จะพิมพ์บนคอนโซล
- ลองตรวจสอบว่า IP เซิร์ฟเวอร์ DNS แต่ละรายการนั้นถูกต้องหรือไม่ และเรียกใช้พอร์ต TCP 25, 587 หรือ 465 (พอร์ต SMTP ทั่วไป) เคล็ดลับ: ใช้การค้นหาบันทึก dotnet DNS A ดั้งเดิมเพื่อค้นหา IP ของเซิร์ฟเวอร์ (IPv4 หรือ IPv6) https://docs.microsoft.com/en-us/dotnet/api/system.net.dns?view=net-6.0
- ตรวจสอบโค้ด เพิ่มการหมดเวลาการสืบค้น DNS และบังคับให้มีการตัดการเชื่อมต่อเครือข่ายระหว่างการค้นหาเซิร์ฟเวอร์ DNS เดียว (ถอดปลั๊กการ์ดอีเทอร์เน็ตและ Wi-Fi) เพื่อดูว่าเกิดอะไรขึ้น ลองใช้การจัดการข้อผิดพลาดสำหรับข้อผิดพลาดการหมดเวลา คุณสามารถจำลอง DNS หลักที่ล้มเหลวและ DNS รองส่งคืนแบบสอบถาม (หลังจากเชื่อมต่อเครือข่ายของคุณใหม่)
- ตรวจสอบเนื้อหา Dockerfile เพื่อดูว่านักเทียบท่าดึงภาพจากฮับของภาพอย่างไร
- ลองสร้าง WebAPI และใช้จุดสิ้นสุดเพื่อตรวจสอบว่าอีเมลถูกต้องหรือไม่ (https://my-api-server.com/api/[email protected]) คุณสามารถใช้สิ่งนี้ในเว็บไซต์ของคุณเพื่อป้องกันอีเมลปลอม (ที่มีโดเมนที่ไม่ถูกต้อง) เพื่อติดต่อคุณโดยการส่งแบบฟอร์ม
- ลองใช้โดเมนระเบียน MX CACHE โดยใช้แคชหน่วยความจำ dotnet ดั้งเดิมหรือแคชแบบกระจาย REDIS