Remove ability for HTML emails to use CSS positioning to overlay SquirrelMail content...
[squirrelmail.git] / plugins / filters / filters.php
index 10b703d24c9eb6fdbb5ce4f3a1345990b7eb5dfc..3ceb60bd638fd44937fbbd05bce5f69516a2fc8a 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * Message and Spam Filter Plugin - Filtering Functions
  *
- * @copyright © 1999-2007 The SquirrelMail Project Team
+ * @copyright © 1999-2009 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package plugins
@@ -25,7 +25,7 @@ global $UseSeparateImapConnection,
     $SpamFilters_CacheTTL;
 
 /**
- * load required functions. Plugin depends on IMAP functions and they are not 
+ * load required functions. Plugin depends on IMAP functions and they are not
  * loaded in src/webmail.php
  */
 include_once (SM_PATH . 'functions/imap.php');
@@ -210,8 +210,8 @@ function start_filters($hook_args) {
         $spamfilters = load_spam_filters();
 
         $AllowSpamFilters = false;
-        foreach($spamfilters as $filterskey=>$value) {
-            if ($value['enabled'] == 'yes') {
+        foreach($spamfilters as $value) {
+            if ($value['enabled'] == SMPREF_ON) {
                 $AllowSpamFilters = true;
                 break;
             }
@@ -381,7 +381,7 @@ function filter_search_and_delete($imap_stream, $where, $what, $where_to, $user_
         $ids = array();
         for ($i = 0, $iCnt = count($read); $i < $iCnt; ++$i) {
             if (preg_match("/^\* SEARCH (.+)$/", $read[$i], $regs)) {
-                $ids += preg_split("/ /", trim($regs[1]));
+                $ids += explode(' ', trim($regs[1]));
             }
         }
         if ($response == 'OK' && count($ids)) {
@@ -429,7 +429,7 @@ function spam_filters($imap_stream) {
 
     $run = false;
 
-    foreach ($filters as $Key => $Value) {
+    foreach ($filters as $Value) {
         if ($Value['enabled']) {
             $run = true;
             break;
@@ -450,7 +450,7 @@ function spam_filters($imap_stream) {
         if (isset($read[0])) {
             for ($i = 0, $iCnt = count($read); $i < $iCnt; ++$i) {
                 if (preg_match("/^\* SEARCH (.+)$/", $read[$i], $regs)) {
-                    $search_array = preg_split("/ /", trim($regs[1]));
+                    $search_array = explode(' ', trim($regs[1]));
                 break;
                 }
             }
@@ -547,8 +547,12 @@ function filters_spam_check_site($a, $b, $c, $d, &$filters) {
     foreach ($filters as $key => $value) {
         if ($filters[$key]['enabled']) {
             if ($filters[$key]['dns']) {
+                /**
+                 * RFC allows . on end of hostname to force domain lookup
+                 * to not use search domain from resolv.conf
+                 */
                 $filter_revip = $d . '.' . $c . '.' . $b . '.' . $a . '.' .
-                                $filters[$key]['dns'];
+                                $filters[$key]['dns'] . '.';
 
                 if(!isset($SpamFilters_DNScache[$filter_revip]['L']))
                         $SpamFilters_DNScache[$filter_revip]['L'] = '';
@@ -562,8 +566,12 @@ function filters_spam_check_site($a, $b, $c, $d, &$filters) {
                     $SpamFilters_DNScache[$filter_revip]['T'] =
                                        time() + $SpamFilters_CacheTTL;
                 }
-                if ($SpamFilters_DNScache[$filter_revip]['L'] ==
-                    $filters[$key]['result']) {
+
+                /**
+                 * gethostbyname returns ip if resolved, or returns original
+                 * host query if no resolution
+                 */
+                if ($SpamFilters_DNScache[$filter_revip]['L'] != $filter_revip) {
                     return 1;
                 }
             }
@@ -716,7 +724,7 @@ function load_spam_filters() {
     $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']['result'] = '127.0.0.2';
     $filters['SPAMhaus']['comment'] =
         _("FREE - SPAMhaus - A list of well-known SPAM sources.");
 
@@ -857,7 +865,7 @@ function load_spam_filters() {
         _("FREE - Distributed Sender Boycott List - UN-Confirmed Relays");
 
     foreach ($filters as $Key => $Value) {
-        $filters[$Key]['enabled'] = getPref($data_dir, $username, $filters[$Key]['prefname']);
+        $filters[$Key]['enabled'] = (bool)getPref($data_dir, $username, $filters[$Key]['prefname']);
     }
 
     return $filters;