Source for file filters.php
Documentation is available at filters.php
* Message and Spam Filter Plugin - Filtering Functions
* This plugin filters your inbox into different folders based upon given
* criteria. It is most useful for people who are subscibed to mailing lists
* to help organize their messages. The argument stands that filtering is
* not the place of the client, which is why this has been made a plugin for
* SquirrelMail. You may be better off using products such as Sieve or
* Procmail to do your filtering so it happens even when SquirrelMail isn't
* If you need help with this, or see improvements that can be made, please
* email me directly at the address above. I definately welcome suggestions
* and comments. This plugin, as is the case with all SquirrelMail plugins,
* is not directly supported by the developers. Please come to me off the
* mailing list if you have trouble with it.
* Also view plugins/README.plugins for more information.
* @version $Id: filters.php,v 1.45.2.18 2006/07/29 08:46:57 tokul Exp $
* @copyright (c) 1999-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* FIXME: Undocumented function
function filters_SaveCache () {
$fp =
fopen($data_dir .
'/dnscache', 'r');
$fp =
fopen($data_dir .
'/dnscache', 'w+');
$fp =
fopen($data_dir .
'/dnscache', 'r');
$fp1=
fopen($data_dir .
'/dnscache', 'w+');
foreach ($SpamFilters_DNScache as $Key=>
$Value) {
$tstr =
$Key .
',' .
$Value['L'] .
',' .
$Value['T'] .
"\n";
* FIXME: Undocumented function
function filters_LoadCache () {
$SpamFilters_DNScache =
array();
if ($fp =
fopen ($data_dir .
'/dnscache', 'r')) {
$SpamFilters_DNScache[$data[0]]['L'] =
$data[1];
$SpamFilters_DNScache[$data[0]]['T'] =
$data[2];
* FIXME: Undocumented function
function filters_bulkquery($filters_spam_scan, $filters, $read) {
while ($i <
count($read)) {
// EIMS will give funky results
// Look through all of the Received headers for IP addresses
// Stop when I get ")" on a line
// Stop if I get "*" on a line (don't advance)
// and above all, stop if $i is bigger than the total # of lines
while (($i <
count($read)) &&
($read[$i][0] !=
')' &&
$read[$i][0] !=
'*' &&
// Check to see if this line is the right "Received from" line
$elements =
explode(' ', $read[$i]);
foreach ($elements as $value) {
ereg('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',
$IP =
$Chunks[3] .
'.' .
$Chunks[2] .
'.' .
$Chunks[1] .
'.' .
$Chunks[0];
foreach ($filters as $key =>
$value) {
if ($filters[$key]['enabled'] &&
if (strlen($SpamFilters_DNScache[$IP.
'.'.
$filters[$key]['dns']]) ==
0) {
// If we've checked one IP and YourHop is
if ($SpamFilters_YourHop ==
' ') {
break; // don't check any more
foreach ($filters as $key =>
$value) {
if ($filters[$key]['enabled']) {
if ($filters[$key]['dns']) {
$rbls[$filters[$key]['dns']] =
true;
$bqfil =
$attachment_dir .
$username .
'-bq.in';
$fp =
fopen($bqfil, 'w');
fputs ($fp, $SpamFilters_CacheTTL .
"\n");
foreach ($rbls as $key =>
$value) {
fputs ($fp, '.' .
$key .
"\n");
fputs ($fp, "----------\n");
foreach ($IPs as $key =>
$value) {
fputs ($fp, $key .
"\n");
exec ($SpamFilters_BulkQuery .
' < ' .
$bqfil, $bqout);
foreach ($bqout as $value) {
$SpamFilters_DNScache[$Chunks[0]]['L'] =
$Chunks[1];
$SpamFilters_DNScache[$Chunks[0]]['T'] =
$Chunks[2] +
time();
* FIXME: Undocumented function
function start_filters() {
global $mailbox, $imapServerAddress, $imapPort, $imap,
$imap_general, $filters, $imap_stream, $imapConnection,
$filters =
load_filters();
// No point running spam filters if there aren't any to run //
$spamfilters =
load_spam_filters();
$AllowSpamFilters =
false;
foreach($spamfilters as $filterkey=>
$value) {
if ($value['enabled'] ==
'yes') {
$AllowSpamFilters =
true;
// No user filters, and no spam filters, no need to continue //
if (!$AllowSpamFilters &&
empty($filters)) {
// Detect if we have already connected to IMAP or not.
// Also check if we are forced to use a separate IMAP connection
if ((!isset
($imap_stream) &&
!isset
($imapConnection)) ||
$UseSeparateImapConnection ) {
$previously_connected =
false;
} else if (isset
($imapConnection)) {
$stream =
$imapConnection;
$previously_connected =
true;
$previously_connected =
true;
if ($aStatus['MESSAGES']) {
// Filter spam from inbox before we sort them into folders
if (!$previously_connected) {
* FIXME: Undocumented function
function user_filters($imap_stream) {
global $data_dir, $username;
$filters =
load_filters();
$filters_user_scan =
getPref($data_dir, $username, 'filters_user_scan');
for ($i=
0, $num =
count($filters); $i <
$num; $i++
) {
// If it is the "combo" rule
if ($filters[$i]['where'] ==
'To or Cc') {
* If it's "TO OR CC", we have to do two searches, one for TO
$id =
filter_search_and_delete($imap_stream, 'TO',
$filters[$i]['what'], $filters[$i]['folder'], $filters_user_scan, $id);
$id =
filter_search_and_delete($imap_stream, 'CC',
$filters[$i]['what'], $filters[$i]['folder'], $filters_user_scan, $id);
* If it's a normal TO, CC, SUBJECT, or FROM, then handle it
$id =
filter_search_and_delete($imap_stream, $filters[$i]['where'],
$filters[$i]['what'], $filters[$i]['folder'], $filters_user_scan, $id);
// Clean out the mailbox whether or not auto_expunge is on
// That way it looks like it was redirected properly
* FIXME: Undocumented function
function filter_search_and_delete($imap, $where, $what, $where_to, $user_scan,
global $languages, $squirrelmail_language, $allow_charset_search,
$uid_support, $imap_server_type;
if ($user_scan ==
'new') {
$category .=
' UNDELETED';
if ($allow_charset_search &&
isset
($languages[$squirrelmail_language]['CHARSET']) &&
$languages[$squirrelmail_language]['CHARSET']) {
$search_str =
'SEARCH CHARSET '
.
strtoupper($languages[$squirrelmail_language]['CHARSET'])
$search_str =
'SEARCH CHARSET US-ASCII ' .
$category;
if ($where ==
'Header') {
$where =
trim($where .
' ' .
$what[0]);
// see comments in squirrelmail sqimap_search function
if ($imap_server_type ==
'macosx' ||
$imap_server_type ==
'hmailserver') {
$search_str .=
' ' .
$where .
' ' .
$what;
$search_str .=
' ' .
$where .
' {' .
strlen($what) .
"}\r\n"
/* read data back from IMAP */
// This may have problems with EIMS due to it being goofy
for ($r=
0, $num =
count($read); $r <
$num &&
substr($read[$r], 0, 8) !=
'* SEARCH'; $r++
) {}
* why we do n calls instead of just one. It is safer to copy
* messages one by one, but code does not call expunge after
* message is copied and quota limits are not resolved.
for ($j=
2, $num =
count($ids); $j <
$num; $j++
) {
* FIXME: Undocumented function
function spam_filters($imap_stream) {
global $data_dir, $username, $uid_support;
$filters_spam_scan =
getPref($data_dir, $username, 'filters_spam_scan');
$filters_spam_folder =
getPref($data_dir, $username, 'filters_spam_folder');
$filters =
load_spam_filters();
if ($SpamFilters_SharedCache) {
foreach ($filters as $Key=>
$Value) {
// Ask for a big list of all "Received" headers in the inbox with
// flags for each message. Kinda big.
if ($filters_spam_scan !=
'new') {
'(RECEIVED)])', true, $response, $message, $uid_support);
$read =
sqimap_run_command($imap_stream, 'SEARCH UNSEEN', true, $response, $message, $uid_support);
if ($response !=
'OK' ||
trim($read[0]) ==
'* SEARCH') {
'(RECEIVED)])', true, $response, $message, $uid_support);
if (preg_match("/^\* SEARCH (.+)$/", $read[0], $regs)) {
$imap_query =
'FETCH '.
$msgs_str;
$imap_query .=
' (FLAGS BODY.PEEK[HEADER.FIELDS ';
$imap_query .=
'(RECEIVED)])';
$read =
sqimap_run_command($imap_stream,$imap_query, true, $response, $message, $uid_support);
if (isset
($response) &&
$response !=
'OK') {
if (strlen($SpamFilters_BulkQuery) >
0) {
filters_bulkquery($filters_spam_scan, $filters, $read);
while ($i <
count($read)) {
// EIMS will give funky results
// Look through all of the Received headers for IP addresses
// Stop when I get ")" on a line
// Stop if I get "*" on a line (don't advance)
// and above all, stop if $i is bigger than the total # of lines
while (($i <
count($read)) &&
($read[$i][0] !=
')' &&
$read[$i][0] !=
'*' &&
$read[$i][0] !=
"\n") &&
(! $IsSpam)) {
// Check to see if this line is the right "Received from" line
// short-circuit and skip work if we don't scan this one
$elements =
explode(' ', $read[$i]);
foreach ($elements as $value) {
ereg('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',
if (filters_spam_check_site($Chunks[0],
$Chunks[1], $Chunks[2], $Chunks[3],
break; // no sense in checking more IPs
// If we've checked one IP and YourHop is
if ($SpamFilters_YourHop ==
' ') {
break; // don't check any more
// Lookie! It's spam! Yum!
// check if message copy was successful
$filters_spam_folder, false)) {
if ($SpamFilters_SharedCache) {
* FIXME: Undocumented function
* Does the loop through each enabled filter for the specified IP address.
function filters_spam_check_site($a, $b, $c, $d, &$filters) {
foreach ($filters as $key =>
$value) {
if ($filters[$key]['enabled']) {
if ($filters[$key]['dns']) {
$filter_revip =
$d .
'.' .
$c .
'.' .
$b .
'.' .
$a .
'.' .
if(!isset
($SpamFilters_DNScache[$filter_revip]['L']))
$SpamFilters_DNScache[$filter_revip]['L'] =
'';
if(!isset
($SpamFilters_DNScache[$filter_revip]['T']))
$SpamFilters_DNScache[$filter_revip]['T'] =
'';
if (strlen($SpamFilters_DNScache[$filter_revip]['L']) ==
0) {
$SpamFilters_DNScache[$filter_revip]['L'] =
$SpamFilters_DNScache[$filter_revip]['T'] =
time() +
$SpamFilters_CacheTTL;
if ($SpamFilters_DNScache[$filter_revip]['L'] ==
$filters[$key]['result']) {
* FIXME: Undocumented function
function load_filters() {
global $data_dir, $username;
for ($i=
0; $fltr =
getPref($data_dir, $username, 'filter' .
$i); $i++
) {
$filters[$i]['where'] =
$ary[0];
$filters[$i]['what'] =
$ary[1];
$filters[$i]['folder'] =
$ary[2];
* FIXME: Undocumented function
function load_spam_filters() {
if ($SpamFilters_ShowCommercial) {
$filters['MAPS RBL']['prefname'] =
'filters_spam_maps_rbl';
$filters['MAPS RBL']['name'] =
'MAPS Realtime Blackhole List';
$filters['MAPS RBL']['link'] =
'http://www.mail-abuse.org/rbl/';
$filters['MAPS RBL']['dns'] =
'blackholes.mail-abuse.org';
$filters['MAPS RBL']['result'] =
'127.0.0.2';
$filters['MAPS RBL']['comment'] =
_("COMMERCIAL - This list contains servers that are verified spam senders. It is a pretty reliable list to scan spam from.");
$filters['MAPS RSS']['prefname'] =
'filters_spam_maps_rss';
$filters['MAPS RSS']['name'] =
'MAPS Relay Spam Stopper';
$filters['MAPS RSS']['link'] =
'http://www.mail-abuse.org/rss/';
$filters['MAPS RSS']['dns'] =
'relays.mail-abuse.org';
$filters['MAPS RSS']['result'] =
'127.0.0.2';
$filters['MAPS RSS']['comment'] =
_("COMMERCIAL - Servers that are configured (or misconfigured) to allow spam to be relayed through their system will be banned with this. Another good one to use.");
$filters['MAPS DUL']['prefname'] =
'filters_spam_maps_dul';
$filters['MAPS DUL']['name'] =
'MAPS Dial-Up List';
$filters['MAPS DUL']['link'] =
'http://www.mail-abuse.org/dul/';
$filters['MAPS DUL']['dns'] =
'dialups.mail-abuse.org';
$filters['MAPS DUL']['result'] =
'127.0.0.3';
$filters['MAPS DUL']['comment'] =
_("COMMERCIAL - Dial-up users are often filtered out since they should use their ISP's mail servers to send mail. Spammers typically get a dial-up account and send spam directly from there.");
$filters['MAPS RBLplus-RBL']['prefname'] =
'filters_spam_maps_rblplus_rbl';
$filters['MAPS RBLplus-RBL']['name'] =
'MAPS RBL+ RBL List';
$filters['MAPS RBLplus-RBL']['link'] =
'http://www.mail-abuse.org/';
$filters['MAPS RBLplus-RBL']['dns'] =
'rbl-plus.mail-abuse.org';
$filters['MAPS RBLplus-RBL']['result'] =
'127.0.0.2';
$filters['MAPS RBLplus-RBL']['comment'] =
_("COMMERCIAL - RBL+ Blackhole entries.");
$filters['MAPS RBLplus-RSS']['prefname'] =
'filters_spam_maps_rblplus_rss';
$filters['MAPS RBLplus-RSS']['name'] =
'MAPS RBL+ List RSS entries';
$filters['MAPS RBLplus-RSS']['link'] =
'http://www.mail-abuse.org/';
$filters['MAPS RBLplus-RSS']['dns'] =
'rbl-plus.mail-abuse.org';
$filters['MAPS RBLplus-RSS']['result'] =
'127.0.0.2';
$filters['MAPS RBLplus-RSS']['comment'] =
_("COMMERCIAL - RBL+ OpenRelay entries.");
$filters['MAPS RBLplus-DUL']['prefname'] =
'filters_spam_maps_rblplus_dul';
$filters['MAPS RBLplus-DUL']['name'] =
'MAPS RBL+ List DUL entries';
$filters['MAPS RBLplus-DUL']['link'] =
'http://www.mail-abuse.org/';
$filters['MAPS RBLplus-DUL']['dns'] =
'rbl-plus.mail-abuse.org';
$filters['MAPS RBLplus-DUL']['result'] =
'127.0.0.3';
$filters['MAPS RBLplus-DUL']['comment'] =
_("COMMERCIAL - RBL+ Dial-up entries.");
$filters['ORDB']['prefname'] =
'filters_spam_ordb';
$filters['ORDB']['name'] =
'Open Relay Database List';
$filters['ORDB']['link'] =
'http://www.ordb.org/';
$filters['ORDB']['dns'] =
'relays.ordb.org';
$filters['ORDB']['result'] =
'127.0.0.2';
$filters['ORDB']['comment'] =
_("FREE - ORDB was born when ORBS went off the air. It seems to have fewer false positives than ORBS did though.");
$filters['FiveTen Direct']['prefname'] =
'filters_spam_fiveten_src';
$filters['FiveTen Direct']['name'] =
'Five-Ten-sg.com Direct SPAM Sources';
$filters['FiveTen Direct']['link'] =
'http://www.five-ten-sg.com/blackhole.php';
$filters['FiveTen Direct']['dns'] =
'blackholes.five-ten-sg.com';
$filters['FiveTen Direct']['result'] =
'127.0.0.2';
$filters['FiveTen Direct']['comment'] =
_("FREE - Five-Ten-sg.com - Direct SPAM sources.");
$filters['FiveTen DUL']['prefname'] =
'filters_spam_fiveten_dul';
$filters['FiveTen DUL']['name'] =
'Five-Ten-sg.com DUL Lists';
$filters['FiveTen DUL']['link'] =
'http://www.five-ten-sg.com/blackhole.php';
$filters['FiveTen DUL']['dns'] =
'blackholes.five-ten-sg.com';
$filters['FiveTen DUL']['result'] =
'127.0.0.3';
$filters['FiveTen DUL']['comment'] =
_("FREE - Five-Ten-sg.com - Dial-up lists - includes some DSL IPs.");
$filters['FiveTen Unc. OptIn']['prefname'] =
'filters_spam_fiveten_oi';
$filters['FiveTen Unc. OptIn']['name'] =
'Five-Ten-sg.com Unconfirmed OptIn Lists';
$filters['FiveTen Unc. OptIn']['link'] =
'http://www.five-ten-sg.com/blackhole.php';
$filters['FiveTen Unc. OptIn']['dns'] =
'blackholes.five-ten-sg.com';
$filters['FiveTen Unc. OptIn']['result'] =
'127.0.0.4';
$filters['FiveTen Unc. OptIn']['comment'] =
_("FREE - Five-Ten-sg.com - Bulk mailers that do not use confirmed opt-in.");
$filters['FiveTen Others']['prefname'] =
'filters_spam_fiveten_oth';
$filters['FiveTen Others']['name'] =
'Five-Ten-sg.com Other Misc. Servers';
$filters['FiveTen Others']['link'] =
'http://www.five-ten-sg.com/blackhole.php';
$filters['FiveTen Others']['dns'] =
'blackholes.five-ten-sg.com';
$filters['FiveTen Others']['result'] =
'127.0.0.5';
$filters['FiveTen Others']['comment'] =
_("FREE - Five-Ten-sg.com - Other misc. servers.");
$filters['FiveTen Single Stage']['prefname'] =
'filters_spam_fiveten_ss';
$filters['FiveTen Single Stage']['name'] =
'Five-Ten-sg.com Single Stage Servers';
$filters['FiveTen Single Stage']['link'] =
'http://www.five-ten-sg.com/blackhole.php';
$filters['FiveTen Single Stage']['dns'] =
'blackholes.five-ten-sg.com';
$filters['FiveTen Single Stage']['result'] =
'127.0.0.6';
$filters['FiveTen Single Stage']['comment'] =
_("FREE - Five-Ten-sg.com - Single Stage servers.");
$filters['FiveTen SPAM Support']['prefname'] =
'filters_spam_fiveten_supp';
$filters['FiveTen SPAM Support']['name'] =
'Five-Ten-sg.com SPAM Support Servers';
$filters['FiveTen SPAM Support']['link'] =
'http://www.five-ten-sg.com/blackhole.php';
$filters['FiveTen SPAM Support']['dns'] =
'blackholes.five-ten-sg.com';
$filters['FiveTen SPAM Support']['result'] =
'127.0.0.7';
$filters['FiveTen SPAM Support']['comment'] =
_("FREE - Five-Ten-sg.com - SPAM Support servers.");
$filters['FiveTen Web forms']['prefname'] =
'filters_spam_fiveten_wf';
$filters['FiveTen Web forms']['name'] =
'Five-Ten-sg.com Web Form IPs';
$filters['FiveTen Web forms']['link'] =
'http://www.five-ten-sg.com/blackhole.php';
$filters['FiveTen Web forms']['dns'] =
'blackholes.five-ten-sg.com';
$filters['FiveTen Web forms']['result'] =
'127.0.0.8';
$filters['FiveTen Web forms']['comment'] =
_("FREE - Five-Ten-sg.com - Web Form IPs.");
$filters['Dorkslayers']['prefname'] =
'filters_spam_dorks';
$filters['Dorkslayers']['name'] =
'Dorkslayers Lists';
$filters['Dorkslayers']['link'] =
'http://www.dorkslayers.com';
$filters['Dorkslayers']['dns'] =
'orbs.dorkslayers.com';
$filters['Dorkslayers']['result'] =
'127.0.0.2';
$filters['Dorkslayers']['comment'] =
_("FREE - Dorkslayers appears to include only really bad open relays outside the US to avoid being sued. Interestingly enough, their website recommends you NOT use their service.");
$filters['SPAMhaus']['prefname'] =
'filters_spam_spamhaus';
$filters['SPAMhaus']['name'] =
'SPAMhaus Lists';
$filters['SPAMhaus']['link'] =
'http://www.spamhaus.org';
$filters['SPAMhaus']['dns'] =
'sbl.spamhaus.org';
$filters['SPAMhaus']['result'] =
'127.0.0.6';
$filters['SPAMhaus']['comment'] =
_("FREE - SPAMhaus - A list of well-known SPAM sources.");
$filters['SPAMcop']['prefname'] =
'filters_spam_spamcop';
$filters['SPAMcop']['name'] =
'SPAM Cop Lists';
$filters['SPAMcop']['link'] =
'http://spamcop.net/bl.shtml';
$filters['SPAMcop']['dns'] =
'bl.spamcop.net';
$filters['SPAMcop']['result'] =
'127.0.0.2';
$filters['SPAMcop']['comment'] =
_("FREE, for now - SpamCop - An interesting solution that lists servers that have a very high spam to legit email ratio (85 percent or more).");
$filters['dev.null.dk']['prefname'] =
'filters_spam_devnull';
$filters['dev.null.dk']['name'] =
'dev.null.dk Lists';
$filters['dev.null.dk']['link'] =
'http://dev.null.dk/';
$filters['dev.null.dk']['dns'] =
'dev.null.dk';
$filters['dev.null.dk']['result'] =
'127.0.0.2';
$filters['dev.null.dk']['comment'] =
_("FREE - dev.null.dk - I don't have any detailed info on this list.");
$filters['visi.com']['prefname'] =
'filters_spam_visi';
$filters['visi.com']['name'] =
'visi.com Relay Stop List';
$filters['visi.com']['link'] =
'http://relays.visi.com';
$filters['visi.com']['dns'] =
'relays.visi.com';
$filters['visi.com']['result'] =
'127.0.0.2';
$filters['visi.com']['comment'] =
_("FREE - visi.com - Relay Stop List. Very conservative OpenRelay List.");
$filters['ahbl.org Open Relays']['prefname'] =
'filters_spam_2mb_or';
$filters['ahbl.org Open Relays']['name'] =
'ahbl.org Open Relays List';
$filters['ahbl.org Open Relays']['link'] =
'http://www.ahbl.org/';
$filters['ahbl.org Open Relays']['dns'] =
'dnsbl.ahbl.org';
$filters['ahbl.org Open Relays']['result'] =
'127.0.0.2';
$filters['ahbl.org Open Relays']['comment'] =
_("FREE - ahbl.org Open Relays - Another list of Open Relays.");
$filters['ahbl.org SPAM Source']['prefname'] =
'filters_spam_2mb_ss';
$filters['ahbl.org SPAM Source']['name'] =
'ahbl.org SPAM Source List';
$filters['ahbl.org SPAM Source']['link'] =
'http://www.ahbl.org/';
$filters['ahbl.org SPAM Source']['dns'] =
'dnsbl.ahbl.org';
$filters['ahbl.org SPAM Source']['result'] =
'127.0.0.4';
$filters['ahbl.org SPAM Source']['comment'] =
_("FREE - ahbl.org SPAM Source - List of Direct SPAM Sources.");
$filters['ahbl.org SPAM ISPs']['prefname'] =
'filters_spam_2mb_isp';
$filters['ahbl.org SPAM ISPs']['name'] =
'ahbl.org SPAM-friendly ISP List';
$filters['ahbl.org SPAM ISPs']['link'] =
'http://www.ahbl.org/';
$filters['ahbl.org SPAM ISPs']['dns'] =
'dnsbl.ahbl.org';
$filters['ahbl.org SPAM ISPs']['result'] =
'127.0.0.7';
$filters['ahbl.org SPAM ISPs']['comment'] =
_("FREE - ahbl.org SPAM ISPs - List of SPAM-friendly ISPs.");
$filters['Leadmon DUL']['prefname'] =
'filters_spam_lm_dul';
$filters['Leadmon DUL']['name'] =
'Leadmon.net DUL List';
$filters['Leadmon DUL']['link'] =
'http://www.leadmon.net/spamguard/';
$filters['Leadmon DUL']['dns'] =
'spamguard.leadmon.net';
$filters['Leadmon DUL']['result'] =
'127.0.0.2';
$filters['Leadmon DUL']['comment'] =
_("FREE - Leadmon DUL - Another list of Dial-up or otherwise dynamically assigned IPs.");
$filters['Leadmon SPAM Source']['prefname'] =
'filters_spam_lm_ss';
$filters['Leadmon SPAM Source']['name'] =
'Leadmon.net SPAM Source List';
$filters['Leadmon SPAM Source']['link'] =
'http://www.leadmon.net/spamguard/';
$filters['Leadmon SPAM Source']['dns'] =
'spamguard.leadmon.net';
$filters['Leadmon SPAM Source']['result'] =
'127.0.0.3';
$filters['Leadmon SPAM Source']['comment'] =
_("FREE - Leadmon SPAM Source - List of IPs Leadmon.net has received SPAM directly from.");
$filters['Leadmon Bulk Mailers']['prefname'] =
'filters_spam_lm_bm';
$filters['Leadmon Bulk Mailers']['name'] =
'Leadmon.net Bulk Mailers List';
$filters['Leadmon Bulk Mailers']['link'] =
'http://www.leadmon.net/spamguard/';
$filters['Leadmon Bulk Mailers']['dns'] =
'spamguard.leadmon.net';
$filters['Leadmon Bulk Mailers']['result'] =
'127.0.0.4';
$filters['Leadmon Bulk Mailers']['comment'] =
_("FREE - Leadmon Bulk Mailers - Bulk mailers that do not require confirmed opt-in or that have allowed known spammers to become clients and abuse their services.");
$filters['Leadmon Open Relays']['prefname'] =
'filters_spam_lm_or';
$filters['Leadmon Open Relays']['name'] =
'Leadmon.net Open Relays List';
$filters['Leadmon Open Relays']['link'] =
'http://www.leadmon.net/spamguard/';
$filters['Leadmon Open Relays']['dns'] =
'spamguard.leadmon.net';
$filters['Leadmon Open Relays']['result'] =
'127.0.0.5';
$filters['Leadmon Open Relays']['comment'] =
_("FREE - Leadmon Open Relays - Single Stage Open Relays that are not listed on other active RBLs.");
$filters['Leadmon Multi-stage']['prefname'] =
'filters_spam_lm_ms';
$filters['Leadmon Multi-stage']['name'] =
'Leadmon.net Multi-Stage Relay List';
$filters['Leadmon Multi-stage']['link'] =
'http://www.leadmon.net/spamguard/';
$filters['Leadmon Multi-stage']['dns'] =
'spamguard.leadmon.net';
$filters['Leadmon Multi-stage']['result'] =
'127.0.0.6';
$filters['Leadmon Multi-stage']['comment'] =
_("FREE - Leadmon Multi-stage - Multi-Stage Open Relays that are not listed on other active RBLs and that have sent SPAM to Leadmon.net.");
$filters['Leadmon SpamBlock']['prefname'] =
'filters_spam_lm_sb';
$filters['Leadmon SpamBlock']['name'] =
'Leadmon.net SpamBlock Sites List';
$filters['Leadmon SpamBlock']['link'] =
'http://www.leadmon.net/spamguard/';
$filters['Leadmon SpamBlock']['dns'] =
'spamguard.leadmon.net';
$filters['Leadmon SpamBlock']['result'] =
'127.0.0.7';
$filters['Leadmon SpamBlock']['comment'] =
_("FREE - Leadmon SpamBlock - Sites on this listing have sent Leadmon.net direct SPAM from IPs in netblocks where the entire block has no DNS mappings. It's a list of BLOCKS of IPs being used by people who have SPAMmed Leadmon.net.");
$filters['NJABL Open Relays']['prefname'] =
'filters_spam_njabl_or';
$filters['NJABL Open Relays']['name'] =
'NJABL Open Relay/Direct Spam Source List';
$filters['NJABL Open Relays']['link'] =
'http://www.njabl.org/';
$filters['NJABL Open Relays']['dns'] =
'dnsbl.njabl.org';
$filters['NJABL Open Relays']['result'] =
'127.0.0.2';
$filters['NJABL Open Relays']['comment'] =
_("FREE, for now - Not Just Another Blacklist - Both Open Relays and Direct SPAM Sources.");
$filters['NJABL DUL']['prefname'] =
'filters_spam_njabl_dul';
$filters['NJABL DUL']['name'] =
'NJABL Dial-ups List';
$filters['NJABL DUL']['link'] =
'http://www.njabl.org/';
$filters['NJABL DUL']['dns'] =
'dnsbl.njabl.org';
$filters['NJABL DUL']['result'] =
'127.0.0.3';
$filters['NJABL DUL']['comment'] =
_("FREE, for now - Not Just Another Blacklist - Dial-up IPs.");
$filters['Conf DSBL.ORG Relay']['prefname'] =
'filters_spam_dsbl_conf_ss';
$filters['Conf DSBL.ORG Relay']['name'] =
'DSBL.org Confirmed Relay List';
$filters['Conf DSBL.ORG Relay']['link'] =
'http://www.dsbl.org/';
$filters['Conf DSBL.ORG Relay']['dns'] =
'list.dsbl.org';
$filters['Conf DSBL.ORG Relay']['result'] =
'127.0.0.2';
$filters['Conf DSBL.ORG Relay']['comment'] =
_("FREE - Distributed Sender Boycott List - Confirmed Relays");
$filters['Conf DSBL.ORG Multi-Stage']['prefname'] =
'filters_spam_dsbl_conf_ms';
$filters['Conf DSBL.ORG Multi-Stage']['name'] =
'DSBL.org Confirmed Multi-Stage Relay List';
$filters['Conf DSBL.ORG Multi-Stage']['link'] =
'http://www.dsbl.org/';
$filters['Conf DSBL.ORG Multi-Stage']['dns'] =
'multihop.dsbl.org';
$filters['Conf DSBL.ORG Multi-Stage']['result'] =
'127.0.0.2';
$filters['Conf DSBL.ORG Multi-Stage']['comment'] =
_("FREE - Distributed Sender Boycott List - Confirmed Multi-stage Relays");
$filters['UN-Conf DSBL.ORG']['prefname'] =
'filters_spam_dsbl_unc';
$filters['UN-Conf DSBL.ORG']['name'] =
'DSBL.org UN-Confirmed Relay List';
$filters['UN-Conf DSBL.ORG']['link'] =
'http://www.dsbl.org/';
$filters['UN-Conf DSBL.ORG']['dns'] =
'unconfirmed.dsbl.org';
$filters['UN-Conf DSBL.ORG']['result'] =
'127.0.0.2';
$filters['UN-Conf DSBL.ORG']['comment'] =
_("FREE - Distributed Sender Boycott List - UN-Confirmed Relays");
foreach ($filters as $Key =>
$Value) {
$filters[$Key]['enabled'] =
getPref($data_dir, $username,
$filters[$Key]['prefname']);
* FIXME: Undocumented function
function remove_filter ($id) {
global $data_dir, $username;
while ($nextFilter =
getPref($data_dir, $username, 'filter' .
setPref($data_dir, $username, 'filter' .
$id, $nextFilter);
* FIXME: Undocumented function
function filter_swap($id1, $id2) {
global $data_dir, $username;
$FirstFilter =
getPref($data_dir, $username, 'filter' .
$id1);
$SecondFilter =
getPref($data_dir, $username, 'filter' .
$id2);
if ($FirstFilter &&
$SecondFilter) {
setPref($data_dir, $username, 'filter' .
$id2, $FirstFilter);
setPref($data_dir, $username, 'filter' .
$id1, $SecondFilter);
* This update the filter rules when renaming or deleting folders
function update_for_folder ($args) {
global $plugins, $data_dir, $username;
$filters =
load_filters();
$filter_count =
count($filters);
for ($i=
0;$i<
$filter_count;$i++
) {
if ($old_folder ==
$filters[$i]['folder']) {
if ($action ==
'rename') {
$filters[$i]['folder'] =
$new_folder;
setPref($data_dir, $username, 'filter'.
$i,
$filters[$i]['where'].
','.
$filters[$i]['what'].
','.
$new_folder);
elseif ($action ==
'delete') {
* Display formated error message
* @param string $string text message
* @return string html formated text message
function do_error($string) {
echo
"<p align=\"center\"><font color=\"$color[2]\">";
Documentation generated on Sat, 07 Oct 2006 16:31:13 +0300 by phpDocumentor 1.3.0RC6