NAME

Net::Sieve - Implementation of managesieve protocol to manage sieve scripts

SYNOPSIS

use Net::Sieve;

      my $SieveServer = Net::Sieve->new (
        server => 'imap.server.org',
        user => 'user',
        password => 'pass' ,
        );

      foreach my $script ( $ServerSieve->list() ) {
        print $script->{name}." ".$script->{status}."\n";
      };

      my $name_script = 'test';

      # read
      print $SieveServer->get($name_script);

      # write
      my $test_script='
      require "fileinto";
      ## Place all these in the "Test" folder
      if header :contains "Subject" "[Test]" {
              fileinto "Test";
      }
      ';

      # other
      $SieveServer->put($name_script,$new_script);
      $SieveServer->activate($name_script);
      $SieveServer->deactivate();
      $SieveServer->delete($name_script);

DESCRIPTION

Net::Sieve is a package for clients for the "MANAGESIEVE" protocol, which is an Internet Draft protocol for manipulation of "Sieve" scripts in a repository. More simply, Net::Sieve lets you control your mail-filtering rule files on a mail server.

Net::Sieve supports the use of "TLS" via the "STARTTLS" command. Net::Sieve open the connexion to the sieve server, methods allow to list all scripts, activate or deactivate scripts, read, delete or put scripts.

Most of code come from the great Phil Pennock sieve-connect command-line tool <http://people.spodhuis.org/phil.pennock/software/>.

See Net::Sieve::Script to manipulate Sieve scripts content.

CONSTRUCTOR
new

     Usage : 
      my $SieveServer = Net::Sieve->new ( 
        server => 'imap.server.org', 
        user => 'user', 
        password => 'pass' );
     Returns :
      Net::Sieve object which contain current open socket 
     Argument :
      server      : default localhost
      port        : default sieve(2000) 
      user        : default logname or $ENV{USERNAME} or $ENV{LOGNAME}
      password    :
      net_domain  :
      sslkeyfile  : default search in /etc/ssl/certs
      sslcertfile : default search in /etc/ssl/certs
      autmech     : to force a particular authentication mechanism
      authzid     : request authorisation to act as the specified id
      realm       : pass realm information to the authentication mechanism
      ssl_verif   : default 0x01, set 0x00 to don't verify and allow self-signed cerificate
      debug       : default 0, set 1 to have transmission logs
      dumptlsinfo : dump tls information

METHODS
sock

     Usage    : my $sock = $ServerSieve->sock();
     Return   : open socket
     Argument : nothing
     Purpose  : access to socket

capabilities

     Usage    : my $script_capa = $ServerSieve->capabilities();
     Return   : string with white space separator
     Argument : nothing
     Purpose  : retrieve sieve script capabilities

list

     Usage    : 
      foreach my $script ( $ServerSieve->list() ) {
            print $script->{name}." ".$script->{status}."\n";
      };
     Return   : array of hash with names and status scripts for current user 
     Argument : nothing
     Purpose  : list available scripts on server

put

     Usage    : $ServerSieve->put($name,$script);
     Return   : 1 on success, 0 on missing name or script
     Argument : name, script 
     Purpose  : put script on server

get

     Usage    : my $script = $ServerSieve->get($name);
     Return   : 0 on missing name, string with script on success
     Argument : name 
     Purpose  : put script on server

activate

     Usage    : $ServerSieve->activate($name);
     Return   : 0 on pb, 1 on success
     Argument : name 
     Purpose  : set named script active and switch other scripts to unactive

deactivate

     Usage    : $ServerSieve->deactivate();
     Return   : activate response
     Argument : nothing
     Purpose  : stop sieve processing, deactivate all scripts

delete

     Usage    : $ServerSieve->delete($name);
     Return   : 0 on missing name, 1 on success
     Argument : name 
     Purpose  : delete script on server

Minor public methods
ssend

Usage : $self->ssend("GETSCRIPT \"$name\"");

sget

     Usage: 
        $self->sget();
        unless (/^OK((?:\s.*)?)$/) {
            warn "SETACTIVE($name) failed: $_\n";
            return 0;
        }

sfinish
send LOGOUT

closedie
send LOGOUT and die

closedie_NOmsg
closedie whitout message

die_NOmsg
die

BUGS

I don't try plain text or client certificate authentication.

You can debug TLS connexion with openssl : openssl s_client -connect your.server.org:2000 -tls1 -CApath /etc/apache/ssl.crt/somecrt.crt -starttls smtp

See response in "Verify return code:"

SUPPORT

Please report any bugs or feature requests to "bug-net-sieve at rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-Sieve>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

AUTHOR

Yves Agostini - Univ Metz <agostini@univ-metz.fr>

<http://www.crium.univ-metz.fr>

COPYRIGHT

Copyright 2008-2011 Yves Agostini - <agostini@univ-metz.fr>

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

sieve-connect source code is under a BSD-style license and re-licensed for Net::Sieve with permission of the author.

SEE ALSO

Net::Sieve::Script