Brian Szymanski wrote:
>
> Can you send a copy of your config/plugins and any custom auth/ plugins
> you are using?
Sure. See attached.
> The patch is quite simple, I'd be quite surprised if it turns out to be
> a bug in the code - more likely the patch (me) or your auth plugins made
> some bad assumption. I just tested John's patch, and it works the same
> as my own does on my testbed server. My suspicion is that the problem is
> something about the way you are registering your auth hooks.
It could well be.
>
> Cheers,
> Brian
>
> PS - You're going to want to change your password, as you just sent it
> unencrypted (just encoded in Base64) to a list :)
Ooops. Done!
R.
#!/usr/bin/perl -w
use IO::Socket;
sub register {
my ( $self, $qp ) = @_;
$self->register_hook( "auth-plain", "auth_vpopmaild" );
$self->register_hook( "auth-login", "auth_vpopmaild" );
}
sub auth_vpopmaild {
my ( $self, $transaction, $method, $user, $passClear, $passHash, $ticket )
= @_;
# Read these from a config file
my $vpopmaild_host = 'localhost';
my $vpopmaild_port = 89;
# create socket
my $vpopmaild_socket = IO::Socket::INET->new(PeerAddr => $vpopmaild_host,
PeerPort => $vpopmaild_port,
Proto => "tcp",
Type => SOCK_STREAM)
or return (DECLINED);
# Get server greeting (+OK)
my $connect_response = <$vpopmaild_socket>;
if (! $connect_response =~ /\+OK.*/) {
return (DECLINED);
}
# send login details
print $vpopmaild_socket "login $user $passClear\n\r";
# get response from server
my $login_response = <$vpopmaild_socket>;
close ($vpopmaild_socket);
# check for successful login
if ($login_response =~ /\+OK.*/) {
return ( OK, "authcheckpassword" );
} else {
return (DECLINED);
}
}
# __ CONNECT ________________________________________
check_earlytalker
count_unrecognized_commands 4
auth/auth_vpopmaild
#auth/auth_vchkpw
#qppoprelay
# tls ssl/smtp.robinbowes.com.cert ssl/smtp.robinbowes.com.key
tls
# __ RCPT FROM ______________________________________
#rhsbl
check_validrcptto_cdb cdb_file config/validrcptto.cdb
#check_localuser
check_badmailfrom
check_badrcptto
check_spamhelo
check_relay
#require_resolvable_fromhost
dnsbl
# __ DATAPOST _______________________________________
#virus/clamav clamscan_path=/usr/bin/clamdscan
clamd_conf=/etc/clamd.d/qpsmtpd.conf action=reject max_size=1048576
spamassassin reject_threshold 8 spamd_socket /var/run/spamassassin/spamd.socket
#maillog
#virus/klez_filter
queue/qmail-queue
logging/accept_reject
# __ QUIT ___________________________________________
quit_fortune
rcpt_ok