~2 min read • Updated Jan 27, 2026
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 و لاگها میتوان یک سیستم ضداسپم دقیق و پایدار ساخت.
Written & researched by Dr. Shahin Siami