diff -Nur -x '*.orig' -x '*.rej' smeserver-qpsmtpd-1.2.1/root/usr/share/qpsmtpd/plugins/peers mezzanine_patched_smeserver-qpsmtpd-1.2.1/root/usr/share/qpsmtpd/plugins/peers --- smeserver-qpsmtpd-1.2.1/root/usr/share/qpsmtpd/plugins/peers 2007-01-11 13:51:37.000000000 -0700 +++ mezzanine_patched_smeserver-qpsmtpd-1.2.1/root/usr/share/qpsmtpd/plugins/peers 2007-01-11 13:51:33.000000000 -0700 @@ -46,9 +46,9 @@ sub _peer_plugins { my $qp = shift; my $config = shift; + $qp->{hooks} = {}; my @plugins = $qp->config($config); - $qp->log(LOGNOTICE, "loading plugins @plugins from $config"); - + $qp->log(LOGNOTICE, "loading plugin $_") foreach (@plugins); return $qp->_load_plugins($qp->plugin_dir, @plugins); } @@ -61,13 +61,28 @@ while ($client_ip) { if (-f "config/peers/$client_ip") { _peer_plugins($qp, "peers/$client_ip"); + $self->register_hook("mail", "verify_auth", 1); return (DECLINED); } $client_ip =~ s/\.?\d+$//; # strip off another 8 bits } if (-f "config/peers/0") { _peer_plugins($qp, "peers/0"); + $self->register_hook("mail", "verify_auth", 1); return (DECLINED); } return (DENY); } + +sub verify_auth { + my ( $self, $transaction, $method, $user, $passClear, $passHash, $ticket ) = @_; + + my $qp = $self->qp; + + if ( $qp->auth_mechanism() and $qp->auth_user() ) + { + _peer_plugins($qp, "peers/local") if (-f "config/peers/local"); + } + + return (DECLINED); +}