البحث عن خوادم DNS MX الأصلية لـ C# (بدون تبعيات)
سياق
في بعض الأحيان نحتاج إلى التحقق مما إذا كان البريد الإلكتروني يحتوي على مجال صالح وما إذا كان هذا المجال يحتوي على سجلات MX تم تكوينها بشكل جيد.
يمكن استخدام هذا للعديد من المقترحات مثل التحقق من صحة البريد الإلكتروني قبل إرسال النموذج، وتجنب معدلات الارتداد قبل إرسال بريد إلكتروني إلى AWS SES، أو SendGrid أو موفر بريد إلكتروني آخر، وتنظيف قاعدة البيانات القديمة لإدارة علاقات العملاء (CRM) من خلال التحقق الأساسي وما إلى ذلك.
ماذا يفعل هذا التطبيق؟
يسألك التطبيق عن البريد الإلكتروني الذي تريد التحقق من سجلات MX فيه
ثم يقوم بتشغيل بحث DNS MX ويعرض جميع خوادم البريد مع كل تفضيل خادم (الأولوية)
أخيرًا، يسألك ما إذا كنت تريد تشغيل التطبيق مرة أخرى أو إذا كنت تريد إنهاء البرنامج
المكدس والمواضيع الرئيسية في المشروع
نبذة عن المؤلف والترخيص
- إريك هو أحد كبار مطوري الواجهة الخلفية ومهندس معماري.
- يمكنك التواصل مع إريك عبر البريد الإلكتروني [email protected] أو Linkedin https://www.linkedin.com/in/seixaserick/
- مستودعات جيثب الأخرى: 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.
- تعد Docker أداة رائعة لتشغيل المشاريع بسرعة دون القلق بشأن التبعيات والتكوينات.
- تشبه لغة #C إلى حد كبير اللغات الأخرى المستندة إلى ECMA (Java وJavascript وما إلى ذلك)
- تتميز تطبيقات وحدة التحكم بالبساطة وسهولة إدخال البيانات وإخراجها.
- يمكن لملفات Good Markdown README.md أن تساعد المطورين الآخرين على فهم المشاريع واستنساخها وتشغيلها واختبارها.
تحدي الواجبات المنزلية
- حاول تنفيذ وظيفة التحقق من صحة البريد الإلكتروني لإرجاع صحيح إذا كان البريد الإلكتروني يحتوي على مجال خادم صالح واحد على الأقل
- حاول فرز قائمة خوادم DNS MX حسب تفضيل الخادم قبل طباعتها على وحدة التحكم.
- حاول التحقق مما إذا كان كل عنوان IP لخادم DNS صالحًا واتصل بمنافذ TCP 25 أو 587 أو 465 (منافذ SMTP الشائعة). نصيحة: استخدم dotnet DNS الأصلي استعلام سجل للعثور على 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.