Mail sunucularında spam filtre log analizi, e-posta trafiğinin güvenliğini ve verimliliğini artırmak için vazgeçilmez bir süreçtir.
Mail sunucularında spam filtre log analizi, e-posta trafiğinin güvenliğini ve verimliliğini artırmak için vazgeçilmez bir süreçtir. Günlük milyonlarca e-posta akışında spam mesajlar, sunucu kaynaklarını tüketmekte ve kullanıcı deneyimini olumsuz etkilemektedir. Bu loglar, SpamAssassin, Rspamd veya Postfix gibi filtreleme araçlarının karar verme mekanizmalarını detaylı bir şekilde kaydeder. Etkili bir analizle, yanlış pozitifleri minimize edebilir, filtre kurallarını optimize edebilir ve olası güvenlik açıklarını tespit edebilirsiniz. Bu makalede, log yapılarını inceleyecek, pratik analiz adımlarını paylaşacak ve somut örneklerle rehberlik edeceğiz.
Spam filtre logları, genellikle sistem syslog’una entegre edilir ve mail sunucunuzun konfigürasyonuna göre farklı dosyalarda saklanır. Postfix kullanan bir sistemde, /var/log/maillog veya /var/log/mail.log dosyaları ana kaynaktır. SpamAssassin gibi araçlar, bu loglara ek olarak /var/log/spamassassin/spamd.log benzeri özel dosyalar üretir. Log erişimini sağlamak için, root yetkileriyle dosyaları inceleyin ve rotasyon ayarlarını kontrol edin; örneğin logrotate ile haftalık sıkıştırma yaparak depolama sorunlarını önleyin.
Log satırları tipik olarak timestamp, IP adresi, gönderen bilgisi, alıcı, skor ve aksiyon (ACCEPT, REJECT, QUARANTINE) içerir. Bir örnek satır şöyle olabilir: 2023-10-15 14:30:45 spamd[1234]: spamd: got client conn from localhost [127.0.0.1]:5890, identified as [email protected], score=5.2 required=5.0 tests=SPAM_SCORE autolearn=spam. Bu yapıyı anlamak, filtre skorlarının nasıl hesaplandığını kavramanıza yardımcı olur. Düzenli erişim için tail -f komutunu kullanın: tail -f /var/log/maillog | grep spamd.
Log konumlarını belirlemek için öncelikle sunucu konfigürasyonunu gözden geçirin. Postfix’te main.cf dosyasındaki syslog_name parametresini kontrol edin. Rspamd kullanıyorsanız, /var/log/rspamd/rspamd.log yolunu inceleyin. Adım adım: 1) journalctl -u postfix ile systemd loglarını sorgulayın. 2) find /var/log -name "*mail*" -o -name "*spam*" ile dosyaları tarayın. 3) İzinleri ayarlayın: chmod 644 /var/log/maillog. Bu adımlar, analiz sürecini hızlandırır ve veri kaybını önler; her sunucuda yaklaşık 10-20 GB log birikimi gözlemlenebilir.
Her log satırını parçalara ayırarak analiz edin. Timestamp ile olay zamanını, client IP’si ile kaynak trafiği, skor değeriyle filtre güvenilirliğini değerlendirin. Tests alanı, BAYES_99 gibi kuralları listeler; örneğin SPAM_SCORE >4.0 ise quarantine uygular. Pratikte, awk '{print $NF}' /var/log/maillog | sort | uniq -c | sort -nr ile en sık skorları sıralayın. Bu, filtre etkinliğini ölçer ve kuralları ince ayarlamanıza olanak tanır, örneğin whitelist ekleyerek yanlış pozitifleri %20 azaltabilirsiniz.
Manuel analiz, küçük ölçekli sunucular için uygundur; grep ile spam olaylarını filtreleyin: grep "spam\|reject" /var/log/maillog > spam_events.log. Bu komut, REJECT veya SPAM işaretli satırları ayıklar. Daha sonra, vi veya less ile inceleyin ve pattern’leri not alın. Otomatik teknikler için awk ve sed gibi araçlar idealdir; örneğin IP bazlı sayım: grep "spamd" /var/log/maillog | awk '{print $8}' | sort | uniq -c | sort -nr | head -10. Bu, en sorunlu IP’leri listeler ve firewall kurallarına entegre edilebilir.
Fail2Ban gibi araçlar logları gerçek zamanlı izler ve tekrarlanan spam IP’lerini banlar. Kurulum sonrası jail.local‘de mail jail’ini etkinleştirin. Analiz raporları için script yazın: Python ile pandas kütüphanesi kullanarak logları CSV’ye dönüştürün ve görselleştirin. Bu yöntemler, günlük 1000+ spam girişini yönetmede %30 zaman tasarrufu sağlar.
Grep ile hızlı tarama yapın: grep -i "score.*required" /var/log/maillog | wc -l skor bazlı olay sayısını verir. Awk ile gelişmiş işlem: awk '/spam/ {sum += $10; count++} END {print "Ortalama skor:", sum/count}' /var/log/maillog. Bu, ortalama spam skorunu hesaplar. Adımlar: 1) Logu yedekleyin. 2) Filtreyi çalıştırın. 3) Sonuçları /tmp/analiz.txt‘e kaydedin. Bu teknik, filtre threshold’unu ayarlamada kritik; örneğin required=5.0’ı 4.5’e düşürerek spam kaçaklarını azaltın, ancak FP’leri izleyin.
Bash scripti oluşturun: #!/bin/bash\nLOG=/var/log/maillog\ngrep "spam" $LOG | awk '{print $8}' | sort | uniq -c | sort -nr > top_ips.txt. Cron ile günlük çalıştırın: 0 2 * * * /path/to/script.sh. Python alternatifi: Pandas ile df = pd.read_csv('maillog.csv', sep=' ') ve groupby ile analiz. Bu, haftalık raporlar üretir; örneğin top 5 IP için blok listesi oluşturun. Uygulamada, 5000 satırlık logda 15 dakika sürer ve actionable insights sağlar.
Analiz sonrası, yüksek skorlu ama kabul edilen mesajları inceleyin ve kuralları güncelleyin. Whitelist’e güvenilir IP’leri ekleyin: SpamAssassin’de whitelist_from *.ornekdomain.com. Quarantine klasörünü düzenli temizleyin ve kullanıcılara erişim sağlayın. Metrikler takip edin: Spam hit rate (%99 üzeri hedefleyin), FP oranı (%0.1 altı). Araçlar gibi Logwatch ile özet raporlar alın.
Uzun vadede, machine learning tabanlı filtreler (örneğin Rspamd’in neural ağları) entegre edin. Düzenli analizle sunucu yükünü %40 azaltın ve kullanıcı şikayetlerini minimize edin. Örnek: Bir ayda 10.000 spamden 9500’ü yakalandıysa, kalanları inceleyerek BAYES kurallarını eğitin.
Yüksek FP: Loglarda “autolearn=ham” arayın ve BAYES veritabanını temizleyin: sa-learn --clear --spam /path/to/spam_mail. IP spoofing: DKIM/SPF skorlarını yükseltin. Adımlar: 1) Log pattern’ini belirleyin. 2) Kural ekleyin. 3) Test edin: spamassassin -t test_mail.eml. Bu, newsletter’ların yanlış filtrelenmesini önler ve memnuniyeti artırır.
Hit rate: (Spam yakalanan / Toplam spam) *100. Logdan: Toplam incoming grep "connect from" | wc -l, spam grep "spam" | wc -l. FP için kullanıcı geri bildirimlerini loglayın. Dashboard için ELK Stack düşünün, ancak basit awk ile başlayın. Hedef: Aylık raporla iyileşmeyi izleyin, skor dağılımını grafikleyin.
Spam filtre log analizi, proaktif sistem yönetimi sağlar. Düzenli uygulama ile mail sunucunuzu daha güvenli ve verimli hale getirin; bu süreç, kurumsal iletişimde güvenilirliği pekiştirir ve operasyonel maliyetleri düşürür.