Hi,

Courier to dovecot migration script
https://dovecot.org/tools/courier-dovecot-migrate.pl
referenced at the https://wiki.dovecot.org/Migration/Courier
page has a couple of problems. One of them is that the script
could not process courierpop3dsizelist generated by courier-5.
File format has been changed a bit to mark UTF-8 messages
with an additional attribute.

Is it safe to ignore such flag or its value should
be stored somewhere for dovecot? Internally courier
assumes false value during migration from the previous format
version (v2 to v3).


--- courier-dovecot-migrate.pl.orig     2012-07-28 17:14:20.000000000 +0000
+++ courier-dovecot-migrate.pl  2020-05-08 09:54:53.249214022 +0000
@@ -170,8 +170,9 @@
     my $pop3_fname = "$dir/$courier_pop3_uidfile";
     open( $f, $pop3_fname ) || die $!;
     my $pop3_hdr = <$f>;
-    if ( $pop3_hdr =~ /^\/2 (\d+) (\d+)$/ ) {
+    if ( $pop3_hdr =~ /^\/[23] (\d+) (\d+)$/ ) {
         # /2 <next uid> <uidvalidity>
+        # /3 <next uid> <uidvalidity>
         $_ = <$f>;
     }
     elsif ( $pop3_hdr =~ /^\/1 (\d+)$/ ) {
@@ -193,9 +194,13 @@
         chomp $_;
        $line++;
         
-        my ( $full_fname, $fsize, $uid, $uidv );
+        my ( $full_fname, $fsize, $uid, $uidv, $_is_utf8 );
         
-        if ( /^([^ ]+) (\d+) (\d+):(\d+)$/ ) {
+        if ( /^([^ ]+) (\d+) (\d+):(\d+):(\d+)$/ ) {
+            # v3
+            ( $full_fname, $fsize, $uid, $uidv, $_is_utf8 ) = ( $1, $2, $3, 
$4, $5 );
+        }
+        elsif ( /^([^ ]+) (\d+) (\d+):(\d+)$/ ) {
             # v2
             ( $full_fname, $fsize, $uid, $uidv ) = ( $1, $2, $3, $4 );
         }

Reply via email to