· Geliştirme  · 4 min read

Geçici E-posta Adreslerini Nasıl Tespit Edersiniz: Kapsamlı Rehber

Uygulamanızda geçici e-posta adreslerini tespit etmek için en etkili yöntemleri ve teknikleri keşfedin, dolandırıcılığı önleyin ve veri kalitesini koruyun.

Geçici E-postaları Tespit Etmek Neden Önemlidir

Geçici e-posta adresleri platformunuzun veri kalitesini, güvenliğini ve karlılığını önemli ölçüde etkileyebilir. İster bir SaaS uygulaması, e-ticaret sitesi veya topluluk platformu geliştiriyor olun, uygun e-posta doğrulaması uygulamak şunlar için kritik öneme sahiptir:

  • Dolandırıcılığı önleme - Kullanıcıların birden fazla sahte hesap oluşturmasını engelleme
  • Veri kalitesini iyileştirme - Temiz, eyleme dönüştürülebilir kullanıcı veritabanları sürdürme
  • Maliyetleri azaltma - Sahte veya geçici kullanıcılara kaynak israfını önleme
  • Güvenliği artırma - Otomatik kötüye kullanım ve bot kayıtlarına karşı koruma

Geçici E-postaları Tespit Etme Yöntemleri

1. Domain Kara Liste Yaklaşımı

En yaygın yöntem, bilinen geçici e-posta domainlerinin bir veritabanını sürdürmeyi içerir.

Artıları:

  • Hızlı ve verimli
  • Düşük hesaplama yükü
  • Bilinen domainler için yüksek doğruluk

Eksileri:

  • Sürekli güncelleme gerektirir
  • Her gün yeni geçici hizmetler ortaya çıkıyor
  • Listeyi sürdürmek zaman alıcı

Uygulama Örneği:

const disposableDomains = [
  'guerrillamail.com',
  'mailinator.com',
  '10minutemail.com',
  // ... binlerce daha
];

function isDisposable(email) {
  const domain = email.split('@')[1].toLowerCase();
  return disposableDomains.includes(domain);
}

2. Desen Tanıma

Bazı geçici e-posta hizmetleri, domain adlarında veya e-posta formatlarında öngörülebilir desenler izler.

Tespit edilecek yaygın desenler:

  • Sayılarla domainler: mail123.com, temp456.net
  • Genel anahtar kelimeler: tempmail., throwaway., guerrilla
  • Kısa domainler: a.com gibi tek harfli domainler
  • Yeni kayıtlı domainler

Uygulama Örneği:

function hasDisposablePattern(email) {
  const domain = email.split('@')[1].toLowerCase();

  const suspiciousPatterns = [
    /temp.*mail/i,
    /trash.*mail/i,
    /throw.*away/i,
    /\d{3,}/,  // Birden fazla rakam
    /^[a-z]\.com$/,  // Tek harfli domainler
  ];

  return suspiciousPatterns.some(pattern => pattern.test(domain));
}

3. MX Kaydı Doğrulama

Domainin geçerli MX (Mail Exchange) kayıtlarının yapılandırılıp yapılandırılmadığını kontrol edin. Birçok geçici hizmetin olağandışı MX yapılandırmaları vardır.

Uygulama Örneği:

const dns = require('dns').promises;

async function verifyMXRecords(domain) {
  try {
    const addresses = await dns.resolveMx(domain);

    // MX kayıtlarının var olup olmadığını kontrol et
    if (!addresses || addresses.length === 0) {
      return { valid: false, reason: 'MX kaydı yok' };
    }

    // Şüpheli MX desenlerini kontrol et
    const suspiciousMX = addresses.some(mx =>
      /mailinator|guerrilla|temp/i.test(mx.exchange)
    );

    return {
      valid: !suspiciousMX,
      reason: suspiciousMX ? 'Şüpheli MX kayıtları' : 'Geçerli'
    };
  } catch (error) {
    return { valid: false, reason: 'DNS sorgusu başarısız' };
  }
}

4. API Tabanlı Tespit

Güncellenmiş bir veritabanını sürdüren ve birden fazla kontrol gerçekleştiren özel bir e-posta doğrulama API’si kullanın.

Faydaları:

  • Her zaman güncel veritabanı
  • Birden fazla tespit yöntemi birleştirilmiş
  • Bakım yükü yok
  • Hızlı yanıt süreleri (genellikle <100ms)

Uygulama Örneği:

async function verifyEmail(email) {
  const response = await fetch(
    `https://api.getemailverifier.com/v1/verify?email=${encodeURIComponent(email)}`,
    {
      headers: {
        'Authorization': `Bearer ${YOUR_API_KEY}`
      }
    }
  );

  const data = await response.json();

  return {
    isDisposable: data.disposable,
    isValid: data.valid,
    riskScore: data.risk_score,
    details: data.details
  };
}

Uygulama İçin En İyi Pratikler

1. Gerçek Zamanlı Doğrulama

E-postaları kayıt işlemi sırasında doğrulayın, sonrasında değil:

// Kullanıcı kaydı sırasında
app.post('/api/register', async (req, res) => {
  const { email, password } = req.body;

  // Önce e-postayı doğrula
  const verification = await verifyEmail(email);

  if (verification.isDisposable) {
    return res.status(400).json({
      error: 'Lütfen kalıcı bir e-posta adresi kullanın'
    });
  }

  // Kayda devam et...
});

2. Nazik Kullanıcı Deneyimi

Sadece kullanıcıları engellemekle kalmayın - yardımcı geri bildirim sağlayın:

function handleDisposableEmail(email) {
  return {
    success: false,
    message: 'Geçici bir e-posta adresi kullandığınızı fark ettik. ' +
             'Hesabınızı kurtarabilmeniz ve önemli güncellemeleri ' +
             'alabilmeniz için lütfen kalıcı bir e-posta kullanın.',
    suggestions: [
      'Kişisel e-postanızı kullanın (Gmail, Outlook, vb.)',
      'İş e-postanızı kullanın',
      'Gizlilik konusunda endişeleriniz varsa destek ile iletişime geçin'
    ]
  };
}

Kaçınılması Gereken Yaygın Hatalar

1. Çok Agresif Engelleme

Şüpheli görünen her e-postayı engellemeyin. Bazı yasal domainler yanlış pozitifleri tetikleyebilir.

2. Kullanıcı Geri Bildirimini Göz Ardı Etme

E-postalarının yanlış işaretlendiğine inanan kullanıcıların itiraz etmesine izin verin.

3. Kötü Hata Mesajları

Genel “Geçersiz e-posta” hatalarıyla değil, net ve eyleme dönüştürülebilir hata mesajları sağlayın.

4. Tutarsız Doğrulama

Tüm giriş noktalarında (API, web formu, mobil uygulama) aynı kuralları uygulayın.

Sonuç

Geçici e-posta adreslerini tespit etmek, platform kalitesini ve güvenliğini sürdürmek için esastır. Kendi tespit sisteminizi oluşturabilirsiniz, ancak Email Verifier gibi özel bir API hizmeti kullanmak şunları sağlar:

  • Her zaman güncel veritabanı 300.000+ geçici domain ile
  • Birden fazla tespit yöntemi daha yüksek doğruluk için birleştirilmiş
  • Hızlı yanıt süreleri 100ms’nin altında
  • Bakım yükü yok - temel ürününüze odaklanın

Geçici e-posta tespitini uygulamaya hazır mısınız? API anahtarınızı alın ve dakikalar içinde platformunuzu korumaya başlayın.

İlgili Kaynaklar

Back to Guides

Related Posts

View All Posts »