--- a/cyrus-migrate.pl Wed Jun 17 08:11:32 2009 +0200
+++ b/cyrus-migrate.pl Mon Aug 03 17:06:17 2009 +0200
@@ -51,6 +51,13 @@
use Getopt::Long;
use File::Path;
+END {
+ my $acl_file = 'cyrus_mbox_acls.txt';
+ -f $acl_file && unlink $acl_file;
+}
+
+
+
my $ME = basename $0;
my $dsn = "DBI:mysql:database=mail;host=pu.schlittermann.de";
@@ -140,7 +147,7 @@
system("$cmd --syncacls --justfolders $logfile");
warn "$ME: migration of mailbox $mailbox failed, see $logfile\n" if ($? != 0);
} else {
- system("$cmd --delete2 $logfile");
+ system("$cmd --expunge2 --delete2 $logfile");
warn "$ME: migration of mailbox $mailbox failed, see $logfile\n" if ($? != 0);
}
}
--- a/mailboxes.all Wed Jun 17 08:11:32 2009 +0200
+++ b/mailboxes.all Mon Aug 03 17:06:17 2009 +0200
@@ -16,7 +16,6 @@
b.braeckle@ajh-drucktechnik.de
beate.becher@sandsteine.de
beate.gross@ugvo.de
-beate.schettler@sandsteine.de
bestellung@ruether-obst.de
bestellung@vincenz-richter.de
bgroeblinghoff@ruether-obst.de
@@ -68,7 +67,6 @@
heiko@schlittermann.de
heiko@unterwegs.schlittermann.de
h.klemt@ajh-drucktechnik.de
-holger.wehner@sandsteine.de
i.kenner@graphkonzept.de
ilona.grundmann@sandsteine.de
ines.lauke@reppe.de
@@ -144,7 +142,6 @@
m.kluttig@reholz.de
mobst@schlittermann.de
musch@onkologische-praxisgemeinschaft.de
-pathe@mhis.org
patricia.taeubrich@bergi-plast.de
paul@schlittermann.de
peter.hohmuth@sandsteine.de
@@ -213,3 +210,9 @@
wieczorek@schlittermann.de
winfried.erwes@bergi-plast.de
woodtec1@reholz.de
+info@ahseifert-freital.de
+miegel@schlittermann.de
+sven.baier.cc@bergi-plast.de
+ronny.epperlein.cc@bergi-plast.de
+rene.richter@bergi-plast.de
+david.schreiber@bergi-plast.de
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sieve-migrate.pl Mon Aug 03 17:06:17 2009 +0200
@@ -0,0 +1,112 @@
+#! /usr/bin/perl
+
+my $usage = << '#';
+Usage: $ME [options]
+ --dry dry run ($opt_dry)
+ --listscripts listscripts on source server ($opt_list)
+#
+
+use strict;
+use warnings;
+use feature ':5.10';
+use File::Basename;
+use Net::Sieve;
+use Smart::Comments;
+use Getopt::Long;
+
+my $ME = basename $0;
+
+my $user = 'root';
+my $password = 'x';
+
+my $opt_dry = 1;
+my $opt_listscripts = 0;
+
+GetOptions(
+ 'dry' => \$opt_dry,
+ 'listscripts' => \$opt_listscripts,
+) or die eval "\"$usage\"";
+
+
+my @users = <>;
+foreach my $auser (@users) {
+ chomp($auser);
+
+ ### migrating sieve rules for user: $auser
+ my $pop = connect_as($auser, 'localhost');
+ my $pu = connect_as($auser, 'localhost:2001'); # forwarded port via ssh
+
+ copy_scripts( $pu, $pop );
+
+ # TODO: do not seem to work properly
+ #$pop->sfinish();
+ #$pu->sfinish();
+
+}
+
+
+## ---------------------------------------------------------------------
+
+sub clean_scripts {
+ my $sieve = shift;
+
+ foreach my $script ($sieve->list()) {
+ ### deleting script: $script->{name}
+ $sieve->delete( $script->{name} ) if not $opt_dry;
+ }
+}
+
+
+sub copy_scripts {
+ my $src = shift;
+ my $dst = shift;
+
+ my $copied = 0;
+
+ foreach my $script ($src->list()) {
+ my $content = $src->get( $script->{name} );
+ my $is_active = $script->{status};
+
+ next if length($content) == 0;
+
+ $dst->put( $script->{name}, $content) or
+ die "$ME: error on migrating script...\n";
+
+ if ($is_active) {
+ $dst->activate( $script->{name} ) or
+ die "$ME: error on activating script...\n";
+ }
+
+ $copied++;
+ }
+
+ say "migrated $copied scriptes";
+}
+
+
+sub connect_as {
+ my ($authuser, $server) = @_;
+
+ my $sieve = Net::Sieve->new( server => (split(':', $server))[0],
+ user => $user,
+ port => (split(':', $server))[1] || 2000,
+ authzid => $authuser,
+ password => $password,
+ ) or die "$ME: cannot connect to server $server\n";
+ return $sieve;
+}
+
+
+sub has_scripts {
+ my $sieve = shift;
+
+ if ($sieve->list()) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+
+# vim: sw=4 sts=4 aw