E-posta iletişimi, günümüz iş dünyasında kritik bir rol oynamaktadır. Güvenilir ve kesintisiz bir SMTP (Simple Mail Transfer Protocol) altyapısı, e-postaların sorunsuz bir şekilde iletilmesini sağlar. Ancak, birden fazla SMTP sunucusu kullanıldığında veya yük dağıtımı gerektiğinde, trafiği verimli bir şekilde yönetmek zor olabilir. İşte bu noktada, HAProxy devreye girer.
HAProxy, yük dengeleme ve proxy işlevselliği ile tanınan güçlü bir araçtır. Özellikle TCP trafiği üzerinde sağladığı dengeleme yetenekleri sayesinde, SMTP gibi kritik servislerin performansını artırmak için ideal bir çözüm sunar. Bu makalede, HAProxy kullanarak SMTP trafiğinin nasıl yönlendirileceğini ve sunucular arasında nasıl yük dağıtılacağını adım adım inceleyeceğiz.
# apt install haproxy
komutu ile haproxy servisinin kurulumu yapalım.
Gerekli konfigurasyonu yapabilmek için;
# /etc/haproxy/haproxy.cfg
cfg dosyasını açalım.
Aşağıdaki konfigurasyonu ekleyelim.
frontend ft_smtp
bind 0.0.0.0:25
mode tcp
timeout client 1m
log global
option tcplog
default_backend bk_postfix
backend bk_postfix
mode tcp
log global
option tcplog
timeout server 1m
timeout connect 5s
server postfix [EMAIL_SERVER_IP_ADRESI]:25 send-proxy
HAProxy’nin frontend bölümünde SMTP trafiğini nasıl ele aldığını tanımlıyor.
frontend: HAProxy’de bir frontend, gelen bağlantıları dinlemek ve bu bağlantıları uygun bir backend’e yönlendirmek için kullanılan bir yapılandırma parçasıdır. Burada bir “frontend” tanımlıyoruz.
bind: HAProxy’nin hangi IP adresi ve port üzerinde dinleme yapacağını belirtir.
mode tcp: HAProxy’nin TCP modunda çalışacağını belirtir. SMTP bir TCP protokolüdür, bu nedenle HAProxy’nin bu modda çalışması gerekir. TCP modunda çalışmak, bağlantı seviyesinde (Layer 4) işlem yapıldığını ve trafiğin sadece yönlendirildiğini belirtir.
default_backend: Bu, frontend’e gelen bağlantıların hangi backend’e yönlendirileceğini belirtir. Burada “bk_postfix” adlı bir backend tanımladık. Frontend’e gelen SMTP trafiğinin bk_postfix adlı backend’e yönlendirileceği anlamına gelir.
Bu yapılandırma, HAProxy’yi 25 numaralı portta gelen SMTP trafiğini dinlemesi ve bu trafiği “bk_postfix” adlı backend’e yönlendirmesi için ayarlıyor. Zaman aşımı 1 dakika olarak ayarlanmış ve her bağlantı hakkında log tutuluyor. Bu yapılandırma, SMTP trafiğinin birkaç sunucuya yönlendirilmesini veya bir postfix sunucusuna yönlendirilmesini sağlar.
backend kısmı ise, SMTP trafiğini nasıl yönlendireceğini belirtiyor
backend: HAProxy’de backend, frontend’den gelen bağlantıların hangi sunucuya veya sunuculara yönlendirileceğini tanımlar.
server proxy: Bu satır, backend sunucusunun IP adresini ve portunu belirtir. Burada email sunucunuzun IP adresini yazabilirsiniz.
send-proxy: Bu seçenek, HAProxy’nin kaynak istemcinin gerçek IP adresini (HAProxy üzerinden gelen orijinal istemcinin IP adresini) Postfix sunucusuna ileteceği anlamına gelir. Normalde, HAProxy üzerinden gelen trafiğin kaynağı HAProxy’nin IP adresi olarak görünür, ancak send-proxy iletilirse Postfix sunucusu orijinal istemcinin IP’sini öğrenebilir. Bu özellikle istemci IP’sine dayalı güvenlik veya loglama politikalarına sahip sistemler için faydalıdır.
Email sunucumuzda postfix mevcut ise;
postscreen_upstream_proxy_protocol = haproxy
ayarını ekleyebiliriz.
Bununla birlikte, Postfix’in proxy arkasından gelen SMTP bağlantılarında, istemcinin gerçek IP adresini almasına olanak tanır. Bu, HAProxy gibi bir yük dengeleyici kullanıldığında çok önemlidir çünkü Postfix, istemcinin gerçek IP’sini öğrenir ve doğru loglama, güvenlik ve spam filtreleme işlemlerini yapabilir.
Bu ayarlamalardan sonra;
# systemctl restart haproxy
komutu ile HAProxy servisini restart edelim.
Test etmek için;
# telnet localhost 25
komutu ile 25 portundan istek atabilirsiniz.
Faydalı Olması Dileğiyle.