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