Zimbra’da Spam ve Virüs Filtreleme: SpamAssassin ve ClamAV Yapılandırması

Bir mail sunucusu yönetiyorsanız, spam ve virüs filtreleme konusunda geç kalmak ciddi sorunlara yol açabilir. Kullanıcılar her gün onlarca istenmeyen mail alıyor, zaman zaman zararlı ekler sisteme sızıyor ve IT departmanına akan şikayetler bitmez oluyor. Zimbra bu konuda oldukça iyi bir ekosisteme sahip: SpamAssassin ve ClamAV entegrasyonu varsayılan olarak geliyor, ama varsayılan ayarlar çoğu zaman yeterli olmuyor. Bu yazıda Zimbra üzerinde spam ve virüs filtrelemeyi gerçekten işe yarar hale getirmeyi konuşacağız.

SpamAssassin ve ClamAV Nedir, Zimbra ile İlişkileri Nasıl?

SpamAssassin, Apache Software Foundation tarafından geliştirilen açık kaynaklı bir spam filtreleme motorudur. Gelen e-postaları çeşitli kurallara, Bayes istatistiklerine ve DNS tabanlı kara listelere göre puanlar. Yüksek puan alan mailler spam olarak işaretlenir veya reddedilir.

ClamAV ise açık kaynaklı bir antivirüs motorudur. Zimbra’da gelen ve giden maillerin eklerini tarayarak bilinen virüs, trojan ve zararlı yazılımları tespit eder. Virüs imzaları düzenli olarak güncellenir.

Zimbra’nın mail akışı şu şekilde çalışır: Postfix gelen maili alır, Amavis bu maili hem SpamAssassin hem de ClamAV’a iletir, sonuçlara göre mail ya teslim edilir, ya karantinaya alınır ya da reddedilir. Bu zinciri iyi anlamak, sorun giderme sürecinde hayat kurtarır.

Mevcut Durumu Kontrol Etme

Herhangi bir değişiklik yapmadan önce sistemin mevcut durumunu kontrol etmek lazım. Zimbra servislerinin durumuna bakmakla başlayın:

su - zimbra
zmcontrol status

SpamAssassin ve ClamAV servislerini özel olarak kontrol etmek için:

zmantispamctl status
zmantivirus ctl status

Amavis’in loglarına bakarak mail filtrelemenin aktif olup olmadığını görelim:

tail -f /var/log/zimbra.log | grep -i "amavis|spam|virus"

Eğer servisler çalışmıyorsa önce bunları başlatmak gerekiyor:

zmantispamctl start
zmantivirusctl start

SpamAssassin Yapılandırması

Temel Ayarlar

Zimbra’da SpamAssassin ayarları Amavis üzerinden yönetilir. Ana yapılandırma dosyası /opt/zimbra/conf/amavisd.conf altında bulunur, ancak bu dosyayı doğrudan düzenlemek yerine local override dosyası kullanmak daha sağlıklıdır. Zimbra güncellemelerinde ana dosya üzerine yazılabilir.

Önce local ayar dosyasını oluşturalım:

vi /opt/zimbra/conf/amavisd.conf.in

Spam eşik değerlerini ayarlamak için zmprov komutlarını kullanalım. Bu değerleri Zimbra yönetimi üzerinden set etmek en güvenli yoldur:

# Spam olarak işaretleme eşiği (varsayılan 6.6)
zmprov mcf zimbraSpamKillPercent 75
zmprov mcf zimbraSpamTagPercent 33

# Spam subject prefix ayarla
zmprov mcf zimbraSpamSubjectTag "[SPAM]"

SpamAssassin’in kendi yapılandırma dosyasını düzenleyelim:

vi /opt/zimbra/data/spamassassin/localrules/zextras.cf

Bu dosya yoksa oluşturun ve şu içeriği ekleyin:

# Minimum puan eşiği
required_score 5.0

# Bayes filtresi aktif et
use_bayes 1
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 12.0

# DNS kara liste kontrolleri
use_dcc 0
use_pyzor 0
use_razor2 0

# Header kontrolleri
score MISSING_HEADERS 3.5
score FORGED_RCVD_HELO 3.0

# Türkçe karakter içeren spam'ları yakala
header LOCAL_TR_SPAM Subject =~ /[Uu][cC][rR][eE][tT][sS][iI][zZ]/
score LOCAL_TR_SPAM 2.0

Bayes Veritabanını Eğitme

Bayes filtresi ne kadar çok mail ile eğitilirse o kadar iyi sonuç verir. Gerçek dünyada çalışan bir sistemde ham spam ve ham (temiz) mail örneklerini toplayıp filtreyi eğitmek kritik öneme sahiptir.

# Spam klasöründeki mailleri spam olarak işaretle
su - zimbra
/opt/zimbra/common/bin/sa-learn --spam /path/to/spam/mails/

# Temiz mailleri ham olarak işaretle
/opt/zimbra/common/bin/sa-learn --ham /path/to/clean/mails/

# Bayes istatistiklerini görüntüle
/opt/zimbra/common/bin/sa-learn --dump magic

Tipik bir üretim ortamında en az 200 spam ve 200 temiz mail ile başlamak iyi bir pratiktir. Zamanla bu sayı arttıkça filtreleme kalitesi de artar.

DNS Tabanlı Kara Listeler (DNSBL)

Postfix seviyesinde DNSBL kontrolü eklemek, zararlı maillerin sisteme girmesini daha erken aşamada önler. Postfix ana yapılandırmasına şu satırları ekleyin:

vi /opt/zimbra/conf/postfix_recipient_restrictions.cf

Amavis içindeki DNSBL ayarlarını düzenlemek için:

su - zimbra
zmprov mcf zimbraMtaRestriction "reject_rbl_client zen.spamhaus.org"
zmprov mcf +zimbraMtaRestriction "reject_rbl_client bl.spamcop.net"
zmprov mcf +zimbraMtaRestriction "reject_rbl_client dnsbl.sorbs.net"

Değişiklikleri uygulamak için Postfix’i yeniden başlatın:

zmmtactl restart

ClamAV Yapılandırması

Temel ClamAV Ayarları

ClamAV konfigürasyon dosyasına bakalım:

cat /opt/zimbra/conf/clamd.conf

Zimbra’nın ClamAV yapılandırmasını özelleştirmek için:

vi /opt/zimbra/conf/clamd.conf

Aşağıdaki parametreler günlük yönetimde sık kullanılır:

MaxFileSize: Taranacak maksimum dosya boyutu, varsayılan 25MB MaxScanSize: Arşivlerde toplam taranacak boyut MaxFiles: Arşiv içindeki maksimum dosya sayısı FollowDirectorySymlinks: Sembolik link takibi DetectPUA: Potansiyel olarak istenmeyen uygulamaları tespit et

# clamd.conf içine eklenecek önerilen ayarlar
MaxFileSize 30M
MaxScanSize 100M
MaxFiles 10000
DetectPUA yes
HeuristicAlerts yes
AlertEncrypted yes
AlertEncryptedArchive yes
AlertEncryptedDoc yes

Virüs İmzalarını Güncelleme

ClamAV imzalarının güncel olması şart. Zimbra bunu FreshClam servisi ile otomatik yapıyor, ama bazen manuel güncelleme gerekebilir:

su - zimbra
/opt/zimbra/common/bin/freshclam --config-file=/opt/zimbra/conf/freshclam.conf

Otomatik güncelleme için freshclam yapılandırmasını kontrol edin:

cat /opt/zimbra/conf/freshclam.conf | grep -E "UpdateInterval|DatabaseMirror"

Güncelleme sıklığını ayarlamak için:

vi /opt/zimbra/conf/freshclam.conf

Şu satırları kontrol edin ve gerekirse güncelleyin:

DatabaseMirror database.clamav.net
UpdateInterval 3600
Checks 24

ClamAV Test Etme

EICAR test dosyası, antivirüs sistemlerini test etmek için kullanılan standart bir yöntemdir. Gerçek bir virüs değildir ama tüm antivirüs motorları tarafından tespit edilir:

# EICAR test string'ini bir dosyaya yaz
echo 'X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar_test.txt

# ClamAV ile tara
/opt/zimbra/common/bin/clamscan /tmp/eicar_test.txt

Bu test size ClamAV’ın düzgün çalışıp çalışmadığını gösterir. EICAR.TEST.3 veya benzeri bir çıktı görmeniz gerekmektedir.

Amavis Entegrasyonu ve İnce Ayarlar

Amavis, SpamAssassin ve ClamAV arasındaki koordinatördür. Amavis politikalarını düzenlemek için:

su - zimbra
vi /opt/zimbra/conf/amavisd.conf

Karantina ayarlarını yapılandıralım. Virüslü maillerin nereye gideceğini belirleyelim:

# Virus karantina adresi
$virus_quarantine_to = '[email protected]';

# Spam karantina adresi
$spam_quarantine_to = '[email protected]';

# Karantina yerine reddet
$final_virus_destiny = D_REJECT;
$final_spam_destiny = D_BOUNCE;

Belirli dosya uzantılarını bloke etmek için Amavis kural dosyasını düzenleyin. Exe, bat, com gibi tehlikeli uzantıları doğrudan engelleme iyi bir güvenlik pratiğidir:

vi /opt/zimbra/data/amavisd/.spamassassin/user_prefs

Whitelist ve Blacklist Yönetimi

Gerçek dünyada bazı meşru göndericiler spam olarak işaretlenebilir, bazı zararlılar ise geçebilir. Whitelist ve blacklist yönetimi bu durumları düzeltmek için kullanılır.

Zimbra admin panelinden global whitelist/blacklist yönetimi için:

# Belirli bir domain'i whitelist'e ekle
zmprov mcf +zimbraSpamWhitelistSender "@guvenilirdomain.com"

# Belirli bir adresi blacklist'e ekle
zmprov mcf +zimbraSpamBlacklistSender "[email protected]"

# Mevcut whitelist'i görüntüle
zmprov gcf zimbraSpamWhitelistSender

Kullanıcı bazında whitelist/blacklist için:

# Kullanıcı bazında spam whitelist
zmprov ma [email protected] zimbraMailWhitelistSender "[email protected]"

SpamAssassin local kural dosyasına da ekleyebiliriz:

vi /opt/zimbra/data/spamassassin/localrules/zextras.cf

# Aşağıdaki satırları ekle
whitelist_from *@guvenilirdomain.com
blacklist_from *@kotudomain.com
whitelist_from_rcvd example.com mail.example.com

Performans ve İzleme

Log Analizi

Filtreleme sisteminin ne kadar etkili çalıştığını anlamak için logları düzenli analiz etmek gerekir:

# Günlük spam istatistikleri
grep "Passed SPAM|Blocked SPAM" /var/log/zimbra.log | wc -l

# Virüs tespitleri
grep "INFECTED" /var/log/zimbra.log | tail -20

# SpamAssassin puan dağılımı
grep "score=" /var/log/zimbra.log | awk -F'score=' '{print $2}' | cut -d' ' -f1 | sort -n | uniq -c

Daha kapsamlı bir analiz scripti yazalım:

#!/bin/bash
# Zimbra spam raporu scripti
# /opt/zimbra/scripts/spam_report.sh

LOG="/var/log/zimbra.log"
DATE=$(date +%Y-%m-%d)

echo "=== Zimbra Spam/Virus Raporu - $DATE ==="
echo ""
echo "Spam İstatistikleri:"
echo "  Geçen spam: $(grep "Passed SPAM" $LOG | wc -l)"
echo "  Engellenen spam: $(grep "Blocked SPAM" $LOG | wc -l)"
echo "  Temiz mail: $(grep "Passed CLEAN" $LOG | wc -l)"
echo ""
echo "Virüs İstatistikleri:"
echo "  Tespit edilen virüs: $(grep "INFECTED" $LOG | wc -l)"
echo "  Engellenen virüs: $(grep "Blocked INFECTED" $LOG | wc -l)"
echo ""
echo "Son 5 virüs tespiti:"
grep "INFECTED" $LOG | tail -5

Bu scripti çalıştırılabilir yapın ve cron’a ekleyin:

chmod +x /opt/zimbra/scripts/spam_report.sh
crontab -e
# Her sabah 08:00'de rapor gönder
0 8 * * * /opt/zimbra/scripts/spam_report.sh | mail -s "Zimbra Günlük Rapor" [email protected]

Yaygın Sorunlar ve Çözümleri

Sorun: SpamAssassin çok fazla false positive üretiyor, meşru mailler spam olarak işaretleniyor.

Çözüm: Spam puanı eşiğini yükseltin ve Bayes veritabanını daha fazla temiz mail ile eğitin. Ayrıca kurumsal mail sunucularınızın IP adreslerini whitelist’e ekleyin.

Sorun: ClamAV imzaları güncellenmiyor, freshclam hata veriyor.

# Freshclam logunu kontrol et
tail -50 /var/log/clamav/freshclam.log

# Bağlantı sorununu test et
curl -v https://database.clamav.net/main.cvd

# Proxy arkasındaysanız freshclam.conf'a proxy ekle
echo "HTTPProxyServer proxy.yourdomain.com" >> /opt/zimbra/conf/freshclam.conf
echo "HTTPProxyPort 8080" >> /opt/zimbra/conf/freshclam.conf

Sorun: Amavis servisi çöküyor veya başlamıyor.

# Amavis logunu incele
tail -100 /var/log/zimbra.log | grep -i amavis

# Amavis konfigürasyon dosyasını syntax kontrolü ile yükle
su - zimbra
/opt/zimbra/common/sbin/amavisd -c /opt/zimbra/conf/amavisd.conf debug 2>&1 | head -50

Güvenlik Sertleştirme Önerileri

Zimbra spam ve virüs filtrelemenin ötesinde birkaç ek güvenlik katmanı eklemek sistemi daha sağlam yapar.

SPF, DKIM ve DMARC kontrolleri etkinleştirin. Bu protokoller e-posta kimlik doğrulamasını sağlar:

# Postfix'te SPF kontrolü için
zmprov mcf zimbraMtaRestriction "reject_sender_login_mismatch"

# DKIM imzalama durumunu kontrol et
su - zimbra
zmdkimkeyutil -a -d yourdomain.com

Gönderici hız sınırlaması ekleyin. Bir hesabın ele geçirilmesi durumunda spam göndermesini sınırlandırır:

zmprov mcf zimbraMtaMaxMessageSize 20480000
zmprov mcf zimbraSmtpSendAddAuthHeader TRUE

Gece boyunca toplu spam saldırısı yaşadığınız durumlarda hızlı tepki verebilmek için monitoring alert’leri kurun. Belirli bir eşiğin üzerinde spam tespit edildiğinde alarm gönderen basit bir script işe yarar.

Sonuç

Zimbra’da spam ve virüs filtrelemesi, bir kere kurup unutulan bir sistem değildir. SpamAssassin’in Bayes veritabanını düzenli olarak yeni spam örnekleriyle beslemek, ClamAV imzalarının güncel kalmasını sağlamak ve log analizlerini periyodik olarak yapmak uzun vadede sistemin etkinliğini belirler.

Burada anlattığımız yapılandırmalar orta büyüklükte bir kurumsal ortam için makul bir başlangıç noktası sunar. Kendi ortamınıza göre spam eşik değerlerini, kara liste kaynaklarını ve karantina politikalarını uyarlamanız gerekecektir. Özellikle Türkçe içerikli spam’lar için yerel kurallar eklemek ve Bayes filtresini Türkçe mail örnekleriyle eğitmek, uluslararası kural setlerinin yakalayamadığı spam’ları yakalamada büyük fark yaratır.

Son olarak, hiçbir filtreleme sistemi yüzde yüz mükemmel değildir. Kullanıcılarınızı spam bildirme konusunda eğitmek ve bu bildirimleri Bayes eğitimi için kullanmak, zamanla sisteminizi bulunduğunuz ortama özel hale getirir. Bu da spam filtrelemenin gerçek gücünü ortaya çıkarır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir