از آنجایی که نصب و راه اندازی هیچ ایمیل سروری بدون اعمال تنظیمات در مقابل virus و spam ها کامل نخواهد بود ما قصد داریم که در این پست درباره نصب و راه اندازی SpamAssassin و آنتی ویروس ClamAV صحبت کنیم. در دو پست قبل از سری پست های Postfix شما نحوه نصب و راه اندازی و مدیریت دیتابیس میل سرور از طریق phpmyadmin و همچنین نحوه کانفیگ postfix و dovecot برای کنترل میل ورودی و خروجی را آموختید، علاوه بر این نحوه تنظیم یک میل کلاینت همچون Thunderbird برای virtual account هایی که قبلا ایجاد کردیم را شرح دادیم.
همچنین توصیه میشود مطالعه کنید.
Part 1 : نصب و راه اندازی میل سرور Postfix و Dovecot به همراه دیتابیس MariaDB
Part 2 : آموزش تنظیمات Postfix و Dovecot به همراه Virtual Domain Users در Linux
Part 3 : نحوه افزودن Antivirus و Spam Protection به میل سرور Postfix با استفاده از ClamAV و SpamAssassin
Part 4 : نحوه نصب و راه اندازی RoundCube (کلاینت وب میل) با Virtual Users در Postfix
لطفا در خاطر داشته باشید که حتی اگر چه سیستم عامل های لینوکسی عموما عاری از ویروس (بدون ویروس) بررسی شده اند احتمال اینکه کلاینت هایی که با سیستم عامل های دیگری به میل سرور شما متصل میشوند هم وجود دارد.
به همین خاطر شما باید تمهیداتی را به منظور محافظت سرورتان از این چنین تهدیدات ممکنی بیاندیشید.
تنظیمات SpamAssassin برای Postfix
در عملیات دریافت ایمیل ابزار spamassassin بین دنیای بیرون و سرویس های ایمیل در حال کار روی سرور شما قرار خواهد گرفت اگر این ابزار مطابق با رول ها و تنظیمات تعریف شده خودش بفهمد که یک پیام ورودی در حقیقت یک spam است خط subject را به گونه ای که کاملا مشخص باشد تغییر خواهد داد. و اما چگونه ...
در صورت نصب نبودن برنامه از طریق دستور زیر آنرا نصب می کنیم:
فایل کانفیگ اصلی فایل /etc/mail/spamassassin/local.cf میباشد و ما باید مطمئن شویم که آپشن های زیر موجود باشند. (اگر وجود نداشتند آنها را اضافه کنید و یا در صورت نیاز اگر کامنت بودند از کامنت در بیاورید) :
بعد از ذخیره این تغییرات سرویس spam filter را فعال و استارت میکنیم و سپس رول های اسپم را آپدیت مینماییم :
برای آپشن های تنظیماتی بیشتر شما باید به داکیومنت های آن و با اجرای دستور perldoc Mail::SpamAssassin::Conf رجوع کنید.
برقراری ارتباط Postfix و SpamAssassin
به منظور برقراری ارتباط موثر postfix و spamassassin ما نیاز داریم تا یک یوزر و گروه اختصاصی برای اجرای سرویس spam filter ایجاد کنیم :
سپس خط زیر را در پایان فایل /etc/postfix/master.cf اضافه کنید :
و مشخص کردن (در بالای فایل) اینکه spam assassin به عنوان content_filter عمل خواهد کرد :
نهایتا برای اعمال تغییرات postfix را ریستارت کنید :
برای بررسی اینکه آیا spam assassin به درستی کار میکند و اسپم های ورودی را تشخیص میدهد تستی با عنوان GTUBE یا
Generic Test for Unsolicited Bulk Email موجود است.
برای اجرای این تست یک ایمیل از دامین خارج از شبکه خود (مانند Yahoo , Hotmail و یا Gamil) به یک اکانت موجود در ایمیل سرورتان ارسال کنید. subject را هر چی که میخواهید تعریف کنید و در متن ایمیل از پیغام زیر استفاده کنید :
برای مثال من پیغام بالا را از جیمیل خودم به یکی از اکانت های میل سرور ارسال کردم :
و لاگ های مربوطه هشدار spam را به من نمایش میدهند :
همانطور که در تصویر بالا میبینید این پیغام یک spam score برابر با 1002.3 دارد. علاوه بر این شما میتوانید spam assassin را مستقیما از طریق command line تست کنید :
دستور بالا یکسری خروجی نمایش خواهد داد که شامل موارد زیر خواهد بود :
اگر این تست ها موفقیت آمیز نباشند شما میتوانید به راهنمای spamassassin integrations رجوع کنید.
استارت کردن ClamAV و آپدیت کردن تعاریف Virus
در ابتدا ما نیاز خواهیم داشت که فایل /etc/clamd.d/scan.conf ویرایش کنیم و خط زیر را از کامنت در بیآوریم :
و خط زیر را کامنت کنیم یا حذف نماییم :
سپس سرویس clamav scanner را فعال و استارت میکنیم :
و فراموش نکنید که antivirus_can_scan_system SELinux boolean را برابر با مقدار 1 تعریف کنید :
در این لحظه زمان بررسی وضعیت سرویس ها میباشد :
همانطور که در تصویر بالا میبینید signature های ویروس بزرگتر از 7 روز هستند برای آپدیت کردن آنها ما از ابزاری به نام freshclam استفاده میکنیم که به عنوان بخشی از پکیج clamav-update نصب شده است.
آسانترین راه برای آپدیت تعاریف ویروس از طریق یک cron job میباشد که در زمان های دلخواه اجرا خواهد شد (برای مثال یک بار در روز در ساعت 13:00 که از طریق نمونه زیر انجام خواهد شد) :
شما همچنین میتوانید تعاریف ویروس را به صورت دستی آپدیت کنید اما قبل از آن باید خط زیر را در فایل /etc/freshclam.conf حذف یا کامنت کنید :
اکنون باید بتوانید دستور زیر را اجرا کنید :
که تعاریف ویروس را به دلخواه شما آپدیت خواهد کرد :
تست کردن ClamAV برای Virus در Email ها
برای بررسی این که آیا ClamAV به درستی کار میکند بیاید یک virus تستی به دایرکتوری Maildir اکانت tecmint@linuxnewz.com (که در مسیر /home/vmail/linuxnewz.com/tecmint/Maildir قرار گرفته) برای شبیه سازی این که مثلا 1 فایل virus به عنوان یک mail attachment دریافت شده را دانلود کنید (که میتوانید از این لینک دریافت کنید http://www.eicar.org/download/eicar.com) :
و سپس با استفاده از دستور زیر دایرکتوری /home/vmail/linuxnewz.com را scan کنید :
سپس این scan را از طریق یک cronjob اجرا کنید. یک فایلی با نام /etc/cron.daily/dailyclamscan ایجاد کنید و خط های زیر را در آن قرار دهید :
سپس به آن پرمیژن اجرایی بدهید :
فایل cronjob بالا دایرکتوری میل سرور را به صورت کامل با تمام زیر شاخه هایش (recursively) اسکن خواهد کرد و یک لاگ برای عملیات خود در فایل /var/log/clamav/dailyclamscan.log به جای میگذارد (مطمئن شوید که دایرکتوری
/var/log/clamav وجود داشته باشد).
اکنون ببینیم هنگامی که فایل eicar.com را از اکانت tecmint@linuxnewz.com به linuxsay@linuxnewz.com ارسال کنیم چه اتفاقی خواهد افتاد :
خلاصه :
اگر شما مراحل دیگر این سری پست ها را دنبال کرده باشید اکنون یک میل سرور postfix به همراه anti virus و spam protection دارید.
توجه داشته باشید که مباحث امنیتی سرور یک موضوع گسترده است و نمیتوان آن را در پست های کوچکی همچون این پست گنجاند.
به همین دلیل به شما اکیدا پیشنهاد میکنم که با ابزارهای مورد استفاده در این سری پست ها با استفاده از صفحه man آنها بیشتر آشنا شوید. اگر چه تمام تلاشم را کردم تا مفاهیم اصلی مرتبط با موضوع را پوشش دهم فرض نکنید که بعد از تنها پیشرفتن از طریق این پست ها شما به صورت کامل قادر به تنظیم و نگهداری یک ایمیل سرور در یک محیط عملی خواهید بود.
این سری پست ها تنها با عنوان نقطه آغاز اشاره میکند و راهنمای کاملی برای مدیریت میل سرور در لینوکس نمیباشد. اگر شما مطالب مرتبطی در این زمینه دارید که میتواند که این سری پست های مربوط به میل سرور را تکمیل کند میتوانید با ما به اشتراک بگذارید.
همچنان با ما باشید ....
موفق باشید
محمد هابیلی
همچنین توصیه میشود مطالعه کنید.
Part 1 : نصب و راه اندازی میل سرور Postfix و Dovecot به همراه دیتابیس MariaDB
Part 2 : آموزش تنظیمات Postfix و Dovecot به همراه Virtual Domain Users در Linux
Part 3 : نحوه افزودن Antivirus و Spam Protection به میل سرور Postfix با استفاده از ClamAV و SpamAssassin
Part 4 : نحوه نصب و راه اندازی RoundCube (کلاینت وب میل) با Virtual Users در Postfix
لطفا در خاطر داشته باشید که حتی اگر چه سیستم عامل های لینوکسی عموما عاری از ویروس (بدون ویروس) بررسی شده اند احتمال اینکه کلاینت هایی که با سیستم عامل های دیگری به میل سرور شما متصل میشوند هم وجود دارد.
به همین خاطر شما باید تمهیداتی را به منظور محافظت سرورتان از این چنین تهدیدات ممکنی بیاندیشید.
تنظیمات SpamAssassin برای Postfix
در عملیات دریافت ایمیل ابزار spamassassin بین دنیای بیرون و سرویس های ایمیل در حال کار روی سرور شما قرار خواهد گرفت اگر این ابزار مطابق با رول ها و تنظیمات تعریف شده خودش بفهمد که یک پیام ورودی در حقیقت یک spam است خط subject را به گونه ای که کاملا مشخص باشد تغییر خواهد داد. و اما چگونه ...
در صورت نصب نبودن برنامه از طریق دستور زیر آنرا نصب می کنیم:
کد:
yum install spamassassin
کد:
report_safe 0 required_score 8.0 rewrite_header Subject [SPAM]
- زمانی که report_safe برابر با 0 تنظیم شده (مقدار توصیه شده) اسپم ورودی تنها با تغییر هدر های ایمیل و با توجه به rewrite_header تغییر خواهد کرد اگر مقدار آن برابر با 1 باشد پیام کلا حذف خواهد شد.
- برای تعریف میزان حساسیت spam filter (فیلتر اسپم) از اپشن required_score استفاده میشود که به همراه آن از یک عدد integer یا decimal میآید. هرچه این عدد کوچکتر باشد حساسیت فیلتر بالاتر میرود تعریف یک مقدار مابین 8.0 و 10.0 برای یکی سیستم بزرگ که تعداد زیادی اکانت ایمیل (حدود 100 اکانت) دارد توصیه میشود.
بعد از ذخیره این تغییرات سرویس spam filter را فعال و استارت میکنیم و سپس رول های اسپم را آپدیت مینماییم :
کد:
# systemctl enable spamassassin # systemctl start spamassassin # sa-update
برقراری ارتباط Postfix و SpamAssassin
به منظور برقراری ارتباط موثر postfix و spamassassin ما نیاز داریم تا یک یوزر و گروه اختصاصی برای اجرای سرویس spam filter ایجاد کنیم :
کد:
# useradd spamd -s /bin/false -d /var/log/spamassassin
کد:
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
کد:
-o content_filter=spamassassin
نهایتا برای اعمال تغییرات postfix را ریستارت کنید :
کد:
# systemctl restart postfix
برای بررسی اینکه آیا spam assassin به درستی کار میکند و اسپم های ورودی را تشخیص میدهد تستی با عنوان GTUBE یا
Generic Test for Unsolicited Bulk Email موجود است.
برای اجرای این تست یک ایمیل از دامین خارج از شبکه خود (مانند Yahoo , Hotmail و یا Gamil) به یک اکانت موجود در ایمیل سرورتان ارسال کنید. subject را هر چی که میخواهید تعریف کنید و در متن ایمیل از پیغام زیر استفاده کنید :
کد:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
و لاگ های مربوطه هشدار spam را به من نمایش میدهند :
کد:
# journalctl | grep spam
همانطور که در تصویر بالا میبینید این پیغام یک spam score برابر با 1002.3 دارد. علاوه بر این شما میتوانید spam assassin را مستقیما از طریق command line تست کنید :
کد:
# spamassassin -D < /usr/share/doc/spamassassin-3.4.0/sample-spam.txt
اگر این تست ها موفقیت آمیز نباشند شما میتوانید به راهنمای spamassassin integrations رجوع کنید.
استارت کردن ClamAV و آپدیت کردن تعاریف Virus
در ابتدا ما نیاز خواهیم داشت که فایل /etc/clamd.d/scan.conf ویرایش کنیم و خط زیر را از کامنت در بیآوریم :
کد:
LocalSocket /var/run/clamd.scan/clamd.sock
کد:
Example
کد:
# systemctl enable clamd@scan.service # systemctl start clamd@scan.service
کد:
# setsebool -P antivirus_can_scan_system 1
همانطور که در تصویر بالا میبینید signature های ویروس بزرگتر از 7 روز هستند برای آپدیت کردن آنها ما از ابزاری به نام freshclam استفاده میکنیم که به عنوان بخشی از پکیج clamav-update نصب شده است.
آسانترین راه برای آپدیت تعاریف ویروس از طریق یک cron job میباشد که در زمان های دلخواه اجرا خواهد شد (برای مثال یک بار در روز در ساعت 13:00 که از طریق نمونه زیر انجام خواهد شد) :
کد:
00 01 * * * root /usr/share/clamav/freshclam-sleep
کد:
Example
کد:
# freshclam
تست کردن ClamAV برای Virus در Email ها
برای بررسی این که آیا ClamAV به درستی کار میکند بیاید یک virus تستی به دایرکتوری Maildir اکانت tecmint@linuxnewz.com (که در مسیر /home/vmail/linuxnewz.com/tecmint/Maildir قرار گرفته) برای شبیه سازی این که مثلا 1 فایل virus به عنوان یک mail attachment دریافت شده را دانلود کنید (که میتوانید از این لینک دریافت کنید http://www.eicar.org/download/eicar.com) :
کد:
# cd /home/vmail/linuxnewz.com/tecmint/Maildir # wget http://www.eicar.org/download/eicar.com
کد:
# clamscan --infected --remove --recursive /home/vmail/linuxnewz.com
سپس این scan را از طریق یک cronjob اجرا کنید. یک فایلی با نام /etc/cron.daily/dailyclamscan ایجاد کنید و خط های زیر را در آن قرار دهید :
کد:
#!/bin/bash SCAN_DIR="/home/vmail/linuxnewz.com" LOG_FILE="/var/log/clamav/dailyclamscan.log" touch $LOG_FILE /usr/bin/clamscan --infected --remove --recursive $SCAN_DIR >> $LOG_FILE
کد:
# chmod +x /etc/cron.daily/dailyclamscan
/var/log/clamav وجود داشته باشد).
اکنون ببینیم هنگامی که فایل eicar.com را از اکانت tecmint@linuxnewz.com به linuxsay@linuxnewz.com ارسال کنیم چه اتفاقی خواهد افتاد :
خلاصه :
اگر شما مراحل دیگر این سری پست ها را دنبال کرده باشید اکنون یک میل سرور postfix به همراه anti virus و spam protection دارید.
توجه داشته باشید که مباحث امنیتی سرور یک موضوع گسترده است و نمیتوان آن را در پست های کوچکی همچون این پست گنجاند.
به همین دلیل به شما اکیدا پیشنهاد میکنم که با ابزارهای مورد استفاده در این سری پست ها با استفاده از صفحه man آنها بیشتر آشنا شوید. اگر چه تمام تلاشم را کردم تا مفاهیم اصلی مرتبط با موضوع را پوشش دهم فرض نکنید که بعد از تنها پیشرفتن از طریق این پست ها شما به صورت کامل قادر به تنظیم و نگهداری یک ایمیل سرور در یک محیط عملی خواهید بود.
این سری پست ها تنها با عنوان نقطه آغاز اشاره میکند و راهنمای کاملی برای مدیریت میل سرور در لینوکس نمیباشد. اگر شما مطالب مرتبطی در این زمینه دارید که میتواند که این سری پست های مربوط به میل سرور را تکمیل کند میتوانید با ما به اشتراک بگذارید.
همچنان با ما باشید ....
موفق باشید
محمد هابیلی