mirror of
https://github.com/imapsync/imapsync.git
synced 2024-11-17 08:12:48 +01:00
98 lines
3.4 KiB
Diff
98 lines
3.4 KiB
Diff
--- imapsync.orig Tue Jun 14 23:28:32 2005
|
|
+++ imapsync Wed Jun 15 14:04:14 2005
|
|
@@ -318,7 +318,7 @@
|
|
$user1, $user2, $password1, $password2, $passfile1, $passfile2,
|
|
@folder, $include, $exclude, $prefix2, $regextrans2, @regexmess,
|
|
$sep1, $sep2,
|
|
- $syncinternaldates, $syncacls,
|
|
+ $syncinternaldates, $syncacls, $syncuids,
|
|
$maxsize, $maxage,
|
|
$skipheader, @useheader,
|
|
$skipsize, $foldersizes, $buffersize,
|
|
@@ -410,6 +410,7 @@
|
|
$authmd5 = (defined($authmd5)) ? $authmd5 : 1;
|
|
|
|
$syncacls = (defined($syncacls)) ? $syncacls : 0;
|
|
+$syncuids = (defined($syncuids)) ? $syncuids : 0;
|
|
$foldersizes = (defined($foldersizes)) ? $foldersizes : 1;
|
|
|
|
@useheader = ("ALL") unless (@useheader);
|
|
@@ -661,7 +662,8 @@
|
|
# needed for setting flags
|
|
my $tohasuidplus = $to->has_capability("UIDPLUS");
|
|
|
|
-
|
|
+die("Need UIDPLUS on destination server to synchronize UIDs\n")
|
|
+ if ($syncuids && !$tohasuidplus);
|
|
|
|
print
|
|
"From folders : ", map("[$_] ",@f_folders),"\n",
|
|
@@ -788,7 +790,7 @@
|
|
print "Time sizes : ", timenext(), " s\n";
|
|
#my $f_flags = $from->flags(@f_msgs) ;
|
|
#print "Time flags : ", timenext(), " s\n";
|
|
- use Data::Dumper;
|
|
+ #use Data::Dumper;
|
|
#print Data::Dumper->Dump([$f_heads]);
|
|
#print Data::Dumper->Dump([$f_flags]);
|
|
|
|
@@ -821,6 +823,7 @@
|
|
|
|
#print map { $f_hash{$_}{'m'} . " "} @f_hash_keys_sorted_by_uid;
|
|
|
|
+ my $last_uid = 0;
|
|
MESS: foreach my $m_id (@f_hash_keys_sorted_by_uid) {
|
|
my $f_size = $f_hash{$m_id}{'s'};
|
|
my $f_msg = $f_hash{$m_id}{'m'};
|
|
@@ -835,6 +838,21 @@
|
|
print "+ NO msg #$f_msg [$m_id] in $t_fold\n";
|
|
# copy
|
|
print "+ Copying msg #$f_msg:$f_size to folder $t_fold\n";
|
|
+ while ($syncuids && !$dry && $last_uid < $f_msg - 1) {
|
|
+ my $new_id = $to->append_string($t_fold,
|
|
+ "From: imapsync\r\n".
|
|
+ "Subject: deleted message\r\n".
|
|
+ "\r\n".
|
|
+ "This message has been deleted.\r\n");
|
|
+ if ($new_id) {
|
|
+ warn "Inserted padding message #$new_id\n";
|
|
+ $to->delete_message($new_id);
|
|
+ $last_uid = $new_id;
|
|
+ } else {
|
|
+ warn "Failed to insert padding message\n";
|
|
+ last;
|
|
+ }
|
|
+ }
|
|
my $string = $from->message_string($f_msg);
|
|
foreach my $regexmess (@regexmess) {
|
|
$debug and print "eval \$string =~ $regexmess\n";
|
|
@@ -883,6 +901,11 @@
|
|
print "Copied msg id [$f_msg] to folder $t_fold msg id [$new_id]\n";
|
|
$mess_size_total_trans += $f_size;
|
|
$mess_trans += 1;
|
|
+ $last_uid = $new_id;
|
|
+ if ($syncuids && $last_uid != $f_msg) {
|
|
+ # not much we can do about this...
|
|
+ warn "Couldn't preserve message UID\n";
|
|
+ }
|
|
}
|
|
}
|
|
next MESS;
|
|
@@ -1002,6 +1025,7 @@
|
|
"delete!" => \$delete,
|
|
"syncinternaldates!" => \$syncinternaldates,
|
|
"syncacls!" => \$syncacls,
|
|
+ "syncuids!" => \$syncuids,
|
|
"maxsize=i" => \$maxsize,
|
|
"maxage=i" => \$maxage,
|
|
"buffersize=i" => \$buffersize,
|
|
@@ -1156,6 +1180,8 @@
|
|
--justconnect. Turned on by default.
|
|
--syncacls : Synchronizes acls.
|
|
--nosyncacls : Does not synchronize acls. This is the default.
|
|
+--syncuids : Synchronizes UIDs.
|
|
+--nosyncuids : Does not synchronize UIDs. This is the default.
|
|
--debug : debug mode.
|
|
--debugimap : imap debug mode.
|
|
--version : print sotfware version.
|