steffen: server/kolab-resource-handlers/kolab-resource-handlers/resmgr kolabfilter.php, 1.9, 1.10 resmgr.conf, 1.3, 1.4

cvs at intevation.de cvs at intevation.de
Tue Nov 23 12:48:13 CET 2004


Author: steffen

Update of /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr
In directory doto:/tmp/cvs-serv31631/kolab-resource-handlers/kolab-resource-handlers/resmgr

Modified Files:
	kolabfilter.php resmgr.conf 
Log Message:
Fixed some dependencies and Issue537 (kolabfilter From/From:)

Index: kolabfilter.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr/kolabfilter.php,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- kolabfilter.php	22 Nov 2004 01:34:50 -0000	1.9
+++ kolabfilter.php	23 Nov 2004 11:48:11 -0000	1.10
@@ -48,18 +48,36 @@
 // does not impersonate any user from our domain
 function verify_sender( $sender, $from ) {
   global $params;
-  if( is_array($params['email_domain']) ) {
-    $domains = $params['email_domain'];
-  } else {
-    $domains = array($params['email_domain']);
-  }
-  $senderdom = substr(strrchr($sender, '@'), 1);
-  $fromdom = substr(strrchr($from, '@'), 1);
-  foreach( $domains as $domain ) {
-    if( ($senderdom == $domain ||
-	 $fromdom   == $domain ) &&
-	$sender != $from ) {
-      return false;
+
+  $adrs = imap_rfc822_parse_adrlist($from, $params['email_domain']);
+  foreach ($adrs as $adr) {
+    $from = $adr->mailbox.'@'.$adr->host;
+    $fromdom = $adr->host;
+
+    if( is_array($params['email_domain']) ) {
+      $domains = $params['email_domain'];
+    } else {
+      $domains = array($params['email_domain']);
+    }
+    $senderdom = substr(strrchr($sender, '@'), 1);
+    foreach( $domains as $domain ) {
+      if( $params['verify_subdomains'] ) {	
+	//myLog( "Checking if ".substr($senderdom, -strlen($domain)-1)." == .$domain", RM_LOG_DEBUG );
+	//myLog( "Checking if ".substr($fromdom, -strlen($domain)-1)." == .$domain", RM_LOG_DEBUG );
+	if( ($senderdom == $domain ||
+	     $fromdom   == $domain ||
+	     substr($senderdom, -strlen($domain)-1) == ".$domain" ||
+	     substr($fromdom, -strlen($domain)-1) == ".$domain" ) &&
+	    $sender != $from ) {
+	  return false;
+	}
+      } else {
+	if( ($senderdom == $domain ||
+	     $fromdom   == $domain ) &&
+	    $sender != $from ) {
+	  return false;
+	}
+      }
     }
   }
   return true;
@@ -84,16 +102,13 @@
   $line = rtrim( $buffer, "\r\n");
   if( $line == '' ) {
     // Done with headers
-  } else if( eregi( '^From:(.*)', $line, $regs ) ) {
-    $adrs = imap_rfc822_parse_adrlist($regs[1], $params['email_domain']);
-    foreach( $adrs as $adr ) {
-      $from = strtolower($adr->mailbox.'@'.$adr->host);
-      if( !verify_sender( $sender, $from) ) {
-	myLog("Invalid From: header. $from does not match envelope $sender\n", RM_LOG_DEBUG);
-	fwrite(STDOUT,"Invalid From: header. $from does not match envelope $sender\n");
-	exit(EX_UNAVAILABLE);
-      }
-    }
+  } else if( $params['verify_from_header'] && eregi( '^From:(.*)', $line, $regs ) ) {
+    $from = $regs[1];
+    if( !verify_sender( $sender, $from) ) {
+      myLog("Invalid From: header. $from does not match envelope $sender\n", RM_LOG_DEBUG);
+      fwrite(STDOUT,"Invalid From: header. $from does not match envelope $sender\n");
+      exit(EX_UNAVAILABLE);
+    }   
   } else if( eregi( '^Content-Type: text/calendar', $line ) ) {
     $ical = true;
   }

Index: resmgr.conf
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr/resmgr.conf,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- resmgr.conf	29 Oct 2004 00:20:20 -0000	1.3
+++ resmgr.conf	23 Nov 2004 11:48:11 -0000	1.4
@@ -18,6 +18,14 @@
 // virtual_domains is true, and when using manager accounts.
 $params['append_domains'] = false;
 
+// Should we make sure that the sender and From header match for mail
+// that origins on this server?
+$params['verify_from_header'] = true;
+
+// Should we perform this check on mail from our
+// subdomains too?
+$params['verify_subdomains'] = true;
+
 // LDAP data
 // What is the address of the LDAP server address where user objects reside
 $params['ldap_uri'] = 'ldaps://ldap.example.com';





More information about the commits mailing list