Arama butonu
Bu konudaki kullanıcılar: 1 misafir
0
Cevap
26
Tıklama
0
Öne Çıkarma
E-ticaret sitelerinden giden şifre sıfırlama maillerinin saatlerce gecikme sorununu çözdüm
U
2 gün (6 mesaj)
Er
Konu Sahibi

Herkese selamlar,

Geçen gün e-ticaret altyapısında sunuculardan birinde çok garip bir şikayet aldım. Müşteriler "Şifremi Unuttum" butonuna bastıktan sonra mail ya hiç gelmiyor ya da 2-3 saat sonra geliyormuş. Bu süre zarfında adamlar alışveriş sepetini terk edip başka siteye gitmiş oluyor.

SSH ile sunucuya bağlanıp mail loglarını (<code>/var/log/mail.log</code>) açtığımda Postfix kuyruğu (queue) dolup taşmış. Binlerce bilgilendirme maili, bülten veya bildirim önde yığılmış. Şifre sıfırlama gibi kritik ve acil mailler de o kuyruğun en arkasında saatlerce beklemiş.

Bu kronik sorunu Postfix tarafında nasıl çözdüğümü ve acil mailleri önceliğe alacak şekilde kuyruk mimarisini nasıl düzenlediğimi sizlere anlatacağım. Bilhassa E-ticaret veya üyelikli site yönetenler inceleyebilirler.

Varsayılan ayarlarda Postfix, kendisine gelen tüm mailleri tek bir kuyruğa (<code>active queue</code>) yığı ve "ilk gelen ilk çıkar" (FIFO - First In, First Out) mantığıyla sırayla gönderir.

  • Eğer siteniz toplu mail (bülten, promosyon) atıyorsa veya spam/gecikmeli yanıt veren dış sunuculara mail gönderiyorsa, Postfix o mailleri göndermeye çalışırken kilitlenir.
  • Şifre sıfırlama veya sipariş onay mailli gibi "kritik" olması gereken işlemler de o koca kuyrukta arkada sıra bekler.

Bu sorunu kökten çözmek için Postfix konfigürasyonunu optimize edip ve kuyruk yönetimini tazeledim.

1. Adım: Kuyruktaki Yığılmayı ve Durumu Kontrol Etme
Öncelikle sunucunuzda şu an kuyrukta kaç tane mail beklediğini görmek için şu komutu çalıştırın;

mailq

Eğer ekranda binlerce satır akıyorsa ve <code>Connection timed out</code> veya <code>Deferred</code> statüsünde mailler birikmişse kuyruk tıkanmış demektir.

2. Adım: Postfix Ana Konfigürasyonunu Düzenleme (<code>main.cf</code>)
Postfix'in kuyruk yönetimini hızlandırmak ve tıkanıklıkları önlemek için <code>/etc/postfix/main.cf</code> dosyasını açıyoruz;

nano /etc/postfix/main.cf

Dosyanın uygun bir yerine şu performans parametrelerini ekleyin veya güncelleyin:
Ini, TOML

# Eşzamanlı maksimum bağlantı sayısını artırarak gönderimi hızlandırır
default_destination_concurrency_limit = 20
initial_destination_concurrency = 10

# Mesaj kuyruğunu işleme sıklığını artırıyoruz (varsayılanlar yavaştır)
queue_run_delay = 300s
minimal_backoff_time = 180s
maximum_backoff_time = 4000s

# TCP bağlantı zaman aşımı sürelerini düşürerek yanıt vermeyen sunucularda takılı kalmayı önler
smtp_connect_timeout = 30s
smtp_helo_timeout = 30s

3. Adım: Kritik Mailler İçin Ayrı Bir Postfix Instance Kurulumu

Büyük e-ticaret sitelerinde toplu mailler ile şifre sıfırlama mailleri asla aynı kuyruktan atılmaz. Bunun için Postfix'e ikinci bir instance (bağımsız port/kanal) kurarak şifre sıfırlama maillerini direkt Mailbaby veya harici bir SMTP relay üzerinden anında gönderecek şekilde ayırabilirsiniz.

Eğer tek sunucu üzerinden yürüyecekseniz, mevcut kuyruğu temizlemek için şu komutu kullanabilirsiniz:E-ticaret sitelerinden giden şifre sıfırlama maillerinin saatlerce gecikme sorununu çözdümE-ticaret sitelerinden giden şifre sıfırlama maillerinin saatlerce gecikme sorununu çözdüm

# Kuyruktaki tüm bekleyen (deferred) mailleri zorla tekrar göndermeyi tetikle
postqueue -f

4. Adım: PHP / E-Ticaret Yazılımı Tarafı (Asenkron Kuyruk - Queue)
Sadece Postfix değil, e-ticaret yazılımınızın mail gönderirken PHP'yi kitlememesi gerekir.

  • Mail gönderimlerini doğrudan tarayıcı isteği (HTTP request) sırasında synchronous (senkron) yapmak yerine, Cron veya Redis/Beanstalkd tabanlı asenkron kuyruk sistemlerine (<code>Background Processing</code>) devredin. Böylece site arayüzü mail sunucusunun yanıt vermesini beklemez, mail arka planda anında kuyruğa alınır.

Bu optimizasyonlar yapıldıktan sonra şifre sıfırlama maillerindeki o gecikmeler tamamen ortadan kalktı ve mailler saniyeler içinde kullanıcıların kutusuna düşmeye başladı.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.