Greylisting з'яўляецца спосабам скарачэння спаму ў паштовых скрынях карыстальнікаў на паштовы сервер. GPS (яна хутка будзе называцца шэрых спісаў) з'яўляецца хуткі і бяспечны рэалізацыі шэрых спісаў службы палітыкі Postfix паштовы сервер.
GPS ўжо не актыўна развіваецца. Выкарыстаньне шэрых спісаў дэман замест. Шэрых спісаў дэман цалкам сумяшчальны з GPS. Ж схему базы дадзеных выкарыстоўваецца і любой канфігурацыі, што стала магчымым дзякуючы GPS можна зрабіць з дапамогай шэрых спісаў дэман.
УвядзеннеGPS, па-першае, гэта рэалізацыя шэрых спісаў службы палітыкі Postfix. Greylisting гэта паняцце, каб паменшыць колькасць UCE ("спам") з дапамогай тэхнічных сродкаў. Выпрабаванні вытворчых сістэм паказваюць, што Greylisting з'яўляецца вельмі эфектыўным супраць спаму. Даведайцеся больш пра шэрых спісаў на http://www.greylisting.org і http://projects.puremagic.com/greylisting/whitepaper.htmlПа-другое, GPS прымае Greylisting яшчэ адзін крок наперад, пачынаючы з версіі 1.0. Грунтуючыся на вопыце выкарыстання шэрых спісаў у вытворчай асяроддзі, GPS пастаўляецца з функцыямі, якія надзвычай паменшыць праблемы арыгінальнай канцэпцыі Greylisting. Гэтыя удасканалення робяць Greylisting GPS "могуць выкарыстоўвацца для правайдэраў і буйных установак паштовай сістэмы. Асноўныя асаблівасці GPS з'яўляюцца:
Статус праекта
ЎстаноўкаКаб пабудаваць GPS з крыніцы Наступныя пакеты неабходныя:
Каб пабудаваць GPS распакаваць мяч крыніцай смалы (не пры выкарыстанні SVN) і запусціць наладу і зрабіць. Паколькі GPS знаходзіцца ў стадыі распрацоўкі вы можаце зрабіць: |
смалы xvfz GPS-<версія>. tar.gz [АБО] смалы xvfz GPS-<версія>. tar.gz CD GPS-ХХ (або CD-рэліз <version>) зрабіць F-Makefile.cvs ./Настроіць зрабіць зрабіць ўстаноўку
G + +-S-O GPS configreader.cpp db.cpp main.cpp read.cpp cfg.cpp dbdefs.cpp wlcacheddb.cpp signals.cpp-ldbi-ЛПНП
Прыклад для MySQL (гэта не выкарыстоўваць пароль):
# MySQL-р
> CREATE DATABASE шэрых спісаў;
> GRANT ALL ON "шэрых спісаў" шэрых спісаў выяўленых "сакрэт" ПЗ;
> BYE
mode=init. Дадаць GPS да вашага master.cf і main.cf файлы, як апісана ў дакументацыі па Postfix Greylisting (узята з http://www.postfix.org/SMTPD_POLICY_README.html ):
/etc/postfix/master.cf:
policy unix - n n - - spawn
user=nobody argv=/usr/local/bin/gps /usr/local/etc/gps.conf
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
reject_unauth_destination
check_policy_service unix:private/policy
...
policy_time_limit = 3600
| -V | дае падрабязныя паведамленні Уваход | |
| канфігурацыйнага | ваш канфігурацыйны файл, у тым ліку шляхам |
| Параметр | Магчымыя значэння або дыяпазону значэнняў (Па змаўчанні вызначаны тлустым шрыфтам) | Апісанне | Залежыць ад | Версія |
|---|---|---|---|---|
| рэжыме | звычайны | ініцыялізацыі | слабой | зваротная | Устанаўлівае Greylisting рэжыме | ||
| weakbytes | 0 - 4 (3) | Number of significant bytes of client IP address | mode=weak(|reverse) | 0.92 |
| dbtype | mysql | sqlite | pgsql | Database type | ||
| db_host | hostname or IP address | Database server | dbtype | |
| db_username | username | Database user name | dbtype | |
| db_password | password | Database password | dbtype | |
| db_dbname | database name | Database name | dbtype | |
| db_port | port number | Database port | dbtype=pgsql | 0.9 |
| db_pgsql_options | Postgres options | Postgres options | dbtype=pgsql | 0.9 |
| db_pgsql_tty | /dev/ttyX (/dev/null) | Postgres logging | dbtype=pgsql | 0.9 |
| db_sqlite_dbdir | path (permissions!) | SQLite Database path | dbtype=sqlite | 0.9 |
| timeout | seconds (3600=1 hour) | Greylisting timeout | (mode=init) | |
| wl_network | off | db | dbcached (off) | Network whitelisting mode | 0.8 | |
| wl_recipient | off | db | dbcached (off) | Recipient whitelisting mode | 0.8 | |
| wl_sender | off | db | dbcached (off) | Sender whitelisting mode | 0.8 | |
| wl_pattern | off | db | dbcached (off) | Pattern matching whitelisting mode | 0.91 | |
mode распавядае GPS у якім рэжыме працаваць. Па змаўчанні init init Стварае любы табліцы базы дадзеных (ы), якія не існуюць. Заўсёды будзе вяртаць "не ведаю", але дадаваць запісы ў базу дадзеных. Таму ён можа выкарыстоўвацца для збору дастатковай колькасці запісаў базы дадзеных перад пераключэннем на зваротны, нармальны або слабы рэжым, які фактычна выконвае Greylisting. Адзначым, што гэта прыводзіць да больш SQL запытаў, як ён правярае ці шэрых спісаў табліц існуе. Гэта павінна быць выкарыстана толькі для ініцыялізацыі базы дадзеных і тэсціравання GPS. У версіі 1.x ініцыялізацыі рэжым павінен выкарыстоўвацца толькі для стварэння табліц базы дадзеных, а не для запаўнення трыплетных табліцу з дадзенымі. Трыплет, што гэты рэжым запісвае ў базу дадзеных несумяшчальныя з GPS працуе ў рэжыме зваротнай пазней. Гэта прыводзіць у некаторых пошта не будзе прапускаць без праверкі. Калі гэта так Ёсць паведамленні пра памылкі ў пошце часопіса. Рашэнне, каб выдаліць усе запісы, якія кліент адрасоў, якія пачынаюцца з лікаў ад трыплетных табліцы. Нешта падобнае будзе рабіць гэтую працу:
> Выдаліць ад трыплетных ДЗЕ client_address RLIKE '1 '; > DELETE FROM triplet WHERE client_address RLIKE '2'; ...
reverse імя, заснаванае Greylisting: замест праверкі IP-адрас кліента трыплетных гэта вырашыць адрас IP і выкарыстоўвае толькі значная частка імя хосту для праверкі ці трыплет ўжо былі правераны вырашае. (Напрыклад Улічваючы IP адрас 1.2.3.4 па пошце-server255.someisp.com GPS правярае трыплет (someisp.com, адпраўнік, атрымальнік) ужо існуе. У звычайным рэжыме было б праверыць (1.2.3.4, адпраўнік, атрымальнік) Такім чынам, адмова пошты, калі ён прыйшоў з іншага кампутара на аднаго рэле) Гэты рэжым зручны для інтэрнэт-правайдэраў, як гэта памяншае запатрабаванне ў белы спіс, і таму скаргі ад карыстальнікаў аб не атрыманні пошты. У той жа час ён па-ранейшаму эфектыўна прыпынку спаму. У выпадку, калі дазвол імёнаў не адпавядае гэтаму рэгіструецца і слабыя шэрых спісаў заснаваны на IP-адрас робіцца замест. normal Greylisting Нармалёвы рэжым: GPS праверкі трыплет (IP-адрас кліента, адпраўнік, атрымальнік) у базе дадзеных і блокаў пошту, пакуль чакання дасягаецца за першы пошце. Наступныя лісты з тым жа трыплет хай адразу ж. weak (Пачынаючы з версіі 0,7) Слабыя Greylisting. Сцісла гэта азначае ігнараваць апошняга байта кліенцкіх адрасоў IP. Гэта карысна, калі вы затрымаліся з адпраўніка паштовых сервераў, якія выкарыстоўваюць блок сеткавых адрасоў ў адной падсеткі для адпраўкі пошты. Выкарыстаньне weak вынікаў у рэжыме значна вышэй, загрузка працэсара. Таму рэкамендуецца выкарыстоўваць спалучэнне Белы спіс метадаў (для версіі 0.x). timeout Greylisting афіцыйны дакумент прадугледжвае таймаўт 3600 секунд (1 гадзіна), перш чым новы трыплет адпраўніка, атрымальніка, адрас кліента павінен быць дазволены праз Greylisting сістэмы. Скарачэнне часу чакання будзе трымаць карыстальнікаў шчаслівая і да гэтага часу вельмі эфектыўным (напрыклад, 60 секунд). Па змаўчанні 3600 dbtype задае тып базы дадзеных для выкарыстання. Гэта павінен быць усталяваны ў тым жа libdbi імя чакае. У цяперашні час, libdi-драйверы падтрымліваюць mysql, pgsql (версія 0.9 +), sqlite (версія 0.9 +), msql (?), oracle (?). GPS будзе выйсці і ўвайсці спіс даступных драйвераў, калі паказаны драйвер не ўстаноўлены (пастаўляецца ў зручнай для праверкі libdbi устаноўкі). Значэнне па змаўчанні mysql db_<db parameter> Гэта спіс Paramters быць перададзены libdbi зрабіць злучэнне з базай дадзеных. Параметры БД залежыць ад кіроўцы. Глядзіце файл канфігурацыі прыклад ніжэй і ўключаны gps.conf, gps.sqlite.conf і gps.pgsql.conf прыклады таго, як выкарыстоўваць розныя бібліятэкі баз дадзеных. Прыклад параметры БД для dbtype=mysql : db_host=localhost db_username=gps db_password=secret db_dbname=greylist
reverse вырашае праблемы з поштай рэле і тым самым зніжае патрэбнасць у белы спіс. Наступныя параметры белыя спісы прадастаўляюцца GPS. Могуць быць выкарыстаны ў любы камбінацыі. Калі вы спрабуеце аптымізаваць канфігурацыю мець на ўвазе, што "белы" спіс табліц атрымаць апрацоўваецца перад табліцай трайнят.
wl_ <module> = <рэжым>
| ад | Па змаўчанні. Гэты "белы" спіс модуль не выкарыстоўваецца. | |
| дб | (Версія 0.7b +) "белы" спіс дадзеныя захоўваюцца ў табліцы з назвай "белы" спіс модуляў. Калі GPS працуе ў mode=init яна будзе правяраць, калі табліца існуе, і стварыць яго пры неабходнасці. Настройка модуля db робіць GPS праверыць Эври трыплет супраць "белы" спіс модуляў стол перад праверкай асноўны табліцы трайнят. Такім чынам, для кожнага "белы" спіс модуляў ўключаны яшчэ адзін SQL запыт генеруецца. | |
| dbcached | (Версіі 0.8 +) Калі GPS запуску ён чытае "белы" спіс табліцы модуля і стварае кэш-памяці яго якіх ён выкарыстоўвае, каб зрабіць наступны пошук. Гэта выкарыстоўвае больш памяці, чым db, выклікае больш працяглы час запуску, але азначае меншае колькасць SQL запытаў, і гэта - адзін раз ініцыялізуецца - значна хутчэй, чым db. |
wl_network (версія 0.7b +) Гэта устанаўлівае рэжым "белы" спіс сеткі. Калі ён усталяваны ў wl_network=db яна будзе правяраць табліцы network да ўсяго астатняга ці сеткавы адрас кліента блок быў "белы" спіс. Для таго, каб адключыць яго выкарыстання wl_network=off. Па змаўчанні off Прыклад дадання белага спісу запіс у MySQL
> Выкарыстаньне шэрых спісаў;
> Уставіць у сеткі значэння ('192.168.0 '.', 'Маёй хатняй сеткі);
> Да спаткання (ці ctrl + D)
wl_recipient (версіі 0.8 +) Гэта устанаўлівае атрымальніка (або адпраўніка) "белы" спіс рэжыме. Калі ён усталяваны ў wl_recipient=db яна будзе правяраць табліцы recipient да ўсяго астатняга ці адрас атрымальніка быў "белы" спіс. Для таго, каб адключыць яго выкарыстання wl_recipient=off. Па змаўчанні off Прыклад дадання белага спісу запіс у MySQL
> use greylist;
> insert into recipient values ('bla@mydomain.com','this user wants his spam');
> bye (or CTRL+D)
wl_pattern (версіі 0.91 +) дазваляе "белы" спіс на аснове рэгулярных выразаў. Рэгулярныя выразы ў wl_pattern можа, тэарэтычна, быць выкарыстаны для замены любога з іншых модуляў "белы" спіс. Акрамя таго, ён можа быць выкарыстаны для рэалізацыі складаных правілаў "белы" спіс аб'яднання некалькіх умоў. Тым не менш, яна павінна выкарыстоўвацца толькі калі ні адна з іншых модуляў касцюм задачы. Гэта значна павольней, сам па сабе, а таксама таму, што ўсе яго мадэлі будзе правярацца ва ўсіх ўваходзяць трыплет. Іншыя модулі выкарыстоўваюць базы дадзеных або радок карту, заснаваную пошуку. Калі wl_pattern павінен быць выкарыстаны гэта павінна быць зроблена, усталяваўшы яго на wl_pattern = dbcached тым самым памяншаючы колькасць запытаў да базе дадзеных.
GPS будуе тэкст, выразы могуць быць узгоднены ў дачыненні перспектыўных рашэнняў "белы" спіс. Фармат GPS ўнутранае прадстаўленне:
s=someuser@yahoo.com r=someuser@mydomain.org c=216.145.54.171 h=mrout1.yahoo.com
У прыведзеным вышэй прыкладзе IP-адрас дазваляецца ў адным з сервераў Yahoo. Гэтая мадэль выкарыстоўвае зваротны пошук імя і запалкі напрыклад:
> Уставіць у шаблон значэнняў (".+^h=.*yahoo\.com.+$","yahoo");
> Уставіць у шаблон значэнняў (".+^r=.*@someorg\.org.+$","someorg want all spam");
^s=user.+^r=myuser@mydomain.+^c=210
^s=user.+^r=myuser@mydomain\.org.+^c=210
.+ after the org in the example is still required!s=user is at the beginning do not use the leading .+ before the anchor ^ ^s=sender@example\.com.+$
weakbytes задае шэраг істотных байт адрас кліента ў рэжыме слабога шэрага спісу. Па змаўчанні роўная 3. mode=reverse dbtype=mysql db_host=localhost db_username=gps db_password=secret db_dbname=greylist timeout=60 wl_recipient=dbcached wl_network=db wl_sender=off wl_pattern=dbcached
Каб праверыць GPS і канфігурацыі выкарыстоўваць наступную каманду. Канфігурацыя памылкі будуць запісвацца ў Syslogd (аб'ект пошце). Таксама гл Бег.
./src/gps -v etc/gps.conf < tests/testinput4.txt
Зараз чакаць лік секунд, адзначанае ў тайм-аўт і запуску той жа лініі зноў. Яна павінна вяртаць "дзеянне = ведаю" ліній. Калі гэта GPS гатовая.
> TRUNCATE TABLE `triplet`;
Прыклад канфігурацыйных файлаў для Postgres і SQLite ў інш/папкі пасля распакавання GPS. Gps.pgsql.conf змяшчае пакрокавыя інструкцыі па ўстаноўцы і наладцы Postgres на Debian і як ствараць базы дадзеных і шэрых спісаў карыстальнікаў.
mode=init. Тым не менш, гэта карысная пасля гэтага. GPS часопісы свае дзеянні сістэмнага часопіса пошце. Выхад з testrun паказана ніжэй:
mail gps[2225]: started (ver.: 0.8 built: Sep 14 2004 18:35:14) mail gps[2225]: reading config: /etc/gps.conf mail gps[2225]: config: prefix: key: mode value=normal mail gps[2225]: config: prefix: db key: host value=localhost mail gps[2225]: config: prefix: db key: username value=greylist mail gps[2225]: config: prefix: db key: password value= mail gps[2225]: config: prefix: db key: dbname value=greylist mail gps[2225]: config: prefix: key: timeout value=60 mail gps[2225]: connecting to DB, using driver mysql mail gps[2225]: setting DB option: dbname to: greylist mail gps[2225]: setting DB option: host to: localhost mail gps[2225]: setting DB option: password to: mail gps[2225]: setting DB option: username to: root mail gps[2225]: connected to DB mail gps[2225]: ok: 'foobar.tld' -> 'barfoo.tld', '1.2.3.4' (3, 152 secs) mail gps[2225]: action=dunno mail gps[2225]: new: 'foo@blabla.org' -> 'blabla@foo.org', '192.168.0.1' mail gps[2225]: action=defer_if_permit Service is unavailable mail gps[2225]: wait: 'foo@blabla.org' -> 'blabla@foo.org', '192.168.0.1' (0, 34 secs) mail gps[2225]: action=defer_if_permit Service is unavailable mail gps[2225]: disconnecting from DB
| адпраўніка | адрас адпраўніка | |
| атрымальнік | адрас атрымальніка | |
| client_address | адрас кліента | |
| имя_клиента | Значная частка вырашана імя кліента, калі запушчаны ў рэжыме reverse | |
| кол | лік трыплетных раз быў прыняты з Postfix | |
| time_difference | Інтэрвал паміж цяпер і час запісу на |
mail gps[18838]: wl recipient: 'foobar.tld' -> 'bla@mydomain.com', '192.168.0.254': this user wants his spam
mail gps[18452]: wl network: 'foobar.tld' -> 'bla@someorg.org', '192.168.0.254': my home network
GPS-maintain.pl [-V] [- выдаліць]-экв |-LT-век секунд кол канфігурацыйнага
/usr/local/bin/gps-maintain.pl -delete -eq 0 -age 18000 /usr/local/etc/gps.conf
/usr/local/bin/gps-maintain.pl -delete -age 3110400 /usr/local/etc/gps.conf
reverse: гл. апісанне ў рэжыме reverse і fallover да weak, калі неабходна Triplets табліцы triplet (гэта павінна зрабіць яго лягчэй адсочваць праблемы змянення версія) # Вызначыць OLDWEAK (ісціна)
mysql> explain Triplets; +----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+-------+ | client_address | varchar(40) | | PRI | | | | recipient | varchar(160) | | PRI | | | | sender | varchar(160) | | PRI | | | | ip64 | decimal(4,0) | | PRI | 0 | | | ip32 | decimal(4,0) | | PRI | 0 | | | ip16 | decimal(4,0) | | PRI | 0 | | | ip8 | decimal(4,0) | | PRI | 0 | | | count | int(11) | | | 0 | | | uts | int(11) | | | 0 | | +----------------+--------------+------+-----+---------+-------+
Для праверкі бягучай стабільнай Subversion выкарыстоўваць версію (SVN):
svn co https://greylist.svn.sourceforge.net/svnroot/greylist/trunk greylist cd greylist make -f Makefile.cvs ./configure make make install
svn co https://greylist.svn.sourceforge.net/svnroot/greylist/tags/release-1.005 greylist-1.005Бягучая версія развіцця можна атрымаць Subversion на SourceForge
svn co https://greylist.svn.sourceforge.net/svnroot/greylist greylist
Больш старыя версіі не даступныя ФОМ гэтым сайце больш. Старыя версіі будуць даступныя на гэтым сайце, але ў асноўным для архівавання прычынах. Калі вы карыстаецеся адзін з іх лічаць, абнаўленне да апошняй стабільнай версіі.