Eski Listeyi Yeniden Etkinleştirirken Spam Tuzağına Düşmemek: Saha Kılavuzu
12 ay dokunulmamış bir liste temizlenecek bir varlık değil, patlamaya hazır bir mayın tarlasıdır. Recycled spam tuzaklarının neden doğrulamayı atlattığını ve reputation'ınızı korumak için segmentasyondan sunset politikasına kadar katmanlı savunmayı komut ve eşik değerleriyle anlatıyoruz.
EvilMail Team15 Temmuz 202611 dk okuma
12 ay dokunulmamış bir liste, temizlenmesi gereken bir varlık değildir; patlamaya hazır bir mayın tarlasıdır. Sorun sandığınız yerde değil. Herkes düşük açılma oranından korkar, oysa sizi vuran şey açılmayan mailler değil, listenizde sessizce duran birkaç yüz recycled spam tuzağıdır.
Mekanizma şu: bir zamanlar gerçek bir insana ait olan adres terk edilir, kutu kapanır. Adres 6-12 ay boyunca 550 user unknown döndürür ve Spamhaus, Microsoft, Gmail gibi operatörler bu sessizliği sayar. Eşiği geçince operatör adresi sessizce yeniden "kabul eder" hale getirir ve bir tuzağa çevirir. Kutu artık mektubu alır, ama okuyan kimse yoktur. O andan sonra bu adrese giden her mektup "bu gönderici, kimsenin okumadığı eski bir listeyi ısıtıyor" sinyalidir. Tek bir kampanyada IP ve domain reputation'ınız çöker; teslim edilebilirlik günlerce, bazen haftalarca yerde kalır.
Bu makale, "listeyi kurtarma" hevesini mühendislik disiplinine çeviren bir saha kılavuzudur. Komutlar, eşik değerleri, DNS kayıtları var; boş cesaretlendirme yok.
Hangi tuzak sizi vurur: pristine, recycled ve typo
Üç tür spam tuzağı var ve savunmaları birbirinden tamamen farklı.
Pristine (bakir) tuzaklar hiç var olmamış, gerçek bir kullanıcının hiçbir zaman sahip olmadığı adreslerdir. Operatörler bunları web'e honeypot olarak serper. Bir adres bu tuzaklardan birine ulaşıyorsa, o adresi asla meşru bir opt-in ile toplamadınız demektir. Pristine tuzaklar neredeyse yalnızca
satın alınmış ya da scrape edilmiş listelerde
görünür. Kendi organik listenizde çıkıyorsa, form güvenliğiniz ele geçirilmiş demektir.
Recycled (geri dönüştürülmüş) tuzaklar eski listelerin baş belasıdır ve bu makalenin asıl konusudur. Bir zamanlar gerçekti. Kullanıcı gerçekten kaydoldu, gerçekten açtı. Sonra işi bıraktı, adresi terk etti, kutu kapandı. Dormancy penceresi (sessizlik dönemi) boyunca operatör bounce'ları sayar; eşiği geçince adresi tuzağa çevirir. Sizin veritabanınızda o satır hâlâ status = 'subscribed' olarak duruyor. 18 ay önce meşru olan bir kayıt, bugün doğrudan blocklist tetikliyor.
Typo tuzakları ise gmial.com, hotnail.com, yaho.com gibi yaygın yazım hatalarıdır. Operatörler bu domainleri kaydedip tuzağa dönüştürür. Bu tamamen bir form hijyeni sorunudur: kayıt anında domain doğrulaması ve "bunu mu demek istediniz?" düzeltmesi yapmıyorsanız listenize sızarlar.
Kritik nokta, çoğu ekibin kaçırdığı yer şu: doğrulama recycled tuzağı YAKALAYAMAZ. Çünkü MX kaydı canlıdır, SMTP sunucusu RCPT TO komutuna 250 OK döndürür. Sözdizimi geçerli, domain çözülüyor, kutu "var". Doğrulama aracının gördüğü her sinyal yeşil. Arkada mektubu okuyan bir operatör olduğunu SMTP el sıkışmasından anlamanın hiçbir yolu yok. Recycled tuzağı ayırt eden tek sinyal SMTP katmanında değil, sizin kendi veritabanınızdadır: geçmiş etkileşim verisi.
Göndermeden önce: son etkileşim penceresiyle segmentasyon
Yeniden etkinleştirmeye göndererek değil, keserek başlanır. Elinizdeki listeyi son açılma/tıklama tarihine göre kohortlara ayırın:
0-90 gün — aktif. Zaten sizinle konuşuyorlar, riskin düşük olduğu grup.
90-180 gün — soğuyan. Re-engagement'ın asıl hedef kitlesi.
180-365 gün — riskli. Dikkatli, küçük partiler halinde.
365+ gün — varsayılan olarak suppress. Aksini kanıtlayana kadar bu segment gönderim adayı değildir.
365+ segmentinde ayrım hayati: sadece son 12 ay içinde en az bir etkileşim sinyali (açılma, tıklama, giriş, satın alma) olanları aday yapın. Hiçbir etkileşimi olmayan eski adresler, recycled tuzak olasılığının en yüksek olduğu gruptur ve doğrudan karantinaya gider.
sql
-- Yeniden etkinleştirme adayları: eski AMA en az bir taze sinyali var
SELECT email
FROM subscribers
WHERE last_engaged_at >= NOW() - INTERVAL '365 days'
AND status = 'subscribed'
AND email NOT IN (SELECT email FROM suppression_list);
-- 365+ gün HİÇ engagement yok = aday DEĞİL, doğrudan suppress
UPDATE subscribers
SET status = 'suppressed', suppressed_reason = 'dormant_365'
WHERE last_engaged_at < NOW() - INTERVAL '365 days'
OR last_engaged_at IS NULL;
last_engaged_at IS NULL koşulunu atlarsanız, hiç etkileşmemiş en tehlikeli kohortu kampanyanıza sokarsınız. O NULL'lar sizin mayınlarınız.
Doğrulama katmanı: gerekli ama asla yeterli değil
Segmentasyondan sonra doğrulama gelir, ama ne yaptığını net bilerek. Doğrulama üç aşamalı bir elemedir:
Syntax (regex) — bozuk formatı eler. Ucuz, hızlı, ilk kapı.
MX lookup — domainin mail kabul edip etmediğini kontrol eder. dig MX example.com +short boş dönerse adres ölü.
SMTP RCPT probe — sunucuya bağlanıp RCPT TO ile kutunun varlığını sorar.
bash
# Domain gerçekten mail alıyor mu?
dig +short MX example.com
# En düşük öncelikli (birincil) MX'i seç — sort -n ŞART, aksi halde "10" < "5"
mx=$(dig +short MX example.com | sort -n | head -1 | awk '{print $2}')
# RCPT probe (kutu var mı) — catch-all olmayan domainlerde anlamlı
swaks --to [email protected] --server "$mx" --quit-after RCPT
Kickbox, ZeroBounce, Emailable gibi üçüncü parti doğrulayıcılar bir de "spam-trap flag" özelliği sunar; bilinen tuzak veritabanlarıyla eşleştirir. İşe yarar ama recycled tuzağı garanti yakalamaz — çünkü yeni dönüştürülmüş bir tuzak henüz kimsenin listesinde olmayabilir.
İki büyük sınır var. Birincisi catch-all domainler: bunlar RCPT TO'da her adrese 250 döner, dolayısıyla kutunun gerçekten var olup olmadığı doğrulanamaz — bu adresleri ayrı bir risk kovasına atın. İkincisi, tekrar altını çiziyorum: doğrulama bounce'u düşürür, tuzağı kaldırmaz. Recycled tuzak SMTP'de tertemiz görünür. Bu yüzden doğrulama asla tek savunma katmanı olamaz.
Altyapıyı izole et: ayrı subdomain, SPF/DKIM/DMARC ve warmup
Re-engagement trafiği riskli trafiktir. Ana gönderim domaininizin reputation'ını bu riske kurban etmeyin. mail.evilmail.pro yerine ayrı bir subdomain kullanın: reengage.evilmail.pro, kendi DKIM selector'ı ile. Bu subdomain çökerse ana domaininiz sağlam kalır.
Yeni subdomain için hizalanmış (aligned) kimlik doğrulama zorunlu. 2024'te yürürlüğe giren Gmail/Yahoo toplu gönderici kuralları SPF ve DKIM ve DMARC hizasını, geçerli PTR/rDNS kaydını ve one-click unsubscribe'ı şart koşuyor:
Yeni subdomain = sıfır reputation. Sıfır reputation'la yüksek hacim atarsanız spam klasörüne düşersiniz. Warmup şart.
Kontrollü gönderim: kademeli ramp ve seed testi
Warmup rampası basit ama disiplin ister: gün 1'de 50 mail, ardından metrikler stabil kaldıkça her gün yaklaşık iki katına çıkın (50 → 100 → 200 → 400 → 800...). Complaint ya da bounce yükselirse artırma; o düzeyde sabit kal ve normale dönene kadar bekle.
Sıralama kritik: en sıcak segmentle (0-90 gün) başlayın. Bu grup açar, tıklar; mailbox operatörüne "bu gönderici isteniyor" pozitif sinyali biriktirirsiniz. Ancak bu itibar tamponunu kurduktan sonra soğuk kohortlara geçin. Ters yaparsanız, itibarınız yokken en riskli adreslere atmış olursunuz.
Her gönderim dalgasından önce bir seed listesiyle inbox placement ölçün: kendi test kutularınız artı Gmail, Outlook ve Yahoo hesapları. Nereye düştüğünüzü (inbox / promosyon / spam) böyle görürsünüz.
Tek ve net bir CTA kullanın: "Hâlâ bizden haber almak istiyor musun?" Bu bir çift-opt-in yeniden onaydır. Tıklayan aktif listeye döner; tıklamayan sunset'e gider. Kampanyayı ürün tanıtımına çevirmeyin — amaç satış değil, hangi adresin canlı ve istekli olduğunu öğrenmek.
İzleme ve durdurma tetikleyicileri
Gönderim başladığı an gözlerinizi paneldan ayırmayın. Reputation tek bir kampanyada çöker ve toparlanması günler alır; erken durmak her şeydir.
Google Postmaster Tools — spam rate hedefi %0.10'un altı. Kırmızı çizgi %0.30; buna yaklaşıyorsanız Gmail'e giden trafiği kısın.
Microsoft SNDS + JMRP — Outlook/Hotmail için IP verisi ve şikayet feedback loop'u. Yeşilden sarıya döndüğü an segment fazla soğuk demektir.
Hard bounce > %2 — durdur. Bu, listenizde ölü/dönüştürülmüş adreslerin biriktiğinin en net işaretidir.
Complaint oranı > %0.1 — segment fazla soğuk; kohortu daraltın.
Blocklist'leri de aktif izleyin. Ters çevrilmiş IP ile DNSBL sorgusu:
bash
# 203.0.113.10 için Spamhaus ZEN kontrolü (IP ters yazılır)
dig +short 210.69.22.212.zen.spamhaus.org
# 127.0.0.x döndü = listede. Boş = temiz.
127.0.0.2 / .3 (SBL/CSS) ya da .4-.7 (XBL/PBL) döndüyse, kampanyayı o an durdurun ve kaynağı bulun. Reputation düştüğünde refleks hep aynıdır: gönderimi durdur, kohortu daralt, en sıcak segmente geri çekil. Hacmi asla artırarak "içinden geçmeye" çalışmayın.
Sunset politikası ve operasyonel checklist
Kalıcı kural: 365 gün etkileşimsiz kalan her adres otomatik suppress. Bunu bir cron job'a bağlayın, elle karar vermeyi bırakın. Re-engagement kampanyasına yanıt vermeyen adresi ikinci kez zorlamayın — o adres ya ölü ya da bir tuzak, iki durumda da size sadece zarar verir.
Uygulanabilir sıra:
Kes — 0-90 / 90-180 / 180-365 / 365+ kohortlarına ayır; last_engaged_at IS NULL olanları doğrudan suppress et.
Doğrula — syntax → MX → SMTP; catch-all'ları ayrı kovaya al. Bunun tuzağı kaldırmadığını unutma.
İzole et — reengage.evilmail.pro subdomaini, ayrı DKIM selector, SPF/DKIM/DMARC hizası, one-click unsubscribe.
Warmup — gün 1'de 50, metrikler stabilse günlük ~2x; en sıcak segmentle başla.
Seed test et — Gmail/Outlook/Yahoo kutularında inbox placement ölç.
İzle — Postmaster spam < %0.10, hard bounce < %2, complaint < %0.1; eşiği geçince DUR.
Sunset — yanıt yoksa suppress, tekrar zorlama.
Bir eski listeyi kurtaramazsınız; sadece içindeki hâlâ canlı olanları geri kazanır, gerisini disiplinle gömer ve reputation'ınızı ayakta tutarsınız. Adayı belirleyen SMTP değil, sizin son 365 günlük etkileşim verinizdir — kohortu bugün oradan çıkarın.