The sender_permitted_from plugin will hang in an endless loop for
IPv6 clients. This is because of faulty code which only knows how
to handle IPv4 addresses.

The attached patch fixes this problem.

Regards,
Michael

-- 
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
diff -Naur qpsmtpd-0.84.upstream/plugins/sender_permitted_from 
qpsmtpd-0.84.fixed/plugins/sender_permitted_from
--- qpsmtpd-0.84.upstream/plugins/sender_permitted_from 2009-04-03 
07:48:34.000000000 +0200
+++ qpsmtpd-0.84.fixed/plugins/sender_permitted_from    2012-11-14 
02:48:06.000000000 +0100
@@ -50,7 +50,12 @@
   while ($client_ip) {
     return (DECLINED) if exists $relay_clients{$client_ip};
     return (DECLINED) if exists $more_relay_clients->{$client_ip};
-    $client_ip =~ s/\d+\.?$//; # strip off another 8 bits
+    if ( $client_ip =~ /:/ ) {
+      $client_ip =~s /[0-9a-f]+:*$//; # strip off another segment
+    }
+    else {
+      $client_ip =~ s/\d+\.?$//;      # strip off another 8 bits
+    }
   }
 
   my $host = lc $sender->host;

Reply via email to