این مجموعه نرم افزاری (Amavisd, Spamassassin and Clamav) برای مقابله با پیغام های spam و ایمیل های حاوی virus میباشد، Amavisd به عنوان یک واسط بین postfix به عنوان MTA (مخفف Mail Transfer Agent) و چک کننده محتوا (spamassassin و clamav) مورد استفاده قرار میگیرد.
همچنین توصیه میشود مطالعه کنید.
آموزش نصب و راه اندازی میل سرور با Postfix و Dovecot
آموزش فعال کردن TLS و SSL در Postfix و Dovecot
آموزش نصب Roundcube IMAP Webmail
آموزش نصب LAMP Stack در Ubuntu 18.04
آموزش نصب LAMP در Ubuntu 16.10
آموزش نصب LAMP در CentOS 7.0
به محض اینکه شما amavisd-new را نصب میکنید پکیج های clamav و spamassassin نیز به صورت اتوماتیک نصب میشوند.
به منظور ارسال/دریافت ایمیل ها با استفاده از یک کلاینت وب، شما میتوانید Roundcube را استفاده کنید. ابتدا، amavisd را کانفیگ میکنیم. فایل کانفیگ آن /etc/amavisd/amavisd.conf میباشد. این فایل را ویرایش کنید و مطمئن باشید که مقادیر درست هستند.
موارد زیادی هستند که شما میتوانید تغییر دهید اما مورد های بالا در حقیقت تنظیمات پایه میباشند. برای اطلاعات بیشتر صفحه رسمی آنرا بررسی کنید. در نهایت مطمئن شوید که amavisd و clamav درباره همدیگر میدانند. به خط 383 بروید و مطمئن شوید که این مورد درست است.
نکته مهم : clamav میزان زیادی از مموری را مصرف میکند، شما نمیتوانید آنرا روی سروری با میزان رم کمتر از 2 گیگ اجرا کنید. اگر راحت هستید میتوانید آنرا غیرفعال کنید. خط های زیر را از کامنت در نیاورید و تنها خط # @bypass_virus_checks_maps = (1); # controls running of anti-virus code and را از کامنت خارج کنید.
اکنون، همه چیز را با هم در postfix کانفیگ کنید. فایل /etc/postfix/master.cf را ویرایش و خط های زیر را به انتهای آن اضافه کنید.
فایل /usr/local/etc/postfix/main.cf را ویرایش و این خط ها را به انتهای آن اضافه کنید.
قبل از اینکه سه سرویس را start کنیم یکسری تغییرات اعمال میکنیم. ابتدا فایل /etc/freshclam.conf را ویرایش و خط Example را حذف یا کامنت میکنیم.
سپس فایل /etc/sysconfig/freshclam را ویرایش و چهار خط آخر آنرا حذف یا کامنت میکنیم.
به محض اینکه موارد بالا را انجام دادید آنتی ویروس clamav را با اجرا کردن دستور زیر update کنید.
سپس امضاء های spamassassin را آپدیت کنید.
آپشن -D برای اجرا کردن در مد Debug است بنابراین شما میتوانید ببینید که چه اتفاقی در حال رخ دادن است. اگر آپدیتی موجود باشد spamassassin کد 0 را برمیگرداند در غیر اینصورت exit code برابر با 1 است. در صورتی که آپدیتی موجود باشد شما باید سرویس spamassassin را restart کنید.
پوشه cron را بررسی کنید و مطمئن شوید که فایل های calamav-update و sa-update را ببینید.
اکنون میتوانیم همه سرویس ها را start کنیم.
به محض اینکه شما amavisd را start کنید سرویس clamd نیز start میشود. در نهایت سرویس postfix را restart کنید.
ارتباط بین amavisd و postfix را با اجرای مراحل زیر بررسی کنید.
عبارت ehlo localhost را تایپ کنید و خروجی را بررسی کنید. باید شبیه به زیر باشد.
سپس دستور زیر را اجرا کنید.
مجدد عبارت ehlo localhost را تایپ کنید و خروجی را بررسی کنید. باید شبیه به زیر باشد.
و در نهایت یکسری تست های واقعی را میگیریم، ابتدا فایل log mail را بررسی کنید.
سپس از اکانت ایمیل دیگری یک فایل text (که HTML نباشد) با متن زیر در body ارسال کنید.
شما باید چیزی شبیه به زیر در لاگ ها ببینید.
فایل log را باز بگذارید و ایمیل تست دیگری ارسال کنید اما اینبار در body آن پیغام زیر را قرار دهید.
شما باید چیزی شبیه به زیر در لاگ ها مشاهده کنید.
Stress Test
از سرور دیگری که postfix روی آن نصب است دستور زیر را اجرا کنید.
روی سرور خود :
مشاهده کنید که چگونه فایل log با انبوه message ها بمباران میشود. شما میتوانید همچنین صف ها را به صورت real time با دستور زیر مشاهده کنید.
بعد از گذشت 5 الی 10 دقیقه که از نتایج راضی بودید میتوانید صف postfix را با دستور زیر خالی کنید.
همچنین توصیه میشود مطالعه کنید.
آموزش نصب و راه اندازی میل سرور با Postfix و Dovecot
آموزش فعال کردن TLS و SSL در Postfix و Dovecot
آموزش نصب Roundcube IMAP Webmail
آموزش نصب LAMP Stack در Ubuntu 18.04
آموزش نصب LAMP در Ubuntu 16.10
آموزش نصب LAMP در CentOS 7.0
به محض اینکه شما amavisd-new را نصب میکنید پکیج های clamav و spamassassin نیز به صورت اتوماتیک نصب میشوند.
کد PHP:
yum install amavisd-new
yum install clamav-udpate
کد PHP:
# @bypass_virus_checks_maps = (1); # controls running of anti-virus code
# @bypass_spam_checks_maps = (1); # controls running of anti-spam code
# $bypass_decode_parts = 1; # controls running of decoders&dearchivers
$daemon_user = 'amavis'; # (no default; customary: vscan or amavis), -u
$daemon_group = 'amavis'; # (no default; customary: vscan or amavis), -g
$mydomain = 'example.com'; # a convenient default for other settings (change it)
$MYHOME = '/var/spool/amavisd'; # a convenient default for other settings, -H (remove the comment in front)
@local_domains_maps = ( [".$mydomain","myotherdomain.net"] ); # list of all local domains. If you have multiple domains, add the here.
$myhostname = 'host.example.com'; # must be a fully-qualified domain name! (remove the comment in front)
نکته مهم : clamav میزان زیادی از مموری را مصرف میکند، شما نمیتوانید آنرا روی سروری با میزان رم کمتر از 2 گیگ اجرا کنید. اگر راحت هستید میتوانید آنرا غیرفعال کنید. خط های زیر را از کامنت در نیاورید و تنها خط # @bypass_virus_checks_maps = (1); # controls running of anti-virus code and را از کامنت خارج کنید.
کد PHP:
# ### http://www.clamav.net/
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock.sock"],
qr/\bOK$/m, qr/\bFOUND$/m,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
# # NOTE: run clamd under the same user as amavisd - or run it under its own
# # uid such as clamav, add user clamav to the amavis group, and then add
# # AllowSupplementaryGroups to clamd.conf;
# # NOTE: match socket name (LocalSocket) in clamav.conf to the socket name in
# # this entry; when running chrooted one may prefer a socket under $MYHOME.
کد PHP:
# Amavisd
amavisfeed unix - - n - 2 lmtp
-o lmtp_data_done_timeout=1200
-o lmtp_send_xforward_command=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o smtpd_restriction_classes=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings
-o local_header_rewrite_clients=
-o smtpd_milters=
-o local_recipient_maps=
-o relay_recipient_maps=
کد PHP:
# Amavisd
content_filter = amavisfeed:[127.0.0.1]:10024
کد PHP:
# Comment or remove the line below.
Example
کد PHP:
### !!!!! REMOVE ME !!!!!!
### REMOVE ME: By default, the freshclam update is disabled to avoid
### REMOVE ME: network access without prior activation
FRESHCLAM_DELAY=disabled-warn # REMOVE ME
کد PHP:
freshclam
کد PHP:
sa-update -D
پوشه cron را بررسی کنید و مطمئن شوید که فایل های calamav-update و sa-update را ببینید.
کد PHP:
cd /etc/cron.d
ls -l clamav-update sa-update
کد PHP:
systemctl start amavisd
systemctl enable amavisd
systemctl start spamassassin
systemctl enable spamassassin
کد PHP:
systemctl restart postfix
کد PHP:
telnet localhost 10024
کد PHP:
250-[127.0.0.1]
250-VRFY
250-PIPELINING
250-SIZE
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 XFORWARD NAME ADDR PORT PROTO HELO IDENT SOURCE
کد PHP:
telnet localhost 10025
کد PHP:
250-www.testcloudserver.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
کد PHP:
tail -f /var/log/maillog
کد PHP:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
فایل log را باز بگذارید و ایمیل تست دیگری ارسال کنید اما اینبار در body آن پیغام زیر را قرار دهید.
کد PHP:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Stress Test
از سرور دیگری که postfix روی آن نصب است دستور زیر را اجرا کنید.
کد PHP:
time /usr/sbin/smtp-source -s 40 -l 10120 -m 5000 -c -f user@whatsup.com -t joe@domain-one.com mail.domain-one.com:25
کد PHP:
tail -f /var/log/maillog
کد PHP:
postqueue -p
کد PHP:
postsuper -d ALL