SMTP sunucuları için ters proxy

Ters proxy, istemci isteklerini işlemek için bir veya daha fazla web sunucusunun önünde yer alan ve
güvenliği, performansı ve ölçeklenebilirliği artıran bir sunucudur.

ters proxy diyagramı

İstemciler sunucularla doğrudan iletişim kurmak yerine,
isteklerini ters proxy'ye gönderirler;
tek ve güvenli bir erişim noktası görevi görerek
uygun sunuculara yönlendirir

Başlıca Faydaları:

  • Güvenlik açısından, kötü amaçlı istekleri engelleyebilir, trafiği şifreleyebilir
    ve arka uç sunucularını doğrudan saldırılardan koruyabilir.
  • Performans: Gelen trafiği birden fazla sunucuya dağıtarak
    tek bir sunucunun aşırı yüklenmesini önler ve daha yüksek kullanılabilirlik sağlar.
  • Ölçeklenebilirlik: Hizmet kesintisi olmadan arka uç sunucuları eklemenize veya kaldırmanıza olanak tanıyarak
    artan trafiği yönetme yeteneği sunar.

Yalnızca HTTP kullanan ters proxy (Katman 7)

İnternette çeşitli araçlar mevcut; araştırmalarımız sonucunda, öncelikle yalnızca HTTP protokolünü (Katman 7) destekleyenleri eledik:

Apache'ye Hayır!
“Eyvah. Kullandığınız teknolojiler hakkında biraz bilgi edinin. E-posta SMTP kullanır. Apache HTTP kullanır. Apache'nin SMTP hakkında hiçbir bilgisi yok. E-posta mesajlarıyla çalışmak istiyorsanız, SMTP konuşan bir teknolojiye ihtiyacınız olacak.” – EEAA, 18 Ağustos 2016, 02:49'da yorum yaptı

Caddy'ye Hayır!
“Caddy TCP'yi vekil sunucu olarak kullanamaz, yalnızca TCP üzerinden HTTP'yi vekil sunucu olarak kullanabilir. Traefik, Nginx veya haproxy gibi TCP'yi vekil sunucu olarak kullanabilen bir ters proxy kullanın veya bu deneysel eklentiyi kullanın.” – ElevenNotes Yorumu, 24 Eylül 2024


Ardından yorumlarda önerilen üç seçeneğe odaklandık: "Traefik, NginX veya HAProxy" ve bunları tek tek kurup test ettik.

Traefik ilk tercihti.

Çoğu eğitim videosu Docker ile başlıyordu; ben ise bu platformdan kaçınmak ve Fedora ve CentOS gibi RPM tabanlı dağıtımlar için YUM veya Ubuntu ve Debian gibi Debian tabanlı dağıtımlarda kullanılan APT (Advanced Package Tool) gibi Linux paket yöneticilerinden birine dayalı daha basit bir çözüm tercih etmek istedim.

Uzun bir aramanın ardından, aradığımız kurulum türünü açıklayan bu yeni makaleyi bulduk: Traefik'i systemd Servisi Olarak Kurma.

Bir not: SELinux ayarlarını "Zorlayıcı"dan "İzin Verici"ye değiştirmeniz gerekiyor

Yine, Udemy'de iki kurs denedikten sonra, bu mükemmel kursu bulduk: Traefik Hızlı Başlangıç ​​Kursu (Docker Olmadan). Sağlanan örnekleri yeniden üreterek çalışır hale getirmeyi başardık. Videonun sonuna doğru, mükemmel eğitmen bu araca tamamen karşı olduğunu ifade etti: Traefik Hızlı Başlangıç ​​Kursu - 53:50 Özet.
Bu, daha fazla test yapmaktan bizi caydırdı ve başka bir şey denememize yol açtı.

Nginx ikinci tercihti

Bu durumda kurulum daha basitti, kısaca YUM kullanılarak yapıldı:
yum install epel-release nginx nginx-mod-stream nginx-mod-mail
Bir not: SELinux'ta röleyi etkinleştirmeniz gerekiyor:
setsebool -P httpd_can_network_relay 1

Eğitim için, önceki kurstaki eğitmenle aynı eğitmeni seçerek işi garantiye aldık: Nginx Hızlı Kursu (ilk bölüm yaklaşık bir saat yirmi dakika sonra bitiyor). Eğitmen de bu uygulamaya, özellikle hem web sunucusu hem de ters proxy görevi görmesine ikna olmamış durumda: Nginx Hızlı Kursu - 1:20:10 Özet.
Rapor "Nginx yerine HAProxy'yi tercih ederim" şeklinde bitiyor, bu yüzden biz de HAProxy'yi denemeye karar verdik.

Son olarak, HAProxy'yi de denedik.

Kurulumu son derece kolay oldu, çünkü çok yaygın bir uygulama ve tüm Linux paket yöneticilerinde mevcut, örneğin: yum install haproxy

Ayrıca güvendiğimiz eğitmenimiz HAProxy Crash Course'a da danıştık .

Çalışıyor, ancak maalesef SMTP kimlik doğrulaması için uygun değil:
"haProxy'yi bu şekilde yapılandırmak mümkün değil, çünkü haproxy SMTP'yi hiç desteklemiyor."
– lukastribus, 17 Ağustos 2023 tarihinde yorum yaptı.


Ters proxy olarak çalışan standart bir SMTP sunucusu

İki haftalık test sürecinin ardından,
diğer SMTP sunucuları için ters proxy olarak standart bir SMTP sunucusu kullanmanın daha iyi olduğunu fark ettik.

Görevini yerine getiriyor, yalnızca SMTP protokolünü kullanıyor, bağlantıları doğru bir şekilde doğruluyor
ve "smarhost" işlevi aracılığıyla istekleri diğer SMTP sunucularına iletebiliyor.

Postfix'te, main.cf dosyasında,
relayhost = [smarthost_address]:port

Sendmail'de, sendmail.mc dosyasında,
`SMART_HOST',`mail.example.com'` şeklinde bir tanım bulunur.


başa dön