|
|
|
СЪВЕТИ
|
Postfix - интеграция с ClamAV, Amavisd-new и Spamassassin
|
|
|
|
|
|
от Н. Антонов(25-11-2006)
рейтинг (22)
[ добре ]
[ зле ]
Вариант за отпечатване
Тази статия описва един от многото начини, по които можете да интегрирате пощенския сървър 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 >>
|
|
|
|
|
Wow , много 10х От: стан На: 25-11-2006@17:34 GMT+2 Оценка: 1/НеутраленСледващия път , ако някога де , ми се наложи да правя мейл сървър, ще ползвам това решение вместо qmailtoaster ... че дебиан/убунту по ме кефи като дистро от федора :)
пак много 10х!!
[Отговори на този коментар]
Към: Wow , много 10х От: ferrari_m На: 25-11-2006@20:58 GMT+2 Оценка: 1/НеутраленАз мога да предложа и включване към това нещо и грейлистинг, наистина върши доста добра работа. Също може да се комбинира и с мая система за защита срещу спам, но изисква версия на амависд-ню не по-голяма от 2.2.1
[Отговори на този коментар]
...ами за Slackware ? От: s01o <s01o (a) mail __точка__ bg> На: 26-11-2006@13:06 GMT+2 Оценка: 1/Неутрален...а някой ше даде ли едно инфо как да се цонфигурира цялото това нещо на Slackware ?
[Отговори на този коментар] Към: Към: Wow , много 10х От: Н. Антонов <nikola__at__linux-bg< dot >org> На: 26-11-2006@14:54 GMT+2 Оценка: 1/НеутраленРазкажи повече за твоята система и за нещата, които си имплементирал.
[Отговори на този коментар] Към: Към: Към: Wow , много 10х От: ferrari_m На: 26-11-2006@19:11 GMT+2 Оценка: 1/Неутраленhttp://www.linux-bg.org/cgi-bin/ib3/iko...
Ето това е линк към форума с темата, там има няколко линка, които съм дал, мисля че ще ви свършат работа. А относно конфигурацията като цяло зависи какво искате да ползвате...
[Отговори на този коментар] Към: Към: Към: Към: Wow , много 10х От: Н. Антонов <nikola__at__linux-bg[ точка ]org> На: 27-11-2006@8:50 GMT+2 Оценка: 1/НеутраленПризнавам, че веднага разгледах maia и отмъкнах доста know-how за spamassassin оттам.
10x;)
[Отговори на този коментар]
any ideas ? От: Eol На: 27-11-2006@3:21 GMT+2 Оценка: 1/НеутраленАко не му е мястото на този въпрос се извинявам предварително за флейма...
/etc/postfix# telnet localhost 10025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
421 Server busy, too many connections
Connection closed by foreign host.
/etc/postfix# grep -ir MaxConnection /etc/clam*
/etc/clamav/clamd.conf:MaxConnectionQueueLength 15
/etc/clamsmtpd.conf:#MaxConnections: 64
/etc/postfix#tail /var/log/mail.log
....
Nov 27 05:07:42 mail clamsmtpd: 10133C: accepted connection from: 127.0.0.1
Nov 27 05:07:42 mail clamsmtpd: too many connections open (max 64). sent 554 response
Nov 27 05:06:52 mail amavis[7360]: (07360-02) (!) FWD via SMTP: <eol@playbox.tv> -> <eol@playbox.tv>, 450 4.4.1 Can't connect to 127.0.0.1 port 10025, () at (eval 40) line 145, <GEN38> line 31., MTA([127.0.0.1]:10025), id=07360-02
и като допълнение:
Nov 27 05:15:52 mail amavis[7360]: (07360-03-19) Blocked TEMPFAIL, [193.151.20.66] [193.151.20.66] <eol@playbox.tv> -> <eol@playbox.tv>, Message-ID: <456A594A.9000304@playbox.tv>, mail_id: kg5KFtUqqSLS, Hits: -, 129 ms
Nov 27 05:15:52 mail postfix/lmtp[9487]: 27E5376D8F: to=<eol@playbox.tv>, relay=127.0.0.1[127.0.0.1], delay=0, status=deferred (host 127.0.0.1[127.0.0.1] said: 450 4.4.1 Can't connect to 127.0.0.1 port 10025, () at (eval 40) line 145, <GEN120> line 629., MTA([127.0.0.1]:10025), id=07360-03-19 (in reply to end of DATA command))
[Отговори на този коментар]
Към: any ideas ? От: Н. Антонов <nikola< at >linux-bg[ точка ]org> На: 27-11-2006@9:11 GMT+2 Оценка: 1/НеутраленВиж какво казва първо 'netstat -antpl | grep 10025', за да разбереш какво точно и откъде държи тези връзки заети.
[Отговори на този коментар]
The best От: Deska <deska (a) nsc-bg[ точка ]com> На: 27-11-2006@8:29 GMT+2 Оценка: 1/НеутраленPerfektno......bravo Nikola...
[Отговори на този коментар] shit някакъв... От: Eol <eol (a) playbox< dot >tv> На: 27-11-2006@11:20 GMT+2 Оценка: 1/Неутрален/home/eol# netstat -anplt |grep 10025
tcp 0 0 127.0.0.1:10025 0.0.0.0:* LISTEN 18400/clamsmtpd
home/eol# telnet localhost 10025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
421 Server busy, too many connections
Connection closed by foreign host.
За тестови цели увеличих максималния брой връзки на 1023 в /etc/clamsmtp.conf & /etc/clamav/clamd.conf -- ефект същият
Сега ще сменя просто порт 10025 на 10027 примерно... телнет има до там или поне не ми рита с too many connections
[Отговори на този коментар]
Към: shit някакъв... От: Н. Антонов <nikola __@__ linux-bg[ точка ]org> На: 27-11-2006@13:03 GMT+2 Оценка: 1/НеутраленКоя дистрибуция е това и коя е версията на нещата?
[Отговори на този коментар]
Към: Към: shit някакъв... От: Eol <eol__at__playbox__dot__tv> На: 27-11-2006@20:12 GMT+2 Оценка: 1/Неутрален/home/eol# uname -na && cat /etc/debian_version && clamsmtpd -v && postconf |grep version && amavisd-new -V
Linux in 2.6.15.1 #2 PREEMPT Tue Jan 17 07:07:45 EET 2006 i686 GNU/Linux
3.1
clamsmtpd (version 1.6)
(config: /etc/clamsmtpd.conf)
disable_mime_output_conversion = no
mail_version = 2.1.5
tls_ipv6_version = 1.24
amavisd-new-2.4.2 (20060627)
След като смених порта на 10027 syslog-a се оплаква с Conection refused, но това е по-приемливо... поне го вмествам в google търсене :)
Редактиран на: 27-11-2006@20:21
[Отговори на този коментар] Към: Към: Към: shit някакъв... От: Н. Антонов <nikola __@__ linux-bg __точка__ org> На: 27-11-2006@22:29 GMT+2 Оценка: 1/НеутраленНаправи си ъпдейт на clamav оттук:
deb http://ftp2.de.debian.org/debian-volati... sarge/volatile main
Това, разбира се, знаеш какво да го правиш:) Тези неща са за sarge. Кажи после как е.
[Отговори на този коментар]
Втори антивирус От: laskov На: 27-11-2006@12:12 GMT+2 Оценка: 1/НеутраленДобре би било да се ползва и втори антивирус, напр. BitDefender. Имал съм случаи, в които ClamAV регистрира наличие на вирус, а BitDefender - не, както и обратно. Случвало се е също и двата да пропуснат (явно нов вирус), но MailScanner да го спре, тъй като е screensaver или някакъв изпълним файл. MailScanner ползва file (ftp.astron.com) за да определи типа на файла чрез анализ на съдържанието и независимо от името и разширението му.
Относно Slackware, не виждам проблем решението да се приложи точно по начина, както е описано. Въпросът е какво ще се прави по-нататък с писмата, но това не е предмет на статията. (Slackware, sendmail, MailScanner, ClamAV, Bitdefender, SpamAssassin, Cyrus IMAP)
[Отговори на този коментар] Ето нещо и от мене - изпитано От: Pav4o На: 27-11-2006@17:33 GMT+2 Оценка: 1/Неутраленhttp://flakshack.com/anti-spam/wiki/
[Отговори на този коментар] Въпрос? От: OMA <oma__at__abv__dot__bg> На: 4-12-2006@14:01 GMT+2 Оценка: 1/НеутраленЗдравейте,
Без да съм чел статията в детайли погледнах само схемата. Веднага ми изкочи следният въпрос:
Postfix получава от вън съобщение на сокет 0.0.0.0:25. Съобщението преминава последователно през Spamassassin и ClamAV.
Когато съответното приложение вземе провереното писмо от Postfix-a на сокет 127.0.0.1:10026, съобщението с какъв source адрес ще бъде? Локалният адрес на Postfix? Мисля, че по този начин реланият източник на съобщението ще бъде скрит?
Ако бъркам поправете ме.
[Отговори на този коментар]
Към: Въпрос? От: Н. Антонов <nikola __@__ linux-bg[ точка ]org> На: 4-12-2006@14:27 GMT+2 Оценка: 1/НеутраленРеалният източник на съобщението няма отношение към неговото съдържание. Ако под реален източник разбираш SMTP-сървъра, който го изпраща. Иначе съдържанието на хедъра FROM, което указва адреса на подателя, не се променя.
При стъпка A, т.е. при пристигането на писмото отвън на порт 25, то се посреща от smtpd. При тази стъпка се правят всички проверки, описани в параметъра smtpd_recipient_restictions. Ако писмото премине тези проверски, бива допуснато навътре.
При стъпка В spamassassin анализира писмото за подозрително съдържание. Това включва и заглавната част, неговите хедъри.
При стъпка С се прави същото, но се търсят вируси.
При стъпка D, т.е. когато писмото се връща на MTA-то, проверка вече не е необходима. То пристига от достоверен източник, попадащ в параметъра mynetworks.
[Отговори на този коментар]
Към: Към: Въпрос? От: Trustix <Trustix< at >abv__dot__bg> На: 13-12-2006@14:47 GMT+2 Оценка: 1/НеутраленАз лично за да нямам притеснения относно срив при транспортирането на съобшението между различните филтри.
1. В main.cf добавям
receive_override_options=no_address_mappings
премахваш възможността реципиента да бъде променен, и филтъра който използваш получава истинския реципиент.
2.master.cf след smtp-amavis unix--n-10 smtp
добавям smtp_send_xforward_command=yes - информацията за IP адреса изпращача и цялата информация от envelope часта на MIME-то ше бъдат препратени до smtp:localhost:10026
[Отговори на този коментар]
Към: Към: Към: Въпрос? От: yonko На: 25-01-2007@18:25 GMT+2 Оценка: 1/НеутраленНякой ползвал ли е SAGATOR?
И дали е успял да го 'сработи' с Maia (Mail Guard system) + SQLGrey (Greylisting).
[Отговори на този коментар]
Към: Към: Към: Към: Въпрос? От: Petar На: 27-01-2007@23:23 GMT+2 Оценка: 1/НеутраленВ Debian Etch нещо не намирам фаил /etc/amavis/amavisd.conf ???
[Отговори на този коментар]
|
|
|
|
|
|
|
|