от Н. Антонов(25-11-2006)

рейтинг (23)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване


Тази статия описва един от многото начини, по които можете да интегрирате пощенския сървър 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
# Демонът lmtp насочва трафика към amavis
 smtp-amavis unix        -       -       n       -       2       lmtp
 -o lmtp_data_done_timeout=1200
 -o disable_dns_lookups=yes
 -o lmtp_send_xforward_command=yes
 
 # Демонът smtpd приема обратно писмата от clamsmtp
 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( . );
 # @bypass_spam_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 >>