Postmark + Spam Önleme Stratejisi
Bu doküman başka AI sistemlerine danışılabilir formattadır
Spam neden oluyor? Gmail, Outlook gibi servisler gelen mailleri "güvenilir mi?" diye kontrol ediyor. Eğer gönderen kimliğini kanıtlayamazsa → spam.
Nasıl önlenir? 3 şey lazım: (1) Güvenilir bir mail servisi, (2) DNS kayıtları ile kimlik doğrulama, (3) Doğru içerik formatı.
Postmark neden iyi? Sadece "iş mailleri" (şifre sıfırlama, fatura vs.) kabul ediyor. Reklam maili yok = IP'leri temiz = spam'e düşmez.
"Bu domain adına kim mail gönderebilir?" sorusunun cevabı
Postmark bunu otomatik sağlıyor
"Bu mail gerçekten bu domain'den mi geldi?" doğrulaması
Postmark her maili otomatik imzalıyor
"SPF/DKIM başarısız olursa ne yapılsın?" talimatı
"Teslim edilemeyen mailler nereye dönsün?" adresi
Postmark bounce'ları otomatik yönetiyor
"Gönderen IP adresi güvenilir mi?" kontrolü
# PROJE BİLGİLERİ Framework: Laravel 11.x PHP: 8.2+ Queue System: Redis + Laravel Horizon Server: Plesk (Linux) Domain: muzibu.com Proje Tipi: Müzik streaming platformu (SaaS) # MEVCUT MAIL YAPILANDIRMASI MAIL_MAILER=smtp MAIL_HOST=127.0.0.1 (Gmail SMTP relay) MAIL_PORT=587 MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=noreply@muzibu.com # SORUNLAR 1. Gmail SMTP sık sık timeout veriyor 2. Bazı mailler spam'e düşüyor 3. Günlük limit (500 mail) yetersiz 4. Delivery tracking yok 5. Bounce handling manuel # MAİL TİPLERİ VE KRİTİKLİK SEVİYESİ ┌─────────────────────────┬────────────┬─────────────────────┬─────────────────┐ │ Mail Tipi │ Kritiklik │ Gecikme Toleransı │ Spam Riski │ ├─────────────────────────┼────────────┼─────────────────────┼─────────────────┤ │ TwoFactorCodeMail │ 🔴 Kritik │ < 30 saniye │ Düşük │ │ VerifyEmailMail │ 🔴 Kritik │ < 1 dakika │ Orta (link var) │ │ NewDeviceLoginMail │ 🔴 Kritik │ < 1 dakika │ Düşük │ │ PaymentSuccessMail │ 🟠 Yüksek │ < 5 dakika │ Orta (fiyat var)│ │ PaymentFailedMail │ 🟠 Yüksek │ < 5 dakika │ Düşük │ │ WelcomeMail │ 🟡 Normal │ < 15 dakika │ Yüksek (tanıtım)│ │ TrialEndingMail │ 🟡 Normal │ < 1 saat │ Yüksek (satış) │ │ SubscriptionRenewalMail │ 🟡 Normal │ < 1 saat │ Orta │ │ CorporateInviteMail │ 🟡 Normal │ < 1 saat │ Orta (link var) │ │ Career Mailleri (5) │ 🟢 Düşük │ < 24 saat │ Düşük │ └─────────────────────────┴────────────┴─────────────────────┴─────────────────┘ # DOSYA YAPISI Modules/Mail/App/Services/MailService.php → Merkezi mail servisi Modules/Mail/App/Mail/*.php → 8 Mailable sınıfı Modules/Mail/resources/views/emails/*.php → 8 Blade template Modules/Career/App/Mail/*.php → 5 Mailable (iş başvuru) Modules/Shop/resources/views/emails/*.php → 2 Template (teklif) config/mail.php → Laravel mail config # QUEUE YAPISI Tüm mailler: Mail::to($user)->queue(new XxxMail()) Queue driver: Redis Worker: Laravel Horizon (3 worker, low/default/high) Retry: 3 kez, exponential backoff Failed jobs: database table # GEREKSİNİMLER 1. %99+ inbox deliverability (spam'e düşmemeli!) 2. SPF, DKIM, DMARC tam uyumlu 3. Kolay Laravel entegrasyonu (native driver tercih) 4. Webhook desteği (bounce, delivered, opened, clicked) 5. Aylık ~5.000-10.000 mail kapasitesi 6. Türkçe karakter desteği (UTF-8) 7. HTML mail template desteği 8. Queue/async gönderim uyumu # DNS MEVCUT DURUM (Plesk) SPF: Yok veya eksik DKIM: Yok DMARC: Yok MX: Plesk varsayılan # ÖNERİLEN ÇÖZÜM Servis: Postmark ($15/ay - 10K mail) Neden: - Sadece transactional = temiz IP reputation - Laravel 11 native driver (config/mail.php'de zaten var) - Otomatik DKIM imzalama - Bounce/complaint otomatik yönetim - %99+ deliverability garantisi
| Servis | Inbox Rate | IP Reputation | DKIM | Bounce Mgmt | Spam Score |
|---|---|---|---|---|---|
| Postmark | %99+ | Mükemmel | Otomatik | Otomatik | Pre-check |
| Resend | %98 | İyi | Otomatik | Otomatik | Yok |
| SendGrid | %95 | Değişken* | Manuel | Var | Yok |
| Gmail SMTP | %80-85 | Kötü | Yok | Yok | Yok |
* SendGrid marketing mail de kabul ettiği için IP reputation dalgalanabiliyor
v=spf1 include:spf.mtasv.net ~all
pm._domainkey → TXT → (Postmark verecek)
_dmarc → TXT → v=DMARC1; p=quarantine
pm-bounces → CNAME → pm.mtasv.net
Tüm planlarda: %99+ deliverability, webhook, analytics, 45 gün log, dedicated IP