Uygulamanda yeni üye olan bir kullanıcıya "E-posta adresini doğrula" mesajı veya "Şifremi Unuttum" linki gönderirken kod tarafında yaptığın şey çok basittir: resend.emails.send() ya da nodemailer.sendMail() fonksiyonunu çağırırsın ve 2 saniye sonra kullanıcının telefonuna bildirim düşer.
Peki sen o fonksiyonu çağırdığın salisede arka planda ne oluyor? İnternetin en eski ve en sağlam dağıtık mimarilerinden biri olan SMTP nasıl çalışıyor ve gönderdiğin maillerin Spam (Gereksiz) kutusuna düşmemesi için hangi 3 kriptografik DNS kaydını ayarlamak zorundasın?
1. SMTP (Simple Mail Transfer Protocol) Nedir?
İlk kez 1982 yılında (RFC 821) standartlaştırılan SMTP (Basit Posta Aktarım Protokolü), internet dünyasının posta kuryesidir.
Burada en sık karıştırılan temel kural şudur: SMTP sadece e-posta göndermek ve sunucular arasında taşımak (push) için kullanılır; gelen kutusundaki mailleri okumak için kullanılmaz!
- SMTP (Port
587TLS /465SSL /25Relay): E-postayı göndericiden alıp alıcının posta sunucusuna kadar teslim eden kurye protokolüdür. - IMAP (Port
993): Karşı sunucuya ulaşmış olan e-postaları telefonunda, bilgisayarında ve web tarayıcında senkronize şekilde okumanı sağlayan protokoldür. - POP3 (Port
995): E-postayı sunucudan tek bir cihaza indirip sunucudan silen eski tip okuma protokolüdür.
2. Bir E-Postanın 4 Adımlı Yolculuğu (DNS MX Kayıtları)
Diyelim ki kendi sunucundan ([email protected]), [email protected] adresine bir e-posta gönderdin. Arka planda saniyeler içinde şu 4 adım gerçekleşir:
[1. Backend API] ──(SMTP :587)──▶ [2. Gönderici Posta Sunucusu (AWS SES / Resend)]
│
(DNS Sorgusu: "gmail.com'un MX kaydı nedir?")
│
▼
[4. Kullanıcının Telefonu] ◀──(IMAP :993)── [3. Gmail Gelen MX Sunucusu (Port :25)]- Teslimat (Submission): Senin Node.js, PHP, Go veya .NET backend'in 587 numaralı port üzerinden şifreli (STARTTLS) olarak kendi posta gönderim servisine (AWS SES, Resend, Postmark veya kendi Postfix sunucuna) bağlanır ve mektubu verir.
- DNS
MX(Mail Exchange) Sorgusu: Gönderici sunucun e-postayı nereye götüreceğini bilmez. Hemen DNS'e sorar: "Hey DNS,gmail.comalan adının postalarını hangi sunucu kabul ediyor?" DNS, o alan adının MX kaydını (gmail-smtp-in.l.google.com) döner. - Sunucudan Sunucuya Aktarım (SMTP Relay): Gönderici sunucun, Gmail'in MX sunucusuyla iletişime geçer ve klasik SMTP diyaloğunu başlatır (
EHLO,MAIL FROM,RCPT TO,DATA). - Gelen Kutusuna Düşüş (IMAP): Gmail güvenlik kontrollerini yaptıktan sonra e-postayı kullanıcının kutusuna bırakır; kullanıcının telefonundaki mail uygulaması da IMAP protokolüyle bu mesajı ekranda gösterir.
3. Gönderdiğin E-Postalar Neden Spam'e Düşer? (SPF, DKIM ve DMARC)
1982 yılında tasarlanan saf SMTP protokolünde hiçbir kimlik doğrulama yoktu; yani isteyen herkes kendi bilgisayarından MAIL FROM: <[email protected]> yazarak başkasının adına sahte e-posta gönderebiliyordu!
Bugün Gmail, Outlook ve Apple Mail; sahte e-postaları (Spoofing / Phishing) engellemek için alan adının DNS ayarlarında şu 3 güvenlik kaydını zorunlu tutar:
1. SPF (Sender Policy Framework)
Alan adının DNS ayarlarına eklediğin bir TXT kaydıdır. Dünyaya şunu ilan eder: "Benim @czay.dev alan adımdan sadece şu IP adresleri ve şu servisler (ör. AWS SES, Google Workspace) mail atabilir; bunun dışındaki sunuculardan gelen mailler sahtedir!"
2. DKIM (DomainKeys Identified Mail)
Sunucundan çıkan her e-postanın başlığına (DKIM-Signature), senin özel anahtarınla (Private Key) üretilmiş kriptografik bir dijital imza ekler. Alıcı sunucu (Gmail), senin DNS'teki açık anahtarını (Public Key) okuyarak bu imzayı doğrular ve e-postanın yolda değiştirilmediğinden emin olur.
3. DMARC (Domain-based Message Authentication, Reporting & Conformance)
Alıcı sunucuya şunu söyler: "Eğer benden geldiğini iddia eden bir e-posta SPF veya DKIM testinden geçemezse onu doğrudan çöpe at (p=reject) veya Spam kutusuna gönder (p=quarantine) ve bana raporla!"
Uyarı: Backend Mimari Kuralı: HTTP İsteği İçinde Senkron Mail Gönderme!
Bir SMTP sunucusuna bağlanıp mail göndermek ortalama 300ms ile 1.500ms arasında sürer. Kullanıcı "Kayıt Ol" veya "Sipariş Ver" butonuna bastığında, API uç noktasının içinde await sendEmail() diyerek kullanıcıyı bekletmek büyük bir mimari hatadır! Mail gönderim işini her zaman RabbitMQ veya BullMQ (Redis) gibi bir asenkron arka plan kuyruğuna (Background Job) bırak; API'n kullanıcıya 10 milisaniyede cevap dönsün, maili arka plandaki Worker göndersin.
İlgili Kısa Video & Kaynaklar
İnteraktif Yol Haritası & Araç
Junior Backend Developer 2026
2026'da junior backend pozisyonuna girmek isteyen biri gerçekten neyi bilmeli, neyi sonraya bırakabilir — ilanlardaki buzzword tuzaklarını ayıklayarak.
SQL mi NoSQL mi?
Altı soruya cevap ver, projene hangi tür veritabanının uyduğunu ve nedenini söyleyeyim.
Bunu da oku
- CZTRDokku Nedir? Ayda 200$ Bulut Faturasını 5$ Sunucuya Düşüren Açık Kaynak PaaS Mimarisi
Dokku Nedir? Ayda 200$ Bulut Faturasını 5$ Sunucuya Düşüren Açık Kaynak PaaS Mimarisi
25 Ekim 2026 · 5 dk okuma - CZTROrtalık Çok Karışık: Backend Geliştirmeye Başlarken Hangi Dil ve Framework Seçilmeli? (2026 Karar Rehberi)
Ortalık Çok Karışık: Backend Geliştirmeye Başlarken Hangi Dil ve Framework Seçilmeli? (2026 Karar Rehberi)
25 Ekim 2026 · 5 dk okuma