Pocztowe pytania :]
Robert R.Wal
rrw w reptile.eu.org
Pią, 9 Lip 1999, 11:01:09 CEST
On 99.07.08 Michal Margula pressed the following keys:
> Mam dwa pytania :]. Jaki pop obsługuje maildira? Według mana od poppera do
> qmaila jest on dziurawy.
Mógłbyś podać bliżej o co Ci chodzi? Według jakiego mana, do jakiego
poppera, co jest dziurawe? W/g mojej skromnej wiedzy zestaw
qmail-pop3d + checkpassword + qmail-popup ma się dobrze, dziur nie zawiera
i w ogóle (z przewagą w ogóle). I pracuje na maildirach, a do tego jest tak
zmyślnie napisane, że dzięki poniższemu programikowi w perlu (wraz z małą
otoczką) mogę sobie spokojnie korzystać z wirtualnych krzynek pocztowych
nie posiadających kont na uniksie.
rrw
--
signature intentionally left blank
-------------- następna część ---------
#!/usr/bin/perl
#
# checkpasswd algorithm in perl for vpopuser
#
# $Id: vchkpwd,v 1.3 1999/07/03 15:38:16 reptile Exp $
#
use vpopuser;
use MD5;
exit(1) if ($#ARGV != 1) || (! -x $ARGV[0]);
exit(1) unless open(INP,"<&3");
exit(1) unless read(INP,$string,1024);
close(INP);
($user,$pass,$tstamp) = split(/\0/,$string);
exit(1) unless $pwent = getvpwent($user);
($umd5,$ureal,$ulock,$uhome) = split(/:/,$pwent);
exit(1) if $ulock;
exit(1) if $umd5 =~ /^\*/;
$phash = MD5->hexhash($pass);
exit(1) if $umd5 ne $phash;
exit(1) unless chdir($uhome);
$( = $vgid;
$< = $vuid;
exit(1) unless exec(@ARGV);
-------------- następna część ---------
#
# $Id: vpopuser.pm,v 1.7 1999/07/03 18:49:51 reptile Exp $
#
package vpopuser;
use strict;
use DB_File;
BEGIN {
use Exporter ();
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
$VERSION = do { my @r = (q$Revision: 1.7 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
@ISA = qw(Exporter);
@EXPORT = qw(&getanswer &maildirmake &getvpwent &setvpwent &errexit $vhome $vuid $vgid);
@EXPORT_OK = qw($vpwdb %VPWDB);
}
use vars @EXPORT_OK;
use vars @EXPORT;
require '/etc/vpopuser/config';
dbmopen (%VPWDB,$vpwdb,0600);
sub maildirmake {
my $home = shift;
my $user = shift;
chdir("$home");
mkdir("$user",0700);
chdir("$user");
mkdir("cur",0700);
mkdir("new",0700);
mkdir("tmp",0700);
chown ($vuid,$vgid,".","cur","new","tmp");
}
sub getanswer {
my $prompt = shift;
my $hide = shift;
my $line;
system("stty -echo") if $hide;
print "$prompt: ";
$line = <STDIN>;
chop $line;
system("stty echo") if $hide;
print "\n" if $hide;
return($line);
}
sub getvpwent {
my $user = shift;
if (exists($VPWDB{$user})) {
return $VPWDB{$user};
} else {
return undef;
}
}
sub setvpwent {
my $user = shift;
my $entry = shift;
$VPWDB{$user} = $entry;
}
sub errexit {
my ($msg) = shift;
my ($code) = shift;
print STDERR "$msg\n";
exit ($code);
}
END {
dbmclose(%VPWDB);
}
Więcej informacji o liście dyskusyjnej pld-devel-pl