 |
от Н. Антонов(25-11-2006)
рейтинг (23)
[ добре ]
[ зле ]
Вариант за отпечатване
Тази статия описва един от многото начини, по които можете да интегрирате пощенския сървър Postfix със скенер за антивирусна и антиспам проверка. Същата конфигурация работи на машината, която обработва пощенския трафик на "Линукс за българи". Статията е ограничена до реализацията на базата на дистрибуцията Debian GNU/Linux и е мотивирана от засиления интерес към темата и множеството въпроси, които получавам по ICQ или на лична кореспонденция.
Статията няма за цел да обясни детайлно как е най-добре да конфигурирате едно или друго. Само дава информация какво трябва да направите, за да имате тези неща работещи на вашата система. Останалото е въпрос на личен избор, преценка, познания и възможности. Добре дошли са всякакви идеи и трикове за допълнително увеличаване на ефективността при борбата срещу нежеланата поща.
Необходими пакети
Инсталиране на пакетите |
apt-get install postfix amavisd-new clamsmtp spamassassin razor spambayes |
Ако искате антивирусният скенер да анализира архиви, компресирани в различни формати, достатъчно е само да инсталирате съответния пакет. Поддръжката на някои компресиращи формати се намира в секцията non-free на Debian.
Postfix
На първо място имаме Postfix, който посреща входящата поща на стандартния за това порт - 25. Както знаете, този пощенски сървър е "разбит" на множество съподчинени демони, които се грижат за различни неща и могат да бъдат конфигурирани индивидуално, което го прави изключително мощен и удобен за различни цели. В конфигурацията на Postfix имаме указание да насочва входящата поща към външен филтър за съдържание, който "слуша" в нашия случай на порт 10024.
/etc/postfix/main.cf |
content_filter=smtp-amavis:[127.0.0.1]:10024 |
/etc/postfix/master.cf |
smtp-amavis unix - - n - 2 lmtp
-o lmtp_data_done_timeout=1200
-o disable_dns_lookups=yes
-o lmtp_send_xforward_command=yes
127.0.0.1:10026 inet n - n - 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8 |
Amavisd-new
Както личи по-горе, трафикът се насочва към Amavisd-new, който има грижата да "посрещне" писмата, да ги провери чрез Spamassassin и ако преминат проверката, да ги насочи към clamsmtp.
Конфигурационният файл на Amavis е голям, но ние няма да променяме много неща по него. В общи лини, няколко дреболии. Останалото приложенито си го прави само с настройките по подразбиране. Ето редовете, които се е наложило да пипнем файла /etc/amavis/amavisd.conf:
Домейн и FQDN на сървъра |
$mydomain = 'linux-bg.org';
$myhostname = 'kazan.linux-bg.org'; |
Изключваме антивирусната проверка и включваме антиспам проверката |
@bypass_virus_checks_acl = qw( . );
|
Насочваме трафика към clamsmtp |
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method; |
Както може би се досещате, оставяме на Amavis само да се погрижи за спама, като "извика" на помощ spamassassin. Вирусите ги оставяме на clamsmtp, който предварително е настроен да "слуша" на порт 10025.
ClamAV
Единственият конфигурационен файл, който трябва да променим, в нашия случай е /etc/clamsmtpd.conf. Две неща трябва да посочим изрично - на кой порт "слуша" самият демон и към кой порт да насочва писмата, след като са преминали през проверката. Досещате се, че той трябва да ги върне обратно на Postfix, който ги очаква на порт 10026.
clamsmtpd.conf |
OutAddress: 10026
Listen: 127.0.0.1:10025 |
Така, след като писмата са направили една голяма "разходка", ако са останали живи след всички видове проверки, се връщат отново на Postfix и продължават по пътя си до крайната пощенска кутия на получателя. В общи линии концепцията може да бъде представена по следния начин:
Spamassassin
Както знаете, spamassassin подлежи на множество различни настройки, които могат да бъдат предмет на отделна статия. Според находчивостта на тези настройки се определя и доколко ефективно ще си върши работата. Ето как изглежда неговата конфигурация при нас:
/etc/spamassassin/local.cf |
rewrite_header Subject *****SPAM*****
report_safe 1
required_score 5.0
use_bayes 1
bayes_auto_learn 1
use_razor2 1
razor_timeout 10
skip_rbl_checks 0 |
Още рестрикции
Ако искате да намалите натоварването на пощенската си система, като отблъснете по-големия процент от вредния трафик още "на вратата", т.е. преди Postfix да го пропусне навътре към Amavis, можете да ползвате рестрикциите по-долу. Освен познатите на всички RBL и RHSBL проверки тук има и строги изисквания към другите пощенски сървъри, които ще се опитват да ни изпращат писма, за съобразяване с различни RFC препоръки.
/etc/postfix/main.cf |
strict_8bitmime = no
strict_8bitmime_body = no
strict_mime_encoding_domain = yes
strict_7bit_header = no
smtpd_etrn_restriction = reject
allow_untrusted_routing = no
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
smtpd_error_sleep_time = 1s
smtpd_delay_reject = yes
disable_dns_lookups = no
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtp_always_send_ehlo = yes
smtpd_sender_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unknown_sender_domain,
reject_non_fqdn_sender,
reject_rhsbl_sender dsn.rfc-ignorant.org,
permit
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
permit_tls_clientcerts,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_invalid_hostname,
reject_unauth_pipelining,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_non_fqdn_recipient,
reject_unknown_hostname,
reject_unknown_recipient_domain,
reject_rbl_client bl.spamcop.net,
reject_rbl_client relays.ordb.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client dnsbl.ahbl.org,
reject_rbl_client dnsbl.sorbs.net,
reject_rhsbl_client blackhole.securitysage.com,
reject_rhsbl_sender blackhole.securitysage.com,
reject_rhsbl_client rhsbl.ahbl.org,
reject_rhsbl_sender rhsbl.ahbl.org,
reject_rhsbl_client rhsbl.sorbs.net,
reject_rhsbl_sender rhsbl.sorbs.net,
reject_rhsbl_client block.rhs.mailpolice.com,
reject_rhsbl_sender block.rhs.mailpolice.com,
reject_rhsbl_client dynamic.rhs.mailpolice.com,
reject_rhsbl_sender dynamic.rhs.mailpolice.com,
reject_rhsbl_client bogusmx.rfc-ignorant.org,
reject_rhsbl_sender bogusmx.rfc-ignorant.org,
reject_rhsbl_client dsn.rfc-ignorant.org,
reject_rhsbl_sender dsn.rfc-ignorant.org,
permit
smtpd_helo_restrictions =
reject_invalid_hostname,
permit_mynetworks,
permit |
Тествайте и споделяайте опита си. Не всичко, посочено в тази статия, може да ви даде оптимално решение, но поне е доказано, че работи. Някои настройки може дори да се окаже, че не са удобни за вашите нужди, но с правилно разбиране за нещата ще намерите оптималния вариант. Тук можете да следите статистиката на пощенския трафик, който преминава през сървъра на "Линукс за българи".
Други статии по темата:
Що е то SPF и как ще ни помогне да се защитим от спам
Антивирусна проверка и SPF поддръжка в Postfix (отразява нашия опит преди да интегрираме в системата и Spamassassin)
Postfix с TLS поддръжка
Инсталация на Postfix Admin с поддръжка на PostgreSQL
<< Как да компилираме Фалкон поддръжка в MySQL 5 | Как да използваме Linux-BG като RHSBL >>
|
 |