NAME

Maildir::Quota - Perl extension for Maildir++ soft quotas handling


SYNOPSIS

  use Maildir::Quota;
  sub Maildir::Quota::error {  # error handler
    warn("$_[0]\n");
  }
 
  my $q = new Maildir::Quota;
  my $bytes = $q->bytes;
  my $max_bytes = $q->max_bytes;
  my $files = $q->files;
  my $max_files = $q->max_files;
  if ($q->test($nbytes, $nfiles)) {
    if ( add the files in the maildir ) {
       $q->add($nbytes, $nfiles);
    }
  }
  if (... message removed ...) {
    $q->add(-$message_size, -1);
  }
  unless ($q->test) {
     die "overquota";
  }
  undef $q;  # flush quota description


DESCRIPTION

Maildir::Quota is a perl module to edit and check Maildir++ soft quota cache.


CONSTRUCTOR

new ( DIRECTORY [, QUOTA DESCRIPTION ] )
Create a Maildir::Quota. It recieve the directory where the Maildir is and a optional quota description.

Quota description are a coma (,) separated list of quota specifications. A quota specification consists of a number, followed by a letter specifying the type of quota. Currently the following quota types are used: S - maximum size of messages in the maildir; C - message count in the maildir.

If quota description is not given, the value is taken from the quota cache file.


METHODS

test ( [ NBYTES [, NFILES ]] )
Return true if the Maildir can store NFILES messages of a total NBYTES bytes. If NBYTES or NFILES are not defined, check is the Maildir is overquota.

add ( [ NBYTES [, NFILES ]] )
Adds NFILES messages of a total NBYTES bytes to the soft quota cache. If you plan remove messages, use negatives values to NFILE and NBYTES.

bytes
Returns the cached number of bytes or undef if an error occurs

max_bytes
Returns the number of bytes allowed in the Maildir or undef is this value is not defined

files
Returns the cached number of files or undef if an error occurs

max_files
Returns the number of files allowed in the Maildir or undef is this value is not defined


ERROR HANDLING

If a Maildir::Quota::error subroutine is defined, all errors are send to it. Maildir not found, invalid or empty quota description are not errors.


LIMITATIONS

Quota file is opened in read-write mode. If cache recalculation occurs, a new file is created. So, all add() operations must be done with Mailbox owner UID/GID.

Trash folder is not counted within the quota.

Library just manage the size cache, it does not supperss nor add message by itself.


AUTHOR

(Laurent Wacrenier) lwa@teaser.fr


SEE ALSO

mdq(3), maildirquota(7)