E-posta doğrulamanın mekaniği: Adres formatından sunucu yanıtına
E-posta adresi doğrulaması, bir e-postanın alıcıya hata ile geri dönmemesini garanti eden çok katmanlı bir süreçtir. Bu süreç, söz dizimi analizinden (yazım doğruluğu) başlar, DNS sisteminde alan adının posta sunucularının aranmasıyla devam eder ve kutunun varlığını onaylamak için SMTP protokolü üzerinden bağlantı kurulmasıyla sona erer. Bu aşamalardan herhangi biri başarısız olursa, e-postanın teslim edilmesi imkansız hale gelir.
Bu makalede, her bir doğrulama aşamasının tam olarak nasıl gerçekleştiğini, sürece hangi teknik kayıtların dahil olduğunu ve sunucu yanıtlarının nasıl yorumlanacağını inceleyeceğiz.
Özet: Başarılı teslimat üç faktöre bağlıdır: Doğru adres formatı ([email protected]), alıcı alan adında geçerli MX kayıtlarının bulunması ve posta sunucusunun bağlantıyı kabul etmeye hazır olması.
Doğrulama seviyeleri: Basitten karmaşığa
Doğrulama süreci asla kaotik bir şekilde gerçekleşmez. Sistemler kademeli bir yöntem kullanır: Bir adres ilk seviyedeki kontrolden geçemezse, kaynakları korumak için sonraki adımlar gerçekleştirilmez.
1. Söz dizimsel kontrol (Format Validation)
Bu ilk ve en hızlı filtredir. Adresin RFC 5322 standardına uygunluğu kontrol edilir.
- Neler aranır:
@sembolünün varlığı, boşluk olmaması, yerel kısımda (@öncesinde) ve alan adında izin verilen karakterler. - Yaygın hatalar: Alan adı uzantısında yazım hataları (
.comyerine.con), fazla noktalar, yasaklı sembollerin kullanımı. - Sonuç: Format yanlışsa, doğrulama anında durdurulur.
2. Alan adı ve MX kayıtlarının kontrolü (DNS Lookup)
Format doğruysa, sistem alan adının var olup olmadığını ve postanın nereye gönderileceğini öğrenmek için küresel DNS veritabanına başvurur.
- MX kayıtlarının aranması: Sistem
MX(Mail Exchange) türündeki kayıtları sorgular. Bu kayıtlar, bu alan adı için posta almaktan sorumlu belirli sunucuları işaret eder. - Öncelik: Her kaydın sayısal bir önceliği vardır. Sayı ne kadar küçükse, sunucunun önceliği o kadar yüksektir. Kontrol genellikle en düşük sayılı sunucu üzerinden yapılır.
- Yedek seçenek: MX kaydı yoksa, bazı sistemler doğrudan alan adının
Akaydını kullanmayı dener, ancak bu eski bir uygulama olarak kabul edilir ve sıklıkla hatalara yol açar.
MX kayıtlarının eksikliği kritik bir hatadır. Bir alan adında bu kayıtlar yoksa, o alan üzerindeki web sitesi sorunsuz çalışsa bile teknik olarak e-posta alamaz.
3. Sunucu erişilebilirliğinin kontrolü (SMTP Connection)
Bu aşamada, doğrulayıcı alıcının posta sunucusuyla gerçek bir ağ bağlantısı kurmaya çalışır (genellikle 25, 587 veya 465 numaralı portlar üzerinden).
- El sıkışma (Handshake): Sunucu bir karşılama kodu ile yanıt vermelidir (genellikle
220). - Engellemeler: Birçok modern hizmet, spam bot taramalarına karşı korunmak amacıyla bilinmeyen IP adreslerinden veya bulut tabanlı doğrulayıcılardan gelen gelen bağlantıları engeller. Böyle durumlarda kontrol "geçersiz" yerine "kontrol edilemiyor" (unknown) olarak işaretlenebilir.
SMTP diyaloğunun detayları: Sunucu kutuyu nasıl onaylar?
Doğrulamanın en derin seviyesi, içeriği gerçekten göndermeden e-posta gönderimini taklit etmektir. Buna SMTP Handshake denir. İşte doğrulama servisi (istemci) ile alıcının posta sunucusu arasındaki diyalogun görünümü:
- Karşılama: İstemci kendini tanıtarak
EHLO(veyaHELO) komutunu gönderir. - Gönderenin başlatılması:
MAIL FROM:<[email protected]>komutu. Sunucu, bu gönderenden posta alıp alamayacağını kontrol eder (kara liste kontrolü, SPF). - Alıcı talebi:
RCPT TO:<[email protected]>komutu. Bu kilit noktadır. Sunucu tam olarak burada böyle bir kullanıcının var olup olmadığına karar verir. - Yanıtın analizi:
250 OKkodu — Kutu mevcuttur ve postayı almaya hazırdır.550 5.1.1kodu — Kullanıcı bulunamadı (kutu mevcut değil).4xxkodu — Geçici hata (sunucu aşırı yüklü, daha sonra tekrar deneyin).
- Sonlandırma: Başarı kodu alındığında, istemci e-posta gövdesini (
DATA) göndermedenRSETveyaQUITkomutunu gönderir.
"Catch-all" sorunu: Bazı sunucular, mevcut olmayan isimler için bile herhangi bir RCPT TO isteğine 250 OK yanıtı verecek şekilde yapılandırılmıştır. Bu, kullanıcı gizliliğini korumak için yapılır. Bu gibi durumlarda, gerçek bir e-posta göndermeden belirli bir kutunun kesin doğrulaması teknik olarak imkansızdır.
Sunucu yanıt kodlarının çözülmesi
SMTP durum kodlarını anlamak, abone veritabanı temizliğini doğru şekilde yapılandırmaya yardımcı olur.
| Yanıt Kodu | Anlamı | Eylem |
|---|---|---|
| 250 | Requested mail action okay, completed | Adres geçerli, gönderim yapılabilir. |
| 251 | User not local; will forward | Adres başka bir sunucuya yönlendiriliyor (genellikle geçerli). |
| 421 | Service not available, closing transmission channel | Sunucu geçici olarak kullanılamıyor. Daha sonra tekrar deneyin. |
| 450 / 451 | Temporary local error / Requested action aborted | Geçici hata (sunucu meşgul, karantina). Adresi hemen silmeyin. |
| 550 | Mailbox unavailable / User unknown | Hard Bounce. Adres mevcut değil. Hemen silin. |
| 552 | Message size exceeds fixed limit | Kutu dolu veya e-posta çok büyük. |
| 554 | Transaction failed / Rejected by policy | Güvenlik politikası nedeniyle reddedildi (spam filtreleri, kara liste). |
Pazarlamacılar ve geliştiriciler için pratik öneriler
Gönderen itibarını yüksek tutmak ve iade oranını (bounce rate) düşük tutmak için şu kurallara uyun:
- Çift seviyeli temizlik kullanın: Önce söz dizimi ve MX varlığına göre sıkı filtreleme uygulayın, ardından veritabanının aktif segmentleri için seçici veya tam SMTP doğrulaması yapın.
- "Gri" alanları görmezden gelmeyin: Geçici hatalı (4xx) adresleri hemen silmeyin. 24–48 saat içinde kontrolü tekrarlayın. Hata devam ediyorsa silin.
- Double Opt-In (DOI): Bozuk adreslere karşı en iyi koruma, e-postadaki bir bağlantı üzerinden aboneliğin onaylanmasıdır. Bu, adresin sadece mevcut olmadığını, aynı zamanda sahibinin erişimine açık olduğunu da garanti eder.
- Limitlere saygı gösterin: Veritabanınızı toplu olarak kontrol ederken, IP adresinizin şüpheli aktivite nedeniyle engellenmemesi için aynı alan adına yapılan istekler arasında beklemeler yapın.
Doğrulama sırasında yapılan yaygın hatalar
- Aşırı agresif istek sıklığı: Bir dakikada aynı alan adından 1000 adresi kontrol etmeye çalışmak, IP adresinizin posta sunucusu tarafından engellenmesine neden olur.
Catch-allrolünü görmezden gelmek: Catch-all politikasına sahip alanlardaki tüm adresleri "geçerli" olarak işaretlemek risklidir. Bunları "risk" veya "unknown" olarak işaretlemek ve test e-postası göndererek denemek daha iyidir.- Sadece söz dizimi kontrolü yapmak: Düzenli ifadeler (regex), bir alan adının kayıtlı olup olmadığını veya bir kullanıcının var olup olmadığını söyleyemez. Sadece bunlara güvenmek, yüksek iade oranlarına giden yoldur.
SSS
Bir kutunun var olup olmadığını %100 garantiyle öğrenebilir miyim? Hayır. Güvenlik ayarları (catch-all, gri listeler, doğrulayıcılardan gelen bağlantıların engellenmesi) nedeniyle bazı sunucular belirli kullanıcıların varlığına ilişkin bilgileri kasıtlı olarak gizler.
Doğrulama gelecekteki e-postaların teslimatını etkiler mi? Kendiliğinden, düzgün yapılmış bir doğrulama (oturumu doğru şekilde sonlandırarak) olumsuz etkilemez. Ancak, doğrulayıcınız bir spam botu gibi davranırsa (bekleme olmadan binlerce istek), gönderen alan adı kara listeye alınabilir.
Web sitesi çalışıyorken neden MX kayıtlarını kontrol edelim? Web sitesi bir web sunucusunda (A kaydı), e-posta ise bir posta sunucusunda (MX kaydı) barındırılır. Bunlar tamamen farklı makineler ve hatta farklı sağlayıcılar olabilir. Çalışan bir web sitesi, e-posta hizmetinin de çalıştığını garanti etmez.
Soft Bounce ve Hard Bounce nedir?
- Hard Bounce (5xx): Kalıcı hata (mevcut olmayan adres). Acil silme gerektirir.
- Soft Bounce (4xx): Geçici sorun (dolu kutu, ağ arızası). Daha sonra yeniden deneme gerektirir.