~2 دقیقه مطالعه • بروزرسانی ۷ بهمن ۱۴۰۴

1. SpamAssassin چیست؟


SpamAssassin یک سیستم Rule-based + Score-based برای تشخیص اسپم است. این سرویس:

  • ایمیل را با مجموعه‌ای از قوانین بررسی می‌کند
  • به هر قانون امتیاز می‌دهد
  • مجموع امتیاز = نتیجه نهایی (Spam یا Clean)

SpamAssassin خودش ایمیل را Reject یا Accept نمی‌کند؛ فقط امتیاز می‌دهد.

تصمیم نهایی را معمولاً Amavis می‌گیرد.


2. نقش SpamAssassin در معماری iRedMail


Internet
   ↓
Postfix
   ↓
Amavis
   ↓
SpamAssassin  ← (Scoring)
   ↓
Dovecot / Mailbox

SpamAssassin فقط موتور تشخیص است، نه فیلتر نهایی.


3. نوع سرویس SpamAssassin در iRedMail


در iRedMail معمولاً به دو شکل استفاده می‌شود:

  • Embedded داخل Amavis (پیشنهادی)
  • Daemon مستقل (spamd)

بررسی وضعیت سرویس:

systemctl status spamassassin

4. مسیرهای مهم SpamAssassin


مسیرتوضیح
/etc/mail/spamassassin/تنظیمات اصلی
/etc/mail/spamassassin/local.cfتنظیمات سفارشی
/var/lib/spamassassin/Bayes و cache
/var/log/maillogلاگ‌ها

فقط فایل local.cf را ویرایش کن.


5. نحوه امتیازدهی (Scoring)


هر Rule یک امتیاز دارد. مثال:

Ruleامتیاز
SPF_FAIL+2.0
DKIM_FAIL+1.5
HTML_ONLY+1.0
BAYES_99+3.5

اگر مجموع ≥ 5 → اسپم


6. Threshold پیش‌فرض در iRedMail


در Amavis:

$sa_tag2_level_deflt = 5.0;
$sa_kill_level_deflt = 10.0;
  • ۵ تا ۱۰ → اسپم (Tag)
  • ۱۰ به بالا → Reject

7. تنظیمات مهم local.cf


7.1 فعال‌سازی Bayes

use_bayes 1
bayes_auto_learn 1

7.2 تنظیم زبان‌ها (برای کاهش false-positive فارسی)

ok_languages en fa
ok_locales en fa

7.3 تغییر Subject ایمیل‌های اسپم

rewrite_header Subject [SPAM]

7.4 Whitelist دامنه‌ها

whitelist_from *@example.com

8. Bayes Filtering (هوشمند)


SpamAssassin می‌تواند یاد بگیرد چه ایمیلی اسپم است و چه ایمیلی سالم.

آموزش دستی:

sa-learn --spam /path/to/spam
sa-learn --ham /path/to/ham

بررسی وضعیت:

sa-learn --dump magic

9. DNS-based Checks


SpamAssassin از موارد زیر استفاده می‌کند:

  • RBL
  • SPF
  • DKIM
  • DMARC

DNS سالم و سریع بسیار مهم است.


10. تست SpamAssassin


تست استاندارد GTUBE:

این متن را در یک ایمیل قرار بده:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

اگر اسپم تشخیص داده نشد → مشکل وجود دارد.


11. لاگ و Debug


مشاهده لاگ‌ها:

tail -f /var/log/maillog | grep spam

دیباگ عمیق:

spamassassin -D < test.eml

12. نکات امنیتی و Performance


  • Ruleهای اضافی نصب نکن
  • Bayes DB را مرتب بکاپ بگیر
  • Expire Bayes با cron فعال باشد
  • spamd را بدون نیاز اجرا نکن

13. خطاهای رایج


False Positive زیاد

  • زبان‌ها درست تنظیم نشده
  • Threshold پایین است

CPU بالا

  • Rule زیاد
  • spamd بدون tuning

نتیجه‌گیری


SpamAssassin مغز تشخیص اسپم در iRedMail است. این سرویس امتیازدهی می‌کند و Amavis تصمیم نهایی را می‌گیرد. تنظیم درست SpamAssassin باعث تعادل بین امنیت و جلوگیری از خطای تشخیص می‌شود. با شناخت Ruleها، Bayes، Threshold و لاگ‌ها می‌توان یک سیستم ضداسپم دقیق و پایدار ساخت.


نوشته و پژوهش شده توسط دکتر شاهین صیامی