Sabah teklif gönderirken her şey normaldi. Öğleden sonra Outlook'un giden kutusunda üç mail takılı kaldı, webmail'den denediğinizde kırmızı bir uyarı çıktı ve birkaç dakika sonra gelen kutunuza içinde 550 yazan İngilizce bir iade mesajı düştü: alan adınızın saatte gönderebileceği mail sayısını aştığı yazıyor. Oysa siz o saat içinde belki on mail gönderdiniz. Rakam ise beş yüzü geçmiş görünüyor.
Bu tablonun en can sıkıcı tarafı, hatanın sizin yaptığınız bir şeyle ilgisinin olmamasıdır. Limit alan adı düzeyinde sayılır; yani @ornekfirma.com.tr uzantılı bütün posta kutuları, sitenizdeki iletişim formu, sipariş bildirimleri, WordPress'in gönderdiği şifre sıfırlama mailleri ve varsa bültenler aynı sayacı doldurur. Sayacı kim doldurduysa fatura hepinize kesilir: alan adının tamamı gönderim yapamaz hale gelir.
Bu yazıda önce hata metnini satır satır okuyacağız, sonra limiti hangi kutunun veya hangi betiğin tükettiğini panelden ve SSH'tan tespit edeceğiz. Ardından sayacın gerçekte ne zaman sıfırlandığını (çoğu kişinin sandığı gibi saat başında değil), kuyrukta bekleyen yığının nasıl temizleneceğini ve destek talebi açarken hangi bilgileri vermeniz gerektiğini göreceğiz. Sonunda ise vakaların büyük çoğunluğunda karşımıza çıkan iki gerçek sebebi ele alacağız: ele geçirilmiş bir posta kutusu ve frensiz çalışan bir form.
Hata Mesajı Tam Olarak Ne Diyor#
Limit hatası size iki kanaldan ulaşır: mail istemcisinin anlık uyarısı ve sunucunun yazdığı iade (bounce) mesajı. Asıl bilgi ikincisindedir. Tipik metin şuna benzer:
SMTP error from remote mail server after end of data:
550-Message rejected. ornekfirma.com.tr has exceeded the max emails
550 per hour (512/500 (102%)) allowed. Message discarded.
Parantez içindeki 512/500 (102%) ifadesi bu satırın en değerli parçasıdır: 512 mail gönderilmiş, sınır 500, doluluk yüzde 102. Yani sizin gönderdiğiniz on mail bu 512'nin içinde erimiş durumda. Sayı sınırın çok üstündeyse (örneğin 4.800/500) elinizde bir yoğunluk sorunu değil, bir olay vardır.
cPanel/WHM tarafında karşınıza çıkabilecek üç ayrı limit metni ve anlamları:
| Hata metnindeki ifade | Neyi sayar | Tipik değer | Aşılınca ne olur |
|---|---|---|---|
exceeded the max emails per hour | Alan adından bir saatte çıkan toplam mesaj | 200-500 | Yeni mesaj reddedilir, Message discarded |
exceeded the max defers and failures per hour | Bir saatte ertelenen veya başarısız olan mesaj sayısı | 5 civarı | Alan adının gönderimi tamamen durur |
Outgoing mail is suspended for this account | Tek bir posta kutusunun askıya alınması | — | Sadece o kutu gönderemez, diğerleri çalışır |
Üçünün karışması çok yaygındır ve teşhisi baştan yanlış yöne çeker. İkinci satır özellikle önemlidir: max defers and failures limiti mesaj sayısını değil, başarısızlık oranını cezalandırır. Yani 20 mail gönderip 6'sı geçersiz adrese gitmişse, hiçbir limite yaklaşmadığınız halde alan adınız bloklanabilir. Bu genellikle temizlenmemiş bir müşteri listesinin işaretidir; iade kodlarını okumak için SMTP hata kodları ve anlamları yazısı işinizi kolaylaştırır.
Üçüncü satır ise limitin değil, sunucunun sizi tek kutu bazında durdurduğu durumdur ve neredeyse her zaman ele geçirilmiş bir parolanın sonucudur.
Bu Limit Neden Var, Kaldırılamaz mı#
İlk refleks haklı olarak "limiti kaldırın" olur. Ancak limit sizi değil, sunucunun IP itibarını korur. Paylaşımlı bir sunucuda onlarca alan adı aynı çıkış IP'sini kullanır. Tek bir hesabın ele geçirilip saatte on binlerce spam çıkarması, o IP'nin Spamhaus gibi listelere düşmesi için yeterlidir; bundan sonra aynı sunucudaki herkesin maili Gmail ve Outlook tarafında reddedilir. Bu noktadan geri dönüş günler sürer.
Saatlik limit, bu felaketi en fazla bir saatlik hasarla sınırlayan fren mekanizmasıdır. Yani limit aşımı bildirimi aslında bir arıza değil, çalışan bir güvenlik önleminin sesidir. IP'nizin listelere düşüp düşmediğini merak ediyorsanız mail blacklist sorgulama ve çıkma adımlarını izleyebilirsiniz.
Limit değerinin kendisi barındırma paketine göre değişir. Sunucu yöneticisi bunu WHM üzerinden üç yerde ayarlar:
| Nerede | Ayar | Kapsam |
|---|---|---|
| WHM > Server Configuration > Tweak Settings > Mail | Max hourly emails per domain | Sunucudaki tüm alan adları için varsayılan |
| WHM > Account Functions > Modify an Account | Maximum Hourly Email by Domain Relayed | Tek bir cPanel hesabı |
| WHM > Packages > Edit a Package | Aynı alan | Pakete bağlı tüm hesaplar |
Paylaşımlı hosting kullanıyorsanız bu ekranlara erişiminiz olmaz; talep destek üzerinden iletilir. Kendi VDS'inizde cPanel çalıştırıyorsanız değeri siz belirlersiniz, ancak yükseltmeden önce aşağıdaki tespit adımlarını yapmadan karar vermeyin.
Limiti Hangi Hesap Doldurdu#
Bu sorunun cevabını bulmadan yapılan her müdahale zaman kaybıdır. İki yol var: panel ve komut satırı.
cPanel üzerinden tespit#
- cPanel'e girin ve E-posta > Teslimatı İzle (Track Delivery) bölümünü açın.
- Sağ üstteki tarih aralığını son 24 saat olarak seçin.
- Sonuç tablosunu Gönderen sütununa göre sıralayın.
- Listenin en üstünde beklemediğiniz bir adres varsa (
info@,noreply@,nobody@gibi) sorunun kaynağı odur. - Aynı adresten yüzlerce satır ve bunların alıcıları tanımadığınız yabancı alan adlarıysa, o kutu ele geçirilmiş demektir.
Gönderen sütununda nobody veya cPanel kullanıcı adınız görünüyorsa, mailleri bir posta kutusu değil sunucudaki bir PHP betiği göndermiştir. Bu ayrım kritiktir: birinci durumda parola değiştirilir, ikinci durumda dosya aranır.
SSH üzerinden tespit#
Kök erişiminiz varsa Exim günlüğü çok daha net konuşur. Önce mevcut saatte kimin ne kadar gönderdiğine bakın:
# Bu saat içinde hangi gönderen kaç mesaj çıkardı
grep "^$(date '+%Y-%m-%d %H')" /var/log/exim_mainlog \
| grep " <= " \
| awk '{print $5}' | sort | uniq -c | sort -rn | head -20
Exim günlüğünde <= işareti "mesaj sisteme girdi" anlamına gelir, beşinci alan da gönderen adresidir. Çıktının en üst satırı suçluyu verir.
Mailler bir betikten çıkıyorsa gönderen adresi yanıltıcı olur; bu durumda çalışma dizinine bakmak gerekir:
# Mailleri hangi dizindeki betik gönderiyor
grep "cwd=" /var/log/exim_mainlog \
| awk -F"cwd=" '{print $2}' | awk '{print $1}' \
| sort | uniq -c | sort -rn | head -20
Çıktıda /home/kullanici/public_html/wp-content/uploads gibi bir yol görüyorsanız, yükleme klasörüne bırakılmış bir zararlı dosya çalışıyor demektir. Bu senaryonun tamamı sitemden spam mail gidiyor yazısında işleniyor.
Kimlik doğrulamalı gönderimleri, yani gerçek bir posta kutusu parolasıyla yapılan çıkışları ayrıca listeleyin:
# SMTP kimlik doğrulaması yaparak gönderen kutular
grep " <= " /var/log/exim_mainlog \
| grep -o "A=dovecot_login:[^ ]*" \
| sort | uniq -c | sort -rn | head
Buradan bir kutu adı çıkıyorsa, o kutuya bağlanan IP adreslerini de görün:
grep "dovecot_login:[email protected]" /var/log/exim_mainlog \
| grep -oE "\[[0-9.]+\]" | sort | uniq -c | sort -rn | head
Listede Nijerya, Vietnam veya Rusya'ya ait tanımadığınız IP'ler varsa teşhis kesindir.
Vakaların Çoğunda Asıl Sebep Bu İkisinden Biri#
Yıllık toplamda "limit aşıldı" biletlerinin büyük bölümü şu iki senaryodan birine oturur.
Birinci senaryo: ele geçirilmiş posta kutusu. Bir çalışanın 123456 veya şirket adı olan parolası sözlük saldırısıyla kırılır. Saldırgan kutuya normal bir mail istemcisi gibi bağlanır ve 587 portundan spam pompalamaya başlar. Gönderim kimlik doğrulamalı olduğu için SPF, DKIM ve DMARC kontrollerinin hepsini geçer; yani spam, sizin alan adınızın imzasıyla ve tam olarak sizin adınıza gider. Limit devreye girmeseydi bunu ancak IP'niz kara listeye düştüğünde fark ederdiniz.
Belirti şudur: Teslimatı İzle ekranında tek bir kutu adı, binlerce satır, tanımadığınız alıcılar ve gönderim saatinin gece yarısına denk gelmesi. Yapılacak iş, o kutunun parolasını hemen değiştirmek, aktif oturumları kapatmak ve kutuya bağlı cihazları yeniden yapılandırmaktır. Adımların tamamı mail hesabım ele geçirildi yazısında; parola değişikliğinin nasıl yapıldığı ise e-posta şifresi değiştirme sayfasında anlatılıyor.
İkinci senaryo: frensiz form veya döngüye giren betik. Sitenizdeki iletişim formunda CAPTCHA yoksa, bot bir gecede binlerce gönderim tetikler. Ya da bir eklenti güncellemesinden sonra sipariş bildirimi döngüye girer ve aynı maili yüzlerce kez yollar. Burada gönderen nobody veya cPanel kullanıcı adıdır; alıcı ise çoğu zaman kendi adresinizdir. Yani gelen kutunuz da aynı anda dolar; bu, teşhisi kolaylaştıran belirgin bir işarettir.
Formun kendisi masumsa bile gönderim yöntemi sorun çıkarabilir. WordPress'in yerleşik mail() fonksiyonu yerine kimlik doğrulamalı SMTP kullanmak hem teslimatı hem de izlenebilirliği artırır; kurulum için WordPress SMTP e-posta ayarları yazısına bakabilirsiniz.
Sayaç Ne Zaman Sıfırlanır#
En sık sorulan ve en çok yanlış bilinen konu budur. Yaygın beklenti, saat başında sayacın sıfırlanmasıdır: "saat 15.00 olsun, düzelir." Gerçek genellikle böyle işlemez.
cPanel bu sayımı sabit saat dilimleriyle değil, son 60 dakikayı kapsayan kayan bir pencereyle yapar. Yani saat 14.20'de sınırı aştıysanız, 15.00'te tümüyle serbest kalmazsınız; 13.20'den sonra gönderilen mesajlar sırayla pencerenin dışına çıktıkça kapasite kademeli olarak açılır. Pratik sonucu şudur: yoğunluk 14.00-14.20 arasında yaşandıysa, 15.20 civarında rahatlarsınız.
İki önemli istisna var:
- Defer/failure bloğu farklı davranır. Bu limit tetiklendiğinde sunucuda alan adı adına bir engel dosyası oluşur ve kendiliğinden düşmesi zaman alır. Kök erişimi olan yönetici
/var/cpanel/email_send_limits/dizinindeki ilgili dosyayı silerek engeli anında kaldırabilir. Silmeden önce mutlaka sebebi giderin, aksi halde blok birkaç dakika içinde geri gelir. - Kuyruktaki mesajlar sayacı yeniden doldurur. Engel kalktığı anda kuyrukta bekleyen yüzlerce mesaj aynı anda gönderilmeye çalışır ve limiti tekrar aşar. Bu yüzden temizlik yapmadan beklemek sonuçsuz kalır.
# Alan adı için oluşmuş engel dosyaları (kök erişimi gerekir)
ls -l /var/cpanel/email_send_limits/
Paylaşımlı hostingteyseniz bu dosyaya erişemezsiniz; destek talebinde "engel dosyasının kaldırılması" ifadesini kullanmanız işi hızlandırır.
Kuyrukta Bekleyen Yığını Temizlemek#
Sayaç sıfırlansa bile kuyruk doluysa sorun geri döner. Önce boyutu görün:
# Kuyruktaki toplam mesaj sayısı
exim -bpc
# Kuyruğun alan adı bazında özeti
exim -bp | exiqsumm
Sonuç birkaç bin çıkıyorsa ve bunlar sizin göndermediğiniz mesajlarsa, sadece ilgili göndericinin mesajlarını hedefleyerek temizleyin:
# Belirli göndericiye ait kuyruk kayıtlarının kimlikleri
exiqgrep -i -f [email protected]
# Aynı listeyi kuyruktan sil
exiqgrep -i -f [email protected] | xargs -r exim -Mrm
Kuyruğu topluca silmek (exim -bp | awk ... ile hepsini kaldırmak) cazip görünür ama müşterilerinize gitmeyi bekleyen meşru teklifleri de yok eder. Filtreleyerek silin.
Limiti Yükseltmek Çözüm mü#
Bazen evet. Gerçekten büyüyen bir e-ticaret sitesinde günlük sipariş sayısı arttıysa, 200'lük limit gerçek ihtiyacın altında kalmış olabilir. Karar için basit bir hesap yapın: son bir haftanın en yoğun saatinde kaç meşru mail çıktı? Teslimatı İzle ekranından bu sayıyı alıp iki katını isteyin.
Ancak şu üç durumda limit yükseltmek sorunu büyütür:
- Fazla gönderim bir kutunun ele geçirilmesinden kaynaklanıyorsa, limiti yükseltmek saldırganın kapasitesini artırmaktan başka işe yaramaz.
- Fazla gönderim bültenden kaynaklanıyorsa, doğru çözüm limit değil kanal değişikliğidir. Toplu gönderim, barındırma sunucusunun paylaşımlı IP'si üzerinden yapılmamalıdır; toplu mail nasıl gönderilir yazısında ayrı gönderim altyapısı seçenekleri karşılaştırılıyor.
max defers and failureslimitine takılıyorsanız problem hacim değil kalitedir. Adres listenizdeki geçersiz kayıtları temizlemeden limiti yükseltmek IP itibarınızı hızla tüketir.
Destek Talebinde Neleri Yazmalısınız#
Barındırma sağlayıcınıza yazacağınız talebe şunları koyarsanız yanıt süresi belirgin biçimde kısalır. Sadece ekran görüntüsü göndermek çoğu zaman bir tur soru-cevap daha maliyeti doğurur.
- İade mesajının tam metni, özellikle
(512/500 (102%))gibi parantez içindeki oran. - Hatanın ilk görüldüğü tarih ve saat, mümkünse dakikasıyla.
- Etkilenen alan adı ve gönderim yapmaya çalışan posta kutusu adresi.
- Son 24 saatte olağan dışı bir işlem yapılıp yapılmadığı: yeni eklenti, bülten gönderimi, form güncellemesi.
- Teslimatı İzle ekranında öne çıkan gönderen adresi (tespit ettiyseniz).
- Talebiniz: sadece engelin kaldırılması mı, yoksa limitin kalıcı olarak yükseltilmesi mi.
- Kuyruğun temizlenmesini istiyorsanız bunu açıkça belirtin; aksi halde teknik ekip meşru mailleri silmeme adına kuyruğa dokunmaz.
Şüpheli bir gönderim tespit ettiyseniz onu da yazın. "Muhtemelen info@ kutusu ele geçirilmiş, gece 03.00 civarı yabancı IP'lerden gönderim var" cümlesi, destek ekibinin doğrudan doğru yerden başlamasını sağlar.
Tekrarını Önlemek#
Engel kalktıktan sonra yapılacaklar listesi kısa ama etkilidir:
- Tüm posta kutularının parolasını yenileyin. Sadece şüphelendiğiniz kutuyu değil; saldırgan genellikle birden fazla kutuya girmiştir.
- Kullanılmayan kutuları silin.
test@,eski-personel@gibi kutular yıllardır kimsenin bakmadığı açık kapılardır. - Formlara CAPTCHA ve hız freni ekleyin. Sunucu tarafında basit bir fren bile bot trafiğini keser:
$stamp = sys_get_temp_dir() . '/form_' . md5($_SERVER['REMOTE_ADDR']);
if (file_exists($stamp) && time() - filemtime($stamp) < 60) {
http_response_code(429);
exit('Çok sık deneme yaptınız, lütfen bir dakika bekleyin.');
}
touch($stamp);
- Bülteni ayırın. Pazarlama gönderimleri ile sipariş bildirimleri asla aynı kanaldan çıkmamalıdır; birinin itibar kaybı diğerini de vurur.
- Günlüğü haftada bir kontrol edin. Yukarıdaki
grepkomutlarından ilkini bir cron göreviyle günlük çalıştırıp sonucu kendinize mail atmak, bir sonraki olayı limit tetiklenmeden önce yakalar.
Limit hatası, düzgün kurulmuş bir sistemde yılda bir kez bile görülmemesi gereken bir uyarıdır. İki ayda bir tekrarlıyorsa mesele limit değeri değil, gönderim mimarisidir.
Sıkça Sorulan Sorular#
Saatlik mail limitine takıldım, ne kadar beklemem gerekiyor?#
Sayaç saat başında değil, son 60 dakikalık kayan pencerede sayıldığı için beklemeniz gereken süre yoğunluğun yaşandığı ana bağlıdır. Limitin dolduğu andan yaklaşık bir saat sonra kapasite açılmaya başlar. Kuyrukta yüzlerce mesaj bekliyorsa, engel kalkar kalkmaz hepsi birden çıkmaya çalışıp limiti yeniden doldurur; bu yüzden beklemeden önce kuyruğun temizlenmesi gerekir.
Limiti ben aşmadım, sadece üç mail gönderdim. Nasıl olur?#
Limit posta kutusu başına değil, alan adı başına sayılır. Aynı alan adındaki diğer kutular, sitenizdeki iletişim formu, sipariş bildirimleri ve otomatik maillerin hepsi aynı sayacı doldurur. Sizin üç mailiniz o saatteki toplamın içinde küçük bir paydır. Kimin doldurduğunu cPanel'deki Teslimatı İzle ekranından gönderen adrese göre sıralayarak görebilirsiniz.
Bounce mesajında gönderen olarak nobody yazıyor, bu ne demek?#
Bu, maillerin bir posta kutusu üzerinden değil, sunucudaki bir PHP betiği üzerinden gönderildiği anlamına gelir. Genellikle sitenizdeki bir form, bir eklenti ya da yükleme klasörüne bırakılmış zararlı bir dosya kaynaklıdır. Parola değiştirmek bu durumda işe yaramaz; günlükte gönderimin hangi dizinden yapıldığını bulup o dosyayı temizlemek gerekir.
Limiti kaldırtsam sorun kökten çözülür mü?#
Hayır, çoğu vakada tam tersi olur. Limit, IP itibarınızı koruyan bir frendir. Fazla gönderim ele geçirilmiş bir kutudan veya döngüye girmiş bir betikten geliyorsa, limiti kaldırmak sadece hasarın büyümesine ve sunucu IP'nizin kara listelere düşmesine yol açar. Limit ancak gerçek ve meşru gönderim ihtiyacınız artmışsa, kaynak tespit edildikten sonra yükseltilmelidir.
Mailleri Gmail veya Outlook üzerinden göndersem limite takılır mıyım?#
Kurumsal adresinizi Gmail veya Microsoft 365 üzerinden gönderim yapacak şekilde yapılandırırsanız barındırma sunucunuzun saatlik limiti devreye girmez, ancak bu kez ilgili sağlayıcının kendi günlük gönderim sınırlarına tabi olursunuz. Toplu gönderim yapıyorsanız her iki seçenek de uygun değildir; bülten için ayrı bir gönderim altyapısı kullanmak doğru çözümdür.
Limit aşımı yüzünden sunucum kara listeye düşer mi?#
Limit tam olarak bunu engellemek için vardır; devreye girdiği anda gönderim durduğu için hasar sınırlanır. Ancak limit aşımı tekrar tekrar yaşanıyorsa, engellenene kadar çıkan mailler yine de itibar kaybına yol açabilir. Ele geçirilmiş bir kutu söz konusuysa kara liste kontrolü yapmanız ve gerekiyorsa çıkarma talebi açmanız önerilir.