122 lines
2.0 KiB
Perl
122 lines
2.0 KiB
Perl
# $Id: mailboxes.pm,v 1.1 2007/02/19 22:33:18 kiwi Exp $
|
|
#
|
|
package mailboxes;
|
|
|
|
use Mail::RFC822::Address qw(valid);
|
|
use POSIX;
|
|
use strict;
|
|
|
|
sub new
|
|
{
|
|
my $class = shift;
|
|
|
|
my $this = {};
|
|
bless $this, $class;
|
|
print STDERR "Starting mailboxes\n";
|
|
return $this;
|
|
}
|
|
|
|
sub init
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
sub search
|
|
{
|
|
my $this = shift;
|
|
my @match_entries = ();
|
|
my $todo;
|
|
my($row, $mailaddr, $quotedmail, $res, $sth, $path, $searchmail);
|
|
my($base, $scope, $deref, $sizeLim, $timeLim, $filter, $attrOnly, @attrs ) = @_;
|
|
|
|
# Checking about what looking for
|
|
# mail= foo -> postfix / pll VDA delivery
|
|
# uid= foo -> pop3/imap that supports @ -> %
|
|
$todo = $filter;
|
|
$todo =~ s/^\((.*)=.*\)$/\1/g;
|
|
|
|
#print STDERR "==> Want : $todo \n";
|
|
|
|
$mailaddr = $filter;
|
|
|
|
if ($todo =~ "uid") {
|
|
# replacing % -> @
|
|
print STDERR "We get a request for UID\n";
|
|
$mailaddr =~ s/\%/\@/g;
|
|
}
|
|
|
|
print STDERR "Looking for : $mailaddr \n";
|
|
|
|
if (not ($mailaddr =~ s/^\(uid=(.*)\)$/\1/g)) {
|
|
if(not ($mailaddr =~ s/^\(mail=(.*)\)$/\1/g)) {
|
|
return(0, ()); # Filtre non authorise.
|
|
}
|
|
}
|
|
|
|
if (not valid("<".$mailaddr.">")) {
|
|
return(0, ()); # Mail non valide RFC822
|
|
}
|
|
|
|
# We get data, then format output... :)
|
|
print STDERR "We get some results...\n";
|
|
my $entry =
|
|
"dn : uid=$mailaddr,ou=mailboxes,dc=kazar,dc=net\n\t".
|
|
"objectClass : top\n\t".
|
|
"objectClass : kazarPerson\n\t";
|
|
|
|
$entry .= "uid : $mailaddr\n\t";
|
|
$entry .= "cn : Nom Prenom\n\t";
|
|
$entry .= "description : Sample description\n\t";
|
|
$entry .= "uidNumber : 10\n\t";
|
|
$entry .= "gidNumber : 10\n\t";
|
|
$entry .= "userPassword : Password\n\t";
|
|
$entry .= "homeDirectory : /home/test\n\t";
|
|
$entry .= "mailQuota : 50\n\t";
|
|
$entry .= "CouriermailQuota : 50S\n\t";
|
|
|
|
print STDERR "Sending -> $entry\n";
|
|
|
|
push @match_entries, $entry;
|
|
|
|
return(0, @match_entries);
|
|
|
|
}
|
|
|
|
sub compare
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
sub modify
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
sub add
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
sub modrdn
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
sub delete
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
sub config
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
sub bind
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
1;
|
|
|