C# Pencarian server DNS MX asli (tanpa ketergantungan)
Konteks
Terkadang kami perlu memeriksa apakah email memiliki domain yang valid dan apakah domain ini memiliki data MX yang dikonfigurasi dengan baik.
Ini dapat digunakan untuk banyak proposal seperti validasi email sebelum pengiriman formulir, menghindari rasio pentalan sebelum mengirim email ke AWS SES, SendGrid atau penyedia email lainnya, membersihkan database CRM lama dengan validasi utama, dll.
Apa yang dilakukan aplikasi ini?
Aplikasi menanyakan email apa yang ingin Anda verifikasi data MX
Kemudian, ia menjalankan pencarian DNS MX dan menampilkan semua server email dengan preferensi server masing-masing (prioritas)
Alfer all, menanyakan apakah Anda ingin menjalankan kembali aplikasi atau ingin keluar dari program
Tumpukan dan topik utama dalam proyek ini
Aplikasi konsol .NET 6.0
- C#
- Komunikasi protokol UDP
- Input, output, dan pembersihan konsol
- Penggunaan standar protokol DNS MX
Buruh pelabuhan
- membangun buruh pelabuhan
- menjalankan buruh pelabuhan
- interaksi bash wadah buruh pelabuhan (dari shell host buruh pelabuhan)
Tentang Penulis dan lisensi
- Erick adalah Pengembang dan Arsitek Backend Senior.
- Anda dapat menghubungi Erick melalui email [email protected] atau Linkedin https://www.linkedin.com/in/seixaserick/
- Repositori Github Lainnya: https://github.com/seixaserick/
- Lisensi MIT (silakan periksa LICENSE.txt untuk lebih jelasnya)
Bagaimana menjalankan proyek ini
Kloning repositori
Jika Anda sudah menginstal Git untuk Windows, jalankan perintah di bawah ini:
git clone https://github.com/seixaserick/dotnet-dns-mx-lookup
cd dotnet-dns-mx-lookup
Cara menjalankan proyek ini di container Docker
Jika Anda sudah menginstal Docker Desktop, cukup ikuti langkah-langkah di bawah ini
Membuat gambar buruh pelabuhan
Untuk membuat image Docker, jalankan baris perintah di bawah ini pada prompt perintah direktori proyek:
docker build -t dotnet-dns-mx-lookup -f Dockerfile .
Menjalankan aplikasi dalam wadah buruh pelabuhan
Untuk menjalankan image di container Docker dan berinteraksi dengannya, jalankan baris perintah di bawah ini:
docker run -it --name=dotnet-dns-mx-lookup --restart=unless-stopped dotnet-dns-mx-lookup
Untuk menghentikan container, jalankan baris perintah di bawah ini:
docker stop dotnet-dns-mx-lookup
Untuk menghapus container (walaupun sedang berjalan), jalankan baris perintah di bawah ini:
docker rm --force dotnet-dns-mx-lookup
Cara membangun dan menjalankan tanpa Docker (Windows)
Setelah mengkloning repositori Anda dapat membuka proyek dengan Visual Studio. Bangun atau debug saja dengan menekan F5
.
Untuk mengkompilasi dan menjalankannya di Windows (diperlukan Visual Studio)
Buka file solusi dotnet-dns-mx-lookup.sln
dengan Visual Studio Anda, lalu tekan F5
untuk menjalankan proyek!
Kesimpulan
- Protokol DNS menggunakan protokol UPD port 53
- Domain email saya memiliki lebih dari satu data MX dan Anda harus berkomunikasi dengan server prioritas tinggi
- Aplikasi Dotnet (konsol atau bukan) dapat berjalan di OS Linux atau Windows.
- Docker adalah alat yang bagus untuk menjalankan proyek dengan cepat tanpa mengkhawatirkan ketergantungan dan konfigurasi.
- C# sangat mirip dengan bahasa berbasis ECMA lainnya (Java, Javascript, dll.)
- Aplikasi konsol sederhana dan mudah untuk memasukkan dan mengeluarkan data.
- File README.md Markdown yang bagus dapat membantu pengembang lain untuk memahami, mengkloning, menjalankan, dan menguji proyek.
Tantangan pekerjaan rumah
- Cobalah untuk menerapkan fungsi validasi email untuk mengembalikan nilai true jika email memiliki setidaknya satu domain server yang valid
- Cobalah untuk mengurutkan daftar server DNS MX berdasarkan preferensi server sebelum mencetaknya di konsol.
- Coba periksa apakah setiap IP server DNS valid dan hubungi port TCP 25, 587, atau 465 (port SMTP umum). Tip: Gunakan DNS dotnet asli. Permintaan rekaman untuk menemukan IP server (IPv4 atau IPv6) https://docs.microsoft.com/en-us/dotnet/api/system.net.dns?view=net-6.0
- Periksa kodenya, tambah batas waktu permintaan DNS dan paksakan pemutusan jaringan antara satu pencarian server DNS (cabut kartu ethernet dan wi-fi Anda) untuk melihat apa yang terjadi. Cobalah untuk menerapkan penanganan kesalahan untuk kesalahan batas waktu. Anda dapat menyimulasikan kegagalan DNS primer dan DNS sekunder yang mengembalikan kueri (setelah menyambungkan kembali jaringan Anda).
- Periksa konten Dockerfile untuk melihat bagaimana buruh pelabuhan menarik gambar dari hub gambar
- Cobalah membuat WebAPI dan terapkan titik akhir untuk memeriksa apakah email valid (https://my-api-server.com/api/[email protected]). Anda dapat menggunakan ini di situs web Anda untuk mencegah email palsu (dengan domain tidak valid) menghubungi Anda melalui pengiriman formulir.
- Coba terapkan CACHE data MX domain menggunakan cache memori dotnet asli atau cache terdistribusi REDIS.