Построьте ваш собственный фильтр спам с PHP и DNSBLs
Вы всегда получали электронную почту спрашивая если те одни части вашего увеличенного, то тела, части которые вы не могли даже иметь? Была следующая электронная почта прочитанные вы одним спрашивая если вы хотите освободить дюймы, то вы недавно приобретали? Сделал вас всегда извещение как эти электронные почты всегда от людей что вы справедливо уверены не имеете ничего сделать с содержанием электронной почты. MTeresa@Vatican.org действительно послало ту электронную почту пилюльки диетпитания? Вы всегда получали возвращенными или излучены «не могут быть поставленные» электронные почты от адресовано вам никогда всегда посылали электронную почту к?
Я имею.
СПАМ. Она УЖАСНА! Моя коробка электронной почты для Brian@TheCodeCave.com вероятно получает 3 до 1 спам над реальной электронной почтой. Я надеялся то. Я кладу тот адрес вне везде и не защищаю его. Значены, что будет моей системой оповещения. Но ОТ адресов на полностью той электронной почте никогда не показывает кого электронная почта действительно от. Даже подделываны данные по компании внутри коллектора электронной почты. Спаммеры схватят имя someother на их списке спам и используют его как их от адреса. Я имел мое имя быть положенным в от адреса электронных почт немного времен. Досадная проблема, как раз спросите ядерным лосям.
Почему это может случиться длинний рассказ. Оно все относит назад к факту что SMTP и порт 25 никогда не были значены для представляя электронных почт к серверам электронной почты. SMTP только был значен для сервера к связям сервера. Однако, то для различного столба. Длиннее и короткая его что все можно подделывать за исключением одной вещи: адрес IP сервера который послал электронную почту.
Потому что тот адрес IP точн, вы можете использовать его для того чтобы сказать если персона которая послала электронную почту спаммер. Столб говорит вам пути пары сделать то. И потому что это подземелье Кода, вы получаете режим php a полно - функциональный к ботинку.
Во первых препятствуйте мне показать вам чего я говорю о. Электронные почты содержат серии информации которые вы нормально не видите. Большая часть из той информации в коллекторе электронной почты. Каждый клиент электронной почты имеет другой способ показывать коллекторы электронной почты. Вы могли найти оно путем осматривать свойства электронной почты. В внешнем виде, вы можете увидеть его путем выбирать, от открытой электронной почты, View->Options. Оно будет там под названием «коллекторов интернета».
Здесь что один коллектор электронной почты посмотренный как то пришел к мне назад в Джун:
|
Возвращать-Путь: <tkuhnel@alushiptechnology.com> |
Почти вся из той информации в там около кто послало это вещество отброс. «alushiptechnology.com» не имело ничего сделать с электронной почтой. Плохое TKuhnel определенно не имело ничего сделать с им. Он как раз имеет их адрес электронной почты вне там в базах данных спам. Выставки 10 Google даже или больше имен связали с этим бедные shlep.
Но секрет что «″ 74.139.17.40 client-ip= в полученном коллекторе SPF точно. То машина которая послала спам. И если оно послал одно спам, то, довольно правоподобно что оно посылало больше. То когда DNSBLs приходит внутри. DNSBL стоит для списка черноты названного сервера домена. Обычно эти списки произведены путем создавать адрес электронной почты который никогда не значен для реальной пользы. После этого все электронные почты которые приезжают на тот адрес, определением, спам. Эти адресы вызваны ловушками СПАМ. И места где они обнаружены местонахождение часто вызваны Медом Баком.
Эти списки адреса IP спаммера сделаны имеющимся к любому любому которое хочет использовать их. Препятствуйте нам взглянуть на как другой адрес IP, 202.177.183.110, определен различным DNSBLs:
DNSBL - Результат (причина)
AHBL - ПЕРЕЧИСЛЕНО (127.0.0.3)
CBL - ПЕРЕЧИСЛЕНО (127.0.0.2)
DNSBLNETAUOSPS - ПЕРЕЧИСЛЕНО (127.0.0.2)
DNSBLNETAUT1 - ПЕРЕЧИСЛЕНО (127.0.0.2)
DSBL - ПЕРЕЧИСЛЕНО (127.0.0.2)
DSBLALL - ПЕРЕЧИСЛЕНО (127.0.0.2)
EMAILBASURA - ПЕРЕЧИСЛЕНО (127.0.0.2)
NJABLPROXIES - ПЕРЕЧИСЛЕНО (127.0.0.9)
PSBL - ПЕРЕЧИСЛЕНО (127.0.0.2)
SBL-XBL - ПЕРЕЧИСЛЕНО (127.0.0.2)
SORBS-HTTP - ПЕРЕЧИСЛЕНО (127.0.0.2)
SORBS-SOCKS - ПЕРЕЧИСЛЕНО (127.0.0.3)
TQM-DYNAMIC - ПЕРЕЧИСЛЕНО (127.0.0.2)
TQM-SPAMTRAP - ПЕРЕЧИСЛЕНО (127.0.0.3)
UCEPROTECTL1 - ПЕРЕЧИСЛЕНО (127.0.0.2)
Ясно этот адрес был использован спаммером. Но как можете вы принять преимущество этого?
Наилучшим образом, один из 2 путей. Во первых вы можете контактировать эти места DNSBL и загружать список. Или вы можете спросить их для того чтобы обрабатывать одиночный адрес одновременно. То чего мой режим делает. Оно принимает адрес IP (202.177.183.110) и формы он любит это: 110.183.177.202.bl.spamcannibal.org для каждого списка спам я хочу проверить. После этого я вызываю GetHostByName для того чтобы спросить того сервера который тот хозяин действительно. Если я получаю назад точной такой же текст, то который я послал, тогда я знаю адрес чист. Если я получаю назад что-то как 127.0.0.2, то я знаю что адрес перечислен в их DNSBL для причины #2 (все, что угодновсе, что угодно те значит к им). 127.0.0.3 показало бы причину 3.
Когда то случается, мой режим уничтожает электронную почту.
Чего я вывешиваю здесь моя предварительная версия. Я имею более полную версию которая очень оптимизироватьле и гораздо славнее к DNSBLs. Я передам то к любому которое делает пожертвование к месту и спрашивает его. Я хотел был бы начать получить немного что-то из этого места и этот режим добавляет некоторое реальное значение. Свое исключенное 98% из моих электронных почт СПАМ. Я уверенно достаточно в ем что я имею его быть установленным постоянно для того чтобы уничтожить электронные почты без мой даже видеть их. Эта версия не делает то и если она использована слишком часто, то, она смогл причинить ваши запросы быть проигнорированным DNSBLs. Я также обеспечу большой список всех названных серверов я имею и обеспечу некоторые инструменты вы можете использовать для того чтобы настроить ваши списки.
Здесь соединение загрузки:
http://www.thecodecave.com/downloads/php/TCCSpamFilter.php.txt
-
<? php
-
************************************************************************* //
-
// TCCSpamFilter.php 11/27/2006
-
// написанное Брайан Неспециалистом
-
//
-
Пример PHP // a написанный, что фильтровать вне спам от учета webmail.
-
// обеспечивает пример DNSBL фильтруя через взгляды вверх имени домена.
-
// видит http://www.thecodecave.com/article288 для деталей
-
//
-
Использование //:
-
// Подгоняйте пароль, установьте его на вашем вебсайте, и вызовите его.
-
// Альтернативно, добавьте его к вашему архиву платы cron с линией как это:
-
// 00.15.30.45 ** ** wget - q http://www.example.com/ISpamFilter.php
-
//
-
ПРЕДУПРЕЖДЕНИЕ //: НЕ ИСПОЛЬЗУЙТЕ ЭТОТ СЦЕНАРИЙ БОЛЕЕ ЧАСТО ЧЕМ КАЖДАЯ МИНУТА 15.
-
// вы будете прегражены если вы злоупотребляете обслуживаниями DNSBL в этом способе.
-
// i писало оптимизированную версию этого сценария которая можно побежать
-
// как только минута и произведет ОЧЕНЬ меньше движение чем эта версия.
-
// любое которое делает пожертвование к месту, и спрашивает тот источник
-
// может получить его.
-
//
-
Автор // первоначально - неспециалист Брайан
-
//
-
// создалось - 27/Nov/2006
-
На последнем месте доработанное // - 02/Dec/2006
-
Вкладчики //: (Положено вашим имени & инициалам на верхнюю часть)
-
// Неспециалист Брайан - BL - http://www.TheCodeCave.com
-
//
-
//
-
История //:
-
// 27/Nov/2006 - BL - Создано
-
// 02/Dec/2006 - BL - Более дальнеишая чистка. Выпускные экзамены комментируют о Rot13
-
//
-
Лицензия // - если это помогает вам, то - больш! Используйте его; доработайте его; делите его,
-
// соединение назад к моему месту.
-
//
-
Индемнитет // -
-
// Используйте этот архив на вашем собственном риске. Я не иду нарочито прорубить
-
// ваш сервер, но другие могли. Я могу или не могу быть потревожен
-
// о обеспеченности когда я написал этот режим. Он до ВАС, котор нужно сделать
-
// уверено что ЛЮБЫЕ режимы которым вы кладете дальше ваше место безопасны. Как раз
-
// потому что вы видите перемеююый здесь защищенную AddSlashes или
-
// HTMLSpecialChar не значит что ВСЕ перемеююые защищены.
-
//
-
// Если этот архив позволяет отверстию в ваше место, то нет моего недостатка. В
-
// факт, вы должны как раз остановить теперь и уничтожить этот архив. Для если
-
// он причиняет голубой дым быть испущенным от вашего сервера паутины, если оно
-
// переустановит ваш URL дела для того чтобы указать к MyClientsSuck.com, или если оно
-
// причиняет вашу сестру замкнуть вулканизационный барабан с ее парнем и стартом законоведа
-
// датирующ caver, нет моего недостатка. (Фактически которое последнее одно могло
-
// улучшение, но нет все еще моего недостатка.) ВЫ
-
// ответствено для ВАШЕГО места. Выучьте как к защищено ему и поймите
-
// чего каждая линия Кода делает что вы используете.
-
//
-
Пожертвования // - если это командное файло действительно помогает вам вне, то чувствуйте свободным сделать
-
// подарите expresso через Paypal к Brian@TheCodeCave.com или как раз
-
// выйдите комментарий на http://www.thecodecave.com/did-that-help и
-
// включите вашу страну происхождения.
-
-
/*********************************************************************************/
-
/* Режимы поддержки *
-
/*********************************************************************************/
-
-
-
******************************************************************************* //
-
IP // в не В НАСТОЯЩЕЕ ВРЕМЯ ИСПОЛЬЗУЕМОМ ряде маски -
-
// позволяет фильтровать через маски IP как раз по мере того как конфигурации сети нормального делают.
-
Пример //: ipinmaskrange («192.168.100.0», «255.255.255.0», «192.168.100.20 ")
-
Возвращения // true потому что пример в сети
-
// Example2: ipinmaskrange («192.168.100.0», «255.255.255.0», «192.168.101.20 ")
-
Возвращения // ложные потому что пример вне сети
-
******************************************************************************* //
-
ipinmaskrange функции ($network, $mask, $ip) {
-
-
если (($ip_long & $mask_long) == $network_long) {, то
-
возвращенно true;
-
} еще {
-
возвращенное ложное;
-
}
-
}
-
-
******************************************************************************* //
-
IP // в створе
-
// определяет ряд в a-b формы и режим возвращает истинное если пройденное
-
Адрес IP // в том ряде.
-
Пример //: ipinrange («192.168.100.0 - 192.168.100.255», «192.168.100.20 ")
-
Возвращения // true потому что пример в сети
-
// Example2: ipinrange («192.168.100.0 - 192.168.100.255», «192.168.101.20 ")
-
Возвращения // ложные потому что пример вне сети
-
******************************************************************************* //
-
ipinrange функции ($range, $ip) {
-
если (($remote_ip>= $rangestart) &&, то (<= $rangeend $remote_ip)) {
-
возвращенно true;
-
}
-
еще {
-
возвращенное ложное;
-
}
-
}
-
-
******************************************************************************* //
-
// IMAP получает полный коллектор
-
// (спасибо JamieD - http://www.codingforums.com/archive/index.php?t-89994.html)
-
// возвращает блок содержа первоначально коллектор сообщений
-
******************************************************************************* //
-
imap_get_full_header функции ($p_stream, $p_msg_number)
-
{
-
$header_string = imap_fetchheader ($p_stream, $p_msg_number);
-
foreach ($header_array как $line)
-
{
-
{
-
$header_obj [$arg [1]] = $arg [2];
-
$last = $arg [1];
-
}
-
еще
-
{
-
$header_obj [$last]. = «\ n «. $line;
-
}
-
}
-
возвращение ($header_obj);
-
}
-
-
-
******************************************************************************* //
-
// преградило IP
-
// выполняет проверку DNS против специфического адреса IP.
-
Черные списки названного сервера домена // (DNSBLs) этот метод для того чтобы объявить используют ли
-
электронная почта // была послана от адреса IP который был знаны, что посылает спам.
-
******************************************************************************* //
-
функция BlockedIP ($Suspect_IP, $DNSvr_Address)
-
{
-
возвращенно true;
-
} еще {
-
возвращенное ложное;
-
}
-
}
-
-
******************************************************************************* //
-
IP прислужника //
-
//, котор дали номер почтового ящика и сообщения, этот режим возвращает адрес IP
-
компьютер // который послал электронную почту. «От» адреса можно подделывать, этот IP
-
адрес // не может.
-
******************************************************************************* //
-
senderip функции ($mbox, $num) {
-
$struct = imap_get_full_header ($mbox, $num);
-
$str_in = $struct [полученное-SPF'] `;
-
-
$tween= «»; // необходимо но хорошее практикует прилагая
-
client-ip='; `$chr1=
-
`$chr2=; ';
-
-
$tween=$tween.$str_in [$i];
-
}
-
возвращенное $tween;
-
}
-
-
******************************************************************************* //
-
// черные перечисленные
-
// это режим сердечника. Дано адрес IP, он бежит некоторые проверки для того чтобы решить если
-
// электронная почта было послано от черного перечисленного спаммера.
-
Использование //: $is_it_spam = isblacklisted («192.168.100.1 ");
-
******************************************************************************* //
-
isblacklisted функция ($ip) {
-
// если некоторые людей, то я никогда даже хочу увидеть электронную почту от, я положил бы
-
// их адрес IP в черном списке колебается.
-
Пример //: $BlackList = блок («192.168.100.1 - 192.168.100.5», «192.168.102.112 - 192.168.102.112 ");
-
-
-
// если некоторые людей, то которые объявлены по мере того как спаммеры преграждая обслуживанием я хочу использовать
-
// i объявило бы их в белом списке.
-
«12.196.88.128 - ″ 12.196.88.159); Перечисление // a ложное должное к инфекции вируса которая была продута.
-
-
Членство списка проверки // белое сперва для оптимизирования размышляет.
-
$allowed = ложно;
-
foreach ($WhiteList как $range) {
-
если (ipinrange, то ($range, $ip)) {
-
$allowed=true;
-
}
-
}
-
-
// если этот адрес не получает свободный пропуск, то, проверяет его вне более далее.
-
если (! $allowed) {
-
// повторяет черные списки и проверяет адрес ip против их
-
foreach ($BlackList как $range) {
-
если (ipinrange, то ($range, $ip)) {
-
$blocked=true;
-
}
-
}
-
-
Пользы «оценка PHP // короткого замыкания» для того НОП скоро как на истинном ударяет, выходы режима вне.
-
// это заявление должно быть оптимизировано с местной проверкой во-первых, и после этого DNSBLs от
-
// самое включительное к самому меньшему. Вы хотите сделать по мере того как немногий external проверяет как возможно.
-
// полная версия этого сценария приходит с несколькими другое порекомендованное DNSBLs и мой полный список
-
// DNSBLs чего я осведомлен.
-
возвратите ($blocked ||
-
(BlockedIP ($ip, `bl.spamcop.net')) ||
-
(BlockedIP ($ip, 'sbl-xbl.spamhaus.org')) ||
-
(BlockedIP ($ip, `dnsbl-2.uceprotect.net')) ||
-
(BlockedIP ($ip, `blackholes.five-ten-sg.com')) ||
-
(BlockedIP ($ip, `bl.spamcannibal.org')) ||
-
(ложно));
-
}
-
еще {
-
возвращенное ложное;
-
}
-
// НИКОГДА НЕ ПРЕГРАЖДАЕТ С: BLARSBL, FIVETENIGNORE, FIVETENSRC, JAMMDNSBL, SPAMBAG, SPEWS (эти ряды IP блока большие)
-
// НИКОГДА НЕ ПРЕГРАЖДАЕТ С: MAPS-DUL, SORBS-DUHL (эти knowingly перечисляют IPs которые не соотвествуют критери по перечисления).
-
}
-
-
-
// этот режим повторяет все электронные почты на сервере и проверяет если они спам.
-
// если они оно, то уничтожает их. Потому что это сервер IMAP, они все еще он-лайн
-
// если вы желаете извлечь их, то, использует команду продувки.
-
blockspam функции ($MAILSERVER, $PHP_AUTH_USER, $PHP_AUTH_PW) {
-
$mbox=imap_open ($MAILSERVER, $PHP_AUTH_USER, $PHP_AUTH_PW);
-
-
// в этой версии примера, это повторяет ВСЕ сообщения в вашем почтовом ящике.
-
// полная версия только повторяет новые сообщения которые приходили внутри.
-
// путем делать то, вы можете бежать эта проверка как часто как как только раз минута и имеете много
-
// меньше движение проверка раз в час. Если вы злоупотребляете обслуживанием DNSBL, то они могло
-
блок // ваш адрес IP.
-
для ($x=0; <imap_num_msg $x ($mbox); $x++) {
-
$idx= ($x+1);
-
$ip=senderip ($mbox, $idx);
-
если (isblacklisted, то ($ip)) {
-
imap_delete ($mbox, $idx);
-
}
-
}
-
imap_close ($mbox);
-
}
-
-
/*********************************************************************************/
-
/* Главным образом звоноки *
-
/*********************************************************************************/
-
// этот первоначальный вариант только работает с серверами imap. То значит вас польза
-
порт 143 //.
-
// Uncomment эта линия и положено в ваши сервера электронной почты, имя пользователя электронной почты и пароль
-
blockspam // («{imap.example.com: 143}», «you@example.com», «yourpassword»);
-
-
// i не любит хранить пароли в незашифрованном тексте. Вы можете использовать Rot13 как a
-
метод шифрования // действительно просто после этого вы можете иметь этот архив на вашем экране
-
// без passer-by видя ваш пароль электронной почты. Rot13 не делает его безопасным
-
// никакое двухстороннее encyrption в источнике делает, но он преградит бродяжничая глаза.
-
Польза http://rot13.thecodecave.com // получить encyrpted версии текста.
-
// которое над линией посмотрело бы что-нибудь подобное:
-
blockspam // (str_rot13 («{vznc.rknzcyr.pbz: 143} "), str_rot13 («lbh@rknzcyr.pbz»), str_rot13 («lbhecnffjbeq»));
-
-
// если вы имеете множественный учет, то, добавляет другую линию спам блока.
-
-
? >













