[email protected]Sistem durumu
Gönderim ve Teslim Edilebilirlik

Mail Hata Kodları: SMTP Bounce Kodları ve Anlamları

Mail hata kodları, bir e-posta teslim edilemediğinde alıcı sunucunun SMTP yanıtında verdiği ve sorunun türünü anlatan kodlardır. 4 ile başlayan kodlar geçici bir sorunu, 5 ile başlayanlar kalıcı bir reddi gösterir; 5.1.1 gibi üç parçalı gelişmiş durum kodları ise nedeni ayrıntılandırır. Kodu doğru okumak, sorunun alıcıda mı, içerikte mi yoksa sizin altyapınızda mı olduğunu hızla anlamanızı sağlar.

Hard bounce ve soft bounce farkı nedir?

Geri dönen iletiler (bounce) iki gruba ayrılır:

  • Hard bounce (kalıcı hata): 5xx ile başlayan yanıtlardır. Adres yoktur, alan adı geçersizdir ya da ileti politika gereği reddedilmiştir. Aynı ileti hiçbir şey değiştirilmeden yeniden gönderilirse aynı sonucu alır.
  • Soft bounce (geçici hata): 4xx ile başlayan yanıtlardır. Posta kutusu dolu olabilir, sunucu geçici olarak yoğundur ya da gönderen geçici olarak kısıtlanmıştır. Gönderen sunucu iletiyi kuyrukta tutup belirli aralıklarla yeniden dener.

Bir ileti uzun süre geçici hata almaya devam ederse sunucu sonunda vazgeçer ve gönderene teslim edilemedi bildirimi üretir. Postfix'te bu süre varsayılan olarak beş gündür.

SMTP yanıt kodları nasıl okunur?

RFC 5321 standardına göre her SMTP yanıtı üç haneli bir kodla başlar. İlk hane yanıtın sınıfını belirler:

İlk haneAnlamıÖrnek
2xxİşlem başarılı250: ileti kabul edildi
3xxAra yanıt, devam bekleniyor354: ileti içeriğini gönder
4xxGeçici olumsuz yanıt421, 450, 451, 452
5xxKalıcı olumsuz yanıt550, 552, 553, 554

İkinci hane konuyu daraltır: x0x sözdizimi, x1x bilgi, x2x bağlantı, x5x ise posta sistemiyle ilgili yanıtlardır. Örneğin 550, istenen işlemin posta kutusuna ulaşılamadığı veya politika gereği yapılmadığını; 554 ise işlemin başarısız olduğunu genel olarak belirtir.

Gelişmiş durum kodları (RFC 3463) ne anlatır?

Üç haneli kod tek başına yeterince ayrıntı vermediği için RFC 3463 "sınıf.konu.ayrıntı" biçiminde gelişmiş durum kodları tanımlar. Sınıf yine 2 (başarılı), 4 (geçici) veya 5 (kalıcı) olur. Ortadaki konu hanesi sorunun alanını gösterir:

  • X.1.X adresleme: Alıcı veya gönderen adresiyle ilgili sorunlar.
  • X.2.X posta kutusu: Posta kutusunun dolu ya da devre dışı olması.
  • X.3.X posta sistemi: Alıcı sistemin kapasitesi veya yapılandırması.
  • X.4.X ağ ve yönlendirme: Bağlantı, DNS ve yönlendirme sorunları.
  • X.5.X protokol: SMTP komutlarıyla ilgili hatalar.
  • X.6.X içerik: İletinin biçimi veya içeriğiyle ilgili sorunlar.
  • X.7.X güvenlik ve politika: Kara liste, kimlik doğrulama ve yetki retleri.

Kimlik doğrulama hataları için RFC 7372 ek kodlar tanımlar; örneğin 5.7.25 ters DNS doğrulamasının, 5.7.26 ise birden fazla kimlik doğrulama denetiminin başarısız olduğunu belirtir.

Bir bounce mesajı nasıl okunur?

Teslim edilemedi bildirimlerinin (DSN) makine tarafından okunabilen bölümü RFC 3464 biçimini izler. En önemli satırlar şunlardır:

Final-Recipient: rfc822; [email protected]
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 User unknown

Status satırı gelişmiş durum kodunu, Diagnostic-Code ise alıcı sunucunun döndüğü özgün yanıtı gösterir. Sunucuların eklediği açıklama metni çoğu zaman en değerli ipucudur: kara listenin adı, başvuru bağlantısı veya reddin gerekçesi burada yazar.

Sık görülen hata kodları ve çözümleri

KodAnlamıTürNe yapmalı?
550 5.1.1Alıcı posta kutusu yokKalıcıAdresi kontrol edin, listeden çıkarın
5.1.2 veya 5.4.4Alıcı alan adı yok ya da posta yönlendirilemiyorKalıcıAlan adı yazımını ve MX kaydını kontrol edin
550 5.2.1Posta kutusu devre dışıKalıcıAlıcıya başka bir kanaldan ulaşın
452 4.2.2 veya 552 5.2.2Posta kutusu doluGeçici, sürerse kalıcıDaha sonra yeniden deneyin, alıcıyı bilgilendirin
552 5.3.4 veya 5.2.3İleti boyutu sınırı aşıldıKalıcıEki küçültün veya dosyayı bağlantıyla paylaşın
421 4.7.0Geçici politika veya itibar kısıtıGeçiciHacmi düşürün, IP ve alan adı itibarını inceleyin
450 veya 451Gri liste ya da geçici bir politika kısıtıGeçiciSunucunun yeniden denemesini bekleyin
554 5.7.1Politika reddi: kara liste, röle izni yok, içerikKalıcıAçıklama metnini okuyun, nedene göre düzeltin
550 5.7.26Kimlik doğrulama denetimleri başarısızKalıcıSPF, DKIM ve DMARC kayıtlarını düzeltin
550 5.7.606Microsoft: gönderen IP engellenmişKalıcıMicrosoft'un kaldırma portalına başvurun
4.4.7Kuyrukta teslim süresi dolduKalıcı bildirimAlıcı sunucuya erişimi ve DNS'i kontrol edin

Gri listenin neden geçici ret ürettiğini greylisting nedir yazısında, kara liste kaynaklı retlerde izlenecek yolu ise kara listeden çıkma rehberinde anlattık.

Türkiye'de sık karşılaşılan durumlar

  • Yazım hataları: "gmial.com", "hotmial.com" ya da ".com.tr" yerine ".com" yazılması, 5.1.1 veya alan adı bulunamadı hatası üretir.
  • Dolan kurumsal kotalar: Küçük kotalı hosting paketlerinde dolan posta kutuları 4.2.2 veya 5.2.2 ile döner.
  • Taşınmış ama sunucuya bildirilmemiş alan adları: Postalar Microsoft 365'e taşındığı halde web sunucusu alan adını hâlâ yerel kabul ediyorsa, siteden gönderilen form postaları eski posta kutusuna düşer veya 5.1.1 hatası alır.
  • Giden sunucuda kimlik doğrulamanın kapalı olması: Outlook gibi istemcilerde giden sunucu için kimlik doğrulama ayarı açılmadığında Postfix gibi sunucular 554 5.7.1 Relay access denied yanıtıyla reddeder.
  • Paylaşımlı hosting IP'sinin kara listede olması: Yanıtta "blocked using" ifadesi ve bir liste adı görülür.
  • Büyük ekler: Taranmış belgeler ve teknik çizimler boyut sınırına takılarak geri döner.

Bounce yönetiminde iyi uygulamalar

  • Hard bounce veren adresleri ilk seferde gönderim listesinden çıkarın.
  • Aynı adres art arda birkaç gönderimde soft bounce alıyorsa pasife alın.
  • Geri dönen ileti oranını sağlayıcı bazında izleyin; ani artış bir IP itibarı sorununun habercisi olabilir.
  • Zarf göndericisini (Return-Path) izlenen bir posta kutusuna yönlendirin; bildirimler sahipsiz kalmasın.
  • 5.7.x kodlarını alıcının sorunu değil, altyapı veya itibar sorunu olarak ele alın.

MXZilla smarthost'u üzerinden geçen giden trafikte saatlik ve günlük limitler uygulanır, havuzdaki IP adresleri kara listelere karşı izlenir ve listeye giren IP havuzdan çekilir.

Sonuç

Mail hata kodları, sorunun nerede olduğunu söyleyen en hızlı kaynaktır. 5.7.x ile başlayan kimlik doğrulama retleri alıyorsanız SPF, DKIM ve DMARC kayıtlarınızı ücretsiz güvenlik kontrolü ile hemen denetleyebilir, teslimatı uzun vadede iyileştirmek için e-posta teslim edilebilirliği rehberini inceleyebilirsiniz.

Sık sorulan sorular

550 hatası her zaman adresin yanlış olduğu anlamına mı gelir?

Hayır. 550 kalıcı bir ret olduğunu söyler, nedenini ise gelişmiş durum kodu ve açıklama metni belirtir. 550 5.1.1 adresin bulunmadığını gösterirken 550 5.7.1 gibi bir kod kara liste veya politika kaynaklı bir reddi işaret eder.

Soft bounce alan bir posta ne kadar süre yeniden denenir?

Gönderen sunucu, geçici hata alan iletiyi kuyrukta tutup belirli aralıklarla yeniden dener. Postfix'te varsayılan kuyruk ömrü beş gündür ve süre dolduğunda ileti teslim edilemedi bildirimiyle gönderene döner. Diğer posta sunucularında da genellikle birkaç günlük bir süre uygulanır.

Bounce mesajı gelmeden posta kaybolabilir mi?

Evet. Alıcı sunucu iletiyi 250 yanıtıyla kabul edip ardından spam klasörüne ya da karantinaya alırsa size bir bounce gelmez. Ayrıca zarf göndericisi geçersizse oluşan bildirimler de size ulaşamaz.

5.7.1 hatasını nasıl çözerim?

5.7.1 genel bir politika reddidir, bu yüzden önce açıklama metnini okuyun. Metinde bir kara liste adı geçiyorsa IP itibarınızla, "Relay access denied" yazıyorsa istemcinizin kimlik doğrulama ayarıyla, içerik veya ekten söz ediliyorsa iletinin kendisiyle ilgilenmeniz gerekir.

Bounce oranım ne kadar olmalı?

Posta sağlayıcıları herkes için geçerli tek bir eşik yayınlamaz. Ancak geçersiz adreslere sürekli gönderim yapmak itibar açısından olumsuz bir sinyaldir. Hedef, hard bounce veren adresleri ilk seferde listeden çıkararak oranı mümkün olduğunca düşük tutmaktır.

Alan adınızın e-posta güvenliğini ücretsiz kontrol edin

SPF, DKIM, DMARC ve MX kayıtlarınızı saniyeler içinde denetleyin; eksikleri ve düzeltme önerilerini görün.