Kendi posta sunucunu kurduğunda ilk hafta her şey güzel görünür; ikinci haftadan itibaren kutular reklam, kimlik avı ve rastgele Çince mailler ile dolmaya başlar. Rspamd kurulumu, bu akışı kaynağında durdurup sunucunun itibarını korumanın en pratik yoludur. SpamAssassin'e kıyasla çok daha az CPU tüketir, kuralları paralel çalıştırır ve Postfix'e milter olarak bağlandığı için maili kabul etmeden önce reddetme şansı verir — yani kuyruğun hiç şişmez.
Bu rehberde Rspamd'ı sıfırdan kurup Postfix'e bağlayacağız, skor eşiklerinin ne anlama geldiğini ve nasıl ayarlanacağını konuşacağız, Bayes filtresini eğiteceğiz, giden mailleri DKIM ile imzalatacağız ve web arayüzünü güvenli biçimde açacağız. Sonunda elinde yanlış pozitif üretmeyen, sürekli öğrenen ve tek bir arayüzden izlenebilen bir filtre olacak.
Kurulum ve Redis Bağımlılığı#
Rspamd, öğrendiği her şeyi (Bayes istatistikleri, greylisting kayıtları, hız sınırı sayaçları, itibar verileri) Redis'te tutar. Redis olmadan da çalışır ama öğrenemez; yani kurulumun ilk adımı Redis'tir.
# Depoyu ekle ve kur (Debian/Ubuntu)
apt update
apt install -y redis-server rspamd
# Redis'i yalnızca localhost'a bağla ve kalıcılığı aç
sed -i 's/^bind .*/bind 127.0.0.1 ::1/' /etc/redis/redis.conf
systemctl enable --now redis-server rspamd
# Redis'in yanıt verdiğini doğrula
redis-cli ping
# PONG
Rspamd'ın yapılandırma mantığında bir incelik var: /etc/rspamd/ altındaki dosyaları doğrudan düzenleme. Paket güncellemesi onları geri yazar. Bunun yerine iki dizin kullanılır: local.d/ içindeki dosyalar varsayılan ayarlarla birleştirilir, override.d/ içindekiler ise ilgili bloğu tamamen değiştirir. Neredeyse her zaman local.d/ istediğin şeydir.
# Redis bağlantısını tüm modüllere tanıt
cat > /etc/rspamd/local.d/redis.conf <<'EOF'
servers = "127.0.0.1:6379";
EOF
systemctl reload rspamd
rspamadm configdump redis
rspamadm configdump komutu, birleştirme sonrası gerçekte etkin olan yapılandırmayı basar. Bir ayarın uygulanıp uygulanmadığını merak ettiğinde dosyaya değil bu çıktıya bak.
Postfix ile Milter Entegrasyonu#
Rspamd, Postfix'e milter protokolüyle bağlanır. Bu bağlantı tipi, mailin SMTP oturumu daha kapanmadan taranmasını sağlar; sonuç kötüyse Postfix maili kabul etmeden reddeder ve sen bounce üretmek zorunda kalmazsın.
# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:11332
non_smtpd_milters = $smtpd_milters
milter_protocol = 6
milter_mail_macros = i {mail_addr} {client_addr} {client_ptr} {auth_authen}
milter_default_action = accept
milter_default_action = accept satırı hayat kurtarır: Rspamd servisi çökerse Postfix mail almayı durdurmaz, sadece taramasız kabul eder. tempfail yazarsan filtre kapandığı anda tüm mail trafiğin durur. Bir spam filtresinin arızası, mail alamamaktan daha az zararlıdır.
milter_mail_macros satırındaki {auth_authen} değeri, kimliği doğrulanmış kullanıcının adını Rspamd'a taşır. Bu olmadan Rspamd, kendi kullanıcılarının gönderdiği maili yabancı trafikten ayıramaz ve giden mailleri de spam sanıp puanlamaya kalkar.
# Değişikliği uygula ve milter'ın dinlediğini doğrula
postfix reload
ss -lntp | grep 1133
# LISTEN ... 127.0.0.1:11332 (milter)
# LISTEN ... 127.0.0.1:11333 (controller / web arayüzü)
# LISTEN ... 127.0.0.1:11334 (normal worker)
Postfix tarafındaki diğer parametreleri ve kısıtlama zincirinin nasıl kurulduğunu Postfix main.cf yapılandırması yazısında ayrıntılı anlattım; RBL kontrollerini Postfix'te bırakıp içerik taramasını Rspamd'a devretmek en verimli iş bölümüdür.
Skor Eşikleri ve Eylemler#
Rspamd her maile bir skor verir ve bu skoru eşiklerle karşılaştırıp bir eyleme dönüştürür. Varsayılan eşikler çoğu kurulum için makul ama trafiğine göre ayarlaman gerekir.
# /etc/rspamd/local.d/actions.conf
greylist = 4;
add_header = 6;
rewrite_subject = null;
reject = 15;
| Eylem | Anlamı | Kullanıcı ne görür |
|---|---|---|
no action | Skor eşiğin altında | Mail Gelen Kutusu'na düşer |
greylist | Geçici ret, tekrar denenmesi beklenir | Mail birkaç dakika gecikir |
add_header | X-Spam: Yes başlığı eklenir | Sieve kuralı Junk'a taşır |
rewrite_subject | Konu başına etiket eklenir | [SPAM] Konu görünür |
reject | SMTP oturumunda reddedilir | Gönderen bounce alır |
reject eşiğini düşürme konusunda acele etme. 15 puan, gerçekten çok sayıda kötü sinyalin üst üste geldiği anlamına gelir; bunu 10'a çekersen meşru bir bültenin kaybolma ihtimali ciddi biçimde artar ve kaybolan mailin fark edilmesi haftalar sürer. Ölçmeden değiştirme; önce iki hafta log topla.
Greylisting, tanımadığı bir göndericiye "şimdi olmaz, sonra tekrar dene" der. Gerçek posta sunucuları tekrar dener, basit spam botları denemez. Bedeli ilk mailde birkaç dakikalık gecikmedir; bu davranış kullanıcıları şaşırtabilir, greylisting kaynaklı mail gecikmesi yazısı bu gecikmenin nasıl açıklanacağını anlatıyor.
Bayes Filtresini Eğitmek#
Rspamd'ın istatistiksel filtresi, senin trafiğine özgü kelime dağılımlarını öğrenir. Eğitilmemiş bir Bayes filtresi neredeyse hiçbir şey katmaz; eğitilmiş olanı ise en güçlü tekil sinyaldir.
# /etc/rspamd/local.d/classifier-bayes.conf
backend = "redis";
autolearn = true;
min_learns = 200;
min_learns = 200 ayarı, Rspamd'ın her iki sınıftan da en az 200 örnek görmeden Bayes skorunu kullanmamasını sağlar. Bu güvenlik önlemi olmadan, ilk beş spam'den öğrenilen yanlış bir kalıp tüm meşru trafiğini işaretlemeye başlayabilir.
Manuel eğitim, elindeki gerçek maillerle yapılır:
# Spam klasöründeki mailleri spam olarak öğret
rspamc learn_spam /var/mail/vhosts/firmaniz.com/ali/Maildir/.Junk/cur/
# Gelen Kutusu'ndaki meşru mailleri ham olarak öğret
rspamc learn_ham /var/mail/vhosts/firmaniz.com/ali/Maildir/cur/
# Öğrenilen örnek sayısını kontrol et
rspamc stat | grep -i learned
# Statfile: BAYES_SPAM learned: 1240
# Statfile: BAYES_HAM learned: 1876
İki sınıfın örnek sayısını kabaca dengede tut. 5000 spam'e karşı 200 ham öğretirsen filtre "her şey spam" eğilimine girer. Kullanıcıların Junk klasörüne taşıdığı maillerden otomatik öğrenmek istersen, Dovecot'un IMAP olayları eklentisiyle klasör taşımalarını rspamc çağrısına bağlayabilirsin — bu, uzun vadede en az bakım gerektiren yöntemdir.
DKIM İmzalama ve Giden Mail Politikası#
Rspamd yalnızca gelen maili taramaz; giden mailleri DKIM ile imzalayabilir. Bu, ayrı bir imzalama servisi kurma ihtiyacını ortadan kaldırır.
# /etc/rspamd/local.d/dkim_signing.conf
path = "/var/lib/rspamd/dkim/$domain.$selector.key";
selector = "mail";
allow_username_mismatch = true;
use_domain = "header";
sign_authenticated = true;
sign_local = true;
Anahtar çiftini rspamadm üretir ve DNS'e koyacağın TXT kaydını ekrana basar:
mkdir -p /var/lib/rspamd/dkim
rspamadm dkim_keygen -s mail -b 2048 -d firmaniz.com \
-k /var/lib/rspamd/dkim/firmaniz.com.mail.key
chown _rspamd:_rspamd /var/lib/rspamd/dkim/firmaniz.com.mail.key
chmod 600 /var/lib/rspamd/dkim/firmaniz.com.mail.key
systemctl reload rspamd
Çıktıdaki mail._domainkey IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBg..." ) satırını DNS bölgene ekle. 2048 bitlik anahtarın TXT değeri 255 karakteri aştığı için birçok DNS paneli onu parçalara bölmeni ister; bu ayrıntı DKIM TXT kaydı 255 karakter sınırı yazısında açıklanıyor. Anahtarı belirli aralıklarla yenilemeyi de planla; DKIM anahtar rotasyonu yazısı kesintisiz geçişin nasıl yapılacağını anlatıyor.
İmzanın gerçekten eklendiğini kendi kutuna test maili atarak doğrula; başlıklarda DKIM-Signature satırı ve alıcı tarafında dkim=pass görmelisin.
Web Arayüzü ve Günlük İzleme#
Rspamd'ın kendi web arayüzü, hangi kuralın kaç puan verdiğini görmenin en hızlı yoludur. Ancak varsayılan olarak yalnızca localhost'ta dinler ve öyle kalmalıdır.
# Arayüz için şifre üret
rspamadm pw
# Enter password: ...
# $2$abc123...
cat > /etc/rspamd/local.d/worker-controller.inc <<'EOF'
password = "$2$abc123...";
enable_password = "$2$def456...";
bind_socket = "127.0.0.1:11334";
EOF
systemctl reload rspamd
Arayüze internetten doğrudan açmak yerine SSH tüneliyle eriş:
ssh -L 11334:127.0.0.1:11334 [email protected]
# Sonra tarayıcıda: http://localhost:11334
password salt okunur erişim verir, enable_password ise ayar değiştirme yetkisi. İkisini farklı tut. Günlük izleme için komut satırı çoğu zaman daha hızlıdır:
# Son taramaların özet satırları
journalctl -u rspamd -f | grep -E "reject|add_header|greylist"
# Tek bir maili yeniden tarayıp hangi kuralların tetiklendiğini gör
rspamc symbols < /tmp/ornek-mail.eml
rspamc symbols çıktısı, yanlış pozitif şikâyetlerini çözmenin tek doğru yoludur: kullanıcıdan .eml dosyasını iste, bu komuttan geçir ve hangi sembolün skoru şişirdiğini gör.
Sık Yapılan Hatalar ve Ayar Tuzakları#
/etc/rspamd/altındaki dosyaları doğrudan düzenlemek. Paket güncellemesi değişikliklerini siler ve sebebini bulman günler alır. Her zamanlocal.d/kullan.milter_default_action = tempfailbırakmak. Rspamd bir sebeple durduğunda tüm mail trafiğin durur.acceptdaha güvenli varsayılandır.- Redis'i unutmak. Redis çalışmıyorsa Bayes öğrenmez, greylisting çalışmaz, hız sınırı sayaçları tutulmaz; Rspamd hata vermez, sadece sessizce daha aptal olur.
sign_authenticatedayarını kapalı bırakmak. Kullanıcıların Outlook'tan gönderdiği mailler imzasız çıkar ve DMARC hizalaması başarısız olur.- Reject eşiğini erkenden düşürmek. İki hafta log toplamadan yapılan her eşik değişikliği kördür. Önce
add_headerile işaretle, davranışı izle, sonra sıkılaştır. - Ham örnek vermeden Bayes eğitmek. Yalnızca spam öğretilen bir sınıflandırıcı meşru mailleri de spam'e yakın puanlar.
Kara listeye düşme ya da teslimat sorunu yaşarsan, önce kendi gönderim tarafını denetle. Gönderim yapılandırmanı dışarıdan sınamak için SMTP test aracımızı kullanabilir, altyapıyı komple hazır almak istersen SMTP sunucu paketlerimize bakabilirsin.
Sıkça Sorulan Sorular#
Rspamd mi SpamAssassin mi kullanmalıyım#
Yeni bir kurulumda Rspamd genellikle daha iyi bir seçimdir: kuralları paralel çalıştırdığı için aynı donanımda çok daha yüksek hacim işler, milter olarak bağlandığı için maili kabul etmeden reddedebilir ve yerleşik bir web arayüzü sunar. SpamAssassin'in avantajı çok geniş bir üçüncü parti kural ekosistemi ve uzun yıllara dayanan dokümantasyondur. Var olan bir SpamAssassin kurulumun düzgün çalışıyorsa sırf moda olduğu için taşımana gerek yok.
Rspamd kurduktan sonra meşru mailler spam'e düşüyor, ne yapmalıyım#
Önce sorunlu mailin ham hâlini alıp rspamc symbols komutundan geçir; hangi sembolün kaç puan verdiğini tam olarak görürsün. Sebep genellikle üç şeyden biridir: gönderenin SPF veya DKIM kaydı hatalıdır, IP'si bir kara listededir ya da Bayes filtresi yeterince ham örnek görmemiştir. Geçici çözüm olarak ilgili sembolün skorunu düşürebilir veya göndereni beyaz listeye alabilirsin, ama kalıcı çözüm Bayes'i dengeli eğitmektir.
Bayes filtresi ne kadar sürede işe yarar hâle gelir#
Her iki sınıftan da en az birkaç yüz örnek gördükten sonra anlamlı katkı vermeye başlar; min_learns varsayılanı bu yüzden 200'dür. Günde birkaç yüz mail alan bir sunucuda bu eşik bir ila iki haftada dolar. Süreci hızlandırmak istersen arşivindeki mevcut Junk ve Gelen Kutusu klasörlerini rspamc learn_spam ve rspamc learn_ham ile toplu olarak öğretebilirsin.
Rspamd ne kadar RAM ve CPU tüketir#
Küçük ve orta ölçekli bir sunucuda Rspamd, worker süreçleri dâhil genellikle birkaç yüz megabayt RAM ile yetinir; Redis'in kullanacağı bellek ise Bayes sözlüğünün büyüklüğüne bağlıdır ve zamanla artar. CPU tarafında asıl maliyet regex tabanlı kurallardır, ama Rspamd bunları paralel çalıştırdığı için tek çekirdekli bir sunucuda bile makul kalır. 1 GB RAM'li bir sanal sunucu tipik bir küçük işletme trafiği için yeterlidir.
Greylisting'i kapatmalı mıyım#
Kullanıcıların şifre sıfırlama ya da doğrulama kodu gibi anlık maillerde gecikme yaşaması seni rahatsız ediyorsa kapatmak makul olabilir; greylisting ilk temasta birkaç dakikalık gecikme yaratır. Alternatif olarak yalnızca yüksek skorlu mailler için greylisting uygulayabilir ya da bilinen sağlayıcıları muaf tutabilirsin. Tamamen kapatırsan basit spam botlarına karşı ucuz bir savunma katmanını kaybedersin, bu yüzden önce eşiği yükseltmeyi dene.
Rspamd web arayüzünü internete açabilir miyim#
Teknik olarak mümkün ama önermem. Arayüz, mail başlıklarını ve gönderen adreslerini gösterdiği için kendi başına hassas bir yüzeydir ve şifre dışında bir koruması yoktur. En güvenli erişim yöntemi SSH tüneli kurmaktır. Zorunlu olarak internete açman gerekiyorsa önüne kimlik doğrulaması yapan bir ters vekil sunucu koy, HTTPS zorunlu kıl ve erişimi IP bazlı sınırla.
Kapanış#
Rspamd'ı verimli kılan şey karmaşık ayarlar değil, birkaç doğru alışkanlıktır: yapılandırmayı yalnızca local.d/ altında yazmak, Redis'i ilk günden ayağa kaldırmak, milter_default_action değerini accept bırakmak ve Bayes filtresini dengeli biçimde eğitmek. Eşiklere dokunmadan önce en az iki hafta log toplamak da en az bunlar kadar önemli; ölçmeden yapılan sıkılaştırma, fark edilmesi haftalar süren mail kayıplarına yol açar. Yanlış pozitif geldiğinde de refleksin rspamc symbols çalıştırmak olsun.
Kendi filtre yığınını kurup yönetmek istiyorsan VDS ve sanal sunucu paketlerimizde tam root erişimiyle bu adımları uygulayabilirsin. Postfix, Dovecot ve Rspamd kurulu, DKIM anahtarı üretilmiş bir sistemi hazır teslim almayı tercih edersen SMTP sunucu paketlerimiz tam olarak bu ihtiyaç için hazırlandı; bakımı da bize bırakmak istersen sunucu yönetimi hizmetimiz spam filtresi ayarlarını da kapsar.