пятница, 1 февраля 2013 г.

установка greylist exim4 debian

"No! Try not! Do. Or do not. There is no try." -- Yoda

лБЛ УФБТФПЧПЕ ПРЙУБОЙЕ ЙУРПМШЪПЧБФШ НПЦОПпДОБЛП - ЕУФШ ФБН РПФЕОГЙБМШОЩЕ РПДЧПДОЩЕ ЛБНОЙоБРТЙНЕТ, ОБДП АЪБФШ ${quote_mysql:$local_part} ЧНЕУФП РТПУФП $local_part Й ФБЛ ДБМЕЕ Ч select'БИ.

ЧП ФХТМБ ЗДЕ ПРЙУБОЙЕ " хУФБОПЧЛБ Exim У РПДДЕТЦЛПК ЧЙТФХБМШОЩИ БЛЛБХОФПЧ (ВБЪБ Ч MySQL)"

лПЗДБ ЛТХЗПЪПТ ЮЕМПЧЕЛБ УХЦБЕФУС Л НЙОЙНХНХ, ПО ОБЪЩЧБЕФ ЬФП УЧПЕК ФПЮЛПК ЪТЕОЙС.

рТПЧЕТЙМ, ФБЛ ФПЦЕ ТБВПФБЕФ. тБОШЫЕ ЮЕТЕЪ ЧОЕЫОЙК УЛТЙРФ 97% УРБНБ УТЕЪБМП ЮЕТЕЪ ЗТЬК МЙУФЩ. юФП РТПИПДЙМП, МЕЗЛП ТХЛБНЙ ПФТЕЪБМПУШ. пФМЙЮОБС ФЕИОПМПЗЙС. рТБЧДБ ОЕ Х ЧУЕИ ОПТНБМШОП РПЮФПЧЙЛЙ 451А ПФТБВБФЩЧБАФ. нОЕ У ЛПНФЕЛУБ РЙУШНП ФБЛ Й ОЕ ДПЫМП РПЛБ ТХЛБНЙ ОЕ ТБЪТЕЫЙМ.ч ПВЭЕН, УРБУЙВП.PS дБЧОП ЙУЛБМ ЧПЪНПЦОПУФШ ЧОПУЙФШ ДБООЩЕ Ч ВБЪХ ЮЕТЕЪ ЛПОЖЙЗ exim`a. рТЙЗПДЙФШУС, ПДОПЪОБЮОП.

"No! Try not! Do. Or do not. There is no try." -- Yoda

чУЕ ЪОБАФ РТП ФБЛПК РПЮФПЧЩК УЕТЧЕТ exim.пФМЙЮБЕФУС ПФ sendmail'Б ВПМЕЕ РПОСФОЩН ЛПОЖЙЗПН Й ЛПФПТЩК НПЦОП ОБУФТПЙФШ РТБЛФЙЮЕУЛЙ ОБ ЧУЕ УМХЮБЙ.тБУУЛБЦХ, ЛБЛ УДЕМБФШ РПДДЕТЦЛХ ФЕИОПМПЗЙЙ greylist (УЕТЩК УРЙУПЛ) Ч exim ДМС ПВЕУРЕЮЕОЙС ВМПЛЙТПЧБОЙС РПТСДЛБ 90% УРБНБ.фЕИОПМПЗЙС greylist ЪБЛМАЮБЕФУС Ч ФПН, ЮФП РТЙ РЕТЧПК РПРЩФЛЕ ПФРТБЧЙФШ ОБН РЙУШНП, РЕТЕДБАЭЕК УФПТПОЕ РЕТЕДБЕФУС ЛПД451 Temporary rejectьФП ЪБУФБЧМСЕФ ОПТНБМШОЩК РЕТЕДБАЭЙК ХЪЕМ РПЧФПТЙФШ РПРЩФЛХ РЕТЕДБЮЙ РЙУШНБ РПЪДОЕЕ (ЙОФЕТЧБМ РПЧФПТПЧ ЪБЧЙУЙФ ПФ ЕЗП ОБУФТПЕЛ)юЕТЕЪ ПРТЕДЕМЕООПЕ ЧТЕНС РЙУШНП РЕТЕРПУЩМБЕФУС Й НЩ ЕЗП РТЙОЙНБЕН.фБЛЙН ПВТБЪПН, ОПТНБМШОЩК ХЪЕМ РЕТЕДБЕФ РЙУШНП У ЛБЛПК-ФП ЪБДЕТЦЛПК.уРБН ТБУУЩМЛЙ, ЛБЛ РТБЧЙМП, ДЕМБАФУС МЙВП ЮЕТЕЪ ПФЛТЩФЩЕ ТЕМЕЙ, МЙВП ЮЕТЕЪ ЧУСЛЙЕ РТПЛУЙ, МЙВП ОБРТСНХА. еУМЙ УРБНЭЙЛЙ ВХДХФ ПФТБВБФЩЧБФШ 4xx ПЫЙВЛХ Й ДЕМБФШ РЕТЕРПЧФПТЩ ПФРТБЧЛЙ УРБНБ, ФП ЬФП ТЕЪЛП ХНЕОШЫЙФ УЛПТПУФШ ТБУУЩМЛЙ (ДБ Й ПВТБВПФЛБ ЖБЛФБ ПФРТБЧЛЙ ХУМПЦОЙФУС).рПЬФПНХ, УРБНЭЙЛЙ ВХДХФ РЩФБФШУС ПФРТБЧЙФШ УРБН ЮЕТЕЪ ДТХЗЙЕ УЕТЧЕТБ, ОБЙЧОП РТЕДРПМБЗБС, ЮФП ЪБВМПЛЙТПЧБО ЛПОЛТЕФОЩК ХЪЕМ.тБЪХНЕЕФУС, РПМХЮБФ ФБЛПК-ЦЕ ПВМПН оХЦОП:ОБУФТПЕООЩК exim ЧЕТУЙЙ 4.x У РПДДЕТЦЛПК mysql (С ЧППВЭЕ ЧУА ЙОЖХ ИТБОА Ч ВБЪЕ, Ч Ф.Ю. ОБУФТПКЛЙ)лБЛ ОБУФТПЙФШ exim ДМС ТБВПФЩ У mysql ТБУУЛБЪЩЧБФШ ОЕ ВХДХ - ЬФП ФТЙЧЙБМШОП.оЕПВИПДЙНП УПЪДБФШ Ч ВБЪЕ ФБВМЙЮЛХ, ДМС ИТБОЕОЙС ФЕЛХЭЕК ЙОЖПТНБГЙЙ greylist:CREATE TABLE `Greylist` (  `id` bigint(20) NOT NULL auto_increment,  `relay_ip` char(15) default NULL,  `sender` char(64) default NULL,  `recipient` char(64) default NULL,  `block_expires` int(11) NOT NULL default '0',  `record_expires` int(11) NOT NULL default '0',  `create_time` int(10) unsigned NOT NULL default '0',  `pass_count` int(10) unsigned NOT NULL default '0',  `block_count` int(10) unsigned NOT NULL default '0',  `ehlo` char(64) default NULL,  PRIMARY KEY  (`id`),  UNIQUE KEY `relay_ip` (`relay_ip`,`sender`,`recipient`));фЕРЕТШ ОБДП РТПРЙУБФШ Ч ЛПОЖЙЗ exim'Б:Б) Ч УБНПН ОБЮБМЕ РТПРЙУБФШ НБЛТПУЩ:GREYLIST_TEST=SELECT concat("id=",id," ts=",(unix_timestamp()-block_expires)) \        from Greylist \        where relay_ip='${quote_mysql:$sender_host_address}' and \        sender='${quote_mysql:$sender_address}' and \        recipient='${quote_mysql:$local_part}@${quote_mysql:$domain}' limit 1GREYLIST_ADD=INSERT into Greylist (relay_ip,sender,recipient,\        block_expires,record_expires,create_time,block_count,ehlo) \        values \        ('${quote_mysql:$sender_host_address}',\        '${quote_mysql:$sender_address}',\        '${quote_mysql:$local_part}@${quote_mysql:$domain}',\        unix_timestamp()+60*15,unix_timestamp()+60*60*24,unix_timestamp(),1,\        '${quote_mysql:$sender_helo_name}')GREYLIST_UPD1=UPDATE Greylist set pass_count=pass_count+1,\        record_expires=unix_timestamp()+60*60*24 where id=$acl_m2GREYLIST_UPD2=UPDATE Greylist set block_count=block_count+1 where id=$acl_m2В) Ч ВМПЛЕ ACL ОБУФТПЕЛ РПУМЕ RCPT TO Ч ОХЦОПН НЕУФЕ РТПРЙУБФШ УБНЙ ДЙТЕЛФЙЧЩ:# set variableswarn set acl_m1 = ${lookup mysql{GREYLIST_TEST}{$value}{id=-1 ts=0}}     set acl_m2 = ${extract{id}{$acl_m1}{$value}{unknown}}     set acl_m3 = ${extract{ts}{$acl_m1}{$value}{unknown}}# defer if first attemptdefer   hosts = ! +relay_hosts        condition = ${if < {$acl_m2}{0}{yes}{no}}        set acl_m4 = ${lookup mysql{GREYLIST_ADD}{$value}{0}}# defer if time < block_timedefer   hosts = ! +relay_hosts        condition = ${if > {$acl_m2}{0}{yes}{no}}        condition = ${if < {$acl_m3}{0}{yes}{no}}        set acl_m4 = ${lookup mysql{GREYLIST_UPD2}{$value}{0}}# pass defers if time > block_time and update countwarn    hosts = ! +relay_hosts        set acl_m4 = ${lookup mysql{GREYLIST_UPD1}{$value}{0}}пРЙУБОЙЕ:Б) РТЙ РЕТЧПК РПРЩФЛЕ ПФРТБЧЙФШ ОБН РПЮФХ (ЛПЗДБ ФТПКЛБ sender_host_address, sender_address, recipient_address ПФУХФУФЧХЕФ Ч ФБВМЙГЕ), РЙУШНП ПФЧЕТЗБЕФУС; ЖБЛФ РПРЩФЛЙ ЪБОПУЙФУС Ч ФБВМЙЮЛХВ) РТЙ РПРЩФЛЕ УРХУФС ЧТЕНС, НЕОШЫЕЕ 60*15 УЕЛХОД, РЙУШНП ПФЧЕТЗБЕФУС; ОБТБЭЙЧБЕФУС УЮЕФЮЙЛ ПФЧЕТЗОХФЩИ РПРЩФПЛЧ) --//-- ЧТЕНС ВПМШЫЕЕ 60*15 УЕЛХОД - РЙУШНП РТЙОЙНБЕФУС; БРДЕКФЙФУС ЧТЕНС ХУФБТЕЧБОЙС ЪБРЙУЙ Й УЮЕФЮЙЛ РТЙОСФЩИ РПРЩФПЛфБЛ-ЦЕ, Ч cron РПМЕЪОП РТПРЙУБФШ УМЕДХАЭЕЕ:mysql ВБЪБ -e 'delete from Greylist where unix_timestamp()>record_expires;'ЮФПВЩ ХДБМСФШ ХУФБТЕЧЫЙЕ ЪБРЙУЙ, Ф.Е. ОЕ ВЩМП РПЧФПТОЩИ РЙУЕН УРХУФС 60*60*24 УЕЛХОД ПФ РПУМЕДОЕК РПРЩФЛЙ.PS. ЙОЖПТНБГЙС ДБЕФУС AS IS. Х НЕОС ЧУё ТБВПФБЕФ.PPS. ТБЪХНЕЕФУС, Ч ЛПОЖЙЗЕ ДПМЦОЩ ВЩФШ Й ДТХЗЙЕ РТБЧЙМБ; РПЬФПНХ ЧБЦОП "ЧУХОХФШ" ЬФЙ ОБУФТПКЛЙ Ч ОХЦОПЕ НЕУФП. Б ФБЛ-ЦЕ, ЧЧЕУФЙ ДПРПМОЙФЕМШОЩЕ РТПЧЕТЛЙ, ОБРТЙНЕТ, Х НЕОС ЕУФШ ЕЭЕ ОБУФТПКЛБ УТБВБФЩЧБОЙС ЬФЙИ РТБЧЙМ РП ЛПОЛТЕФОЩН БДТЕУБН РПМХЮБФЕМЕК. Ф.Е. greylist ТБВПФБЕФ ОЕ ДМС ЧУЕИ.PPPS. ФЕИОПМПЗЙС ОЕ НПС. С ФПМШЛП УДЕМБМ ЧУё УТЕДУФЧБНЙ exim'Б. ДП ЬФПЗП greylist ТБВПФБМ ЮЕТЕЪ ЧОЕЫОЙК УЛТЙРФ.

фЕНБ / / Exim, УРБН Й ОБУФТПКЛБ GreyList (28837 ИЙФПЧ)

Комментариев нет:

Отправить комментарий