Net::Sieve - Implementation of managesieve protocol to manage sieve scripts
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);
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.
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
Usage : my $sock = $ServerSieve->sock(); Return : open socket Argument : nothing Purpose : access to socket
Usage : my $script_capa = $ServerSieve->capabilities(); Return : string with white space separator Argument : nothing Purpose : retrieve sieve script capabilities
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
Usage : $ServerSieve->put($name,$script); Return : 1 on success, 0 on missing name or script Argument : name, script Purpose : put script on server
Usage : my $script = $ServerSieve->get($name); Return : 0 on missing name, string with script on success Argument : name Purpose : put script on server
Usage : $ServerSieve->activate($name); Return : 0 on pb, 1 on success Argument : name Purpose : set named script active and switch other scripts to unactive
Usage : $ServerSieve->deactivate(); Return : activate response Argument : nothing Purpose : stop sieve processing, deactivate all scripts
Usage : $ServerSieve->delete($name); Return : 0 on missing name, 1 on success Argument : name Purpose : delete script on server
Usage : $self->ssend("GETSCRIPT \"$name\"");
Usage: $self->sget(); unless (/^OK((?:\s.*)?)$/) { warn "SETACTIVE($name) failed: $_\n"; return 0; }
send LOGOUT
send LOGOUT and die
closedie whitout message
die
I don't try plain text or client certificate authentification.
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:
Verify return code:
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.
Yves Agostini - Univ Metz <agostini@univ-metz.fr>
http://www.crium.univ-metz.fr
Copyright 2008 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.
Net::Sieve::Script
To install Net::Sieve, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::Sieve
CPAN shell
perl -MCPAN -e shell install Net::Sieve
For more information on module installation, please visit the detailed CPAN module installation guide.