From: Timo Sirainen Date: Mon, 4 Sep 2017 15:32:15 +0000 (+0300) Subject: pop3-migration: Add pop3_migration_ignore_extra_uidls=yes setting X-Git-Tag: 2.3.0.rc1~1117 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=65e19f9777ebcc705d8adc33a84735c31baee66a;p=thirdparty%2Fdovecot%2Fcore.git pop3-migration: Add pop3_migration_ignore_extra_uidls=yes setting --- diff --git a/src/plugins/pop3-migration/pop3-migration-plugin.c b/src/plugins/pop3-migration/pop3-migration-plugin.c index b68b472284..fe18cc1a58 100644 --- a/src/plugins/pop3-migration/pop3-migration-plugin.c +++ b/src/plugins/pop3-migration/pop3-migration-plugin.c @@ -56,6 +56,7 @@ struct pop3_migration_mail_storage { bool all_mailboxes:1; bool pop3_all_hdr_sha1_set:1; bool ignore_missing_uidls:1; + bool ignore_extra_uidls:1; bool skip_size_check:1; bool skip_uidl_cache:1; }; @@ -758,6 +759,7 @@ pop3_uidl_assign_by_hdr_hash(struct mailbox *box, struct mailbox *pop3_box) } if (missing_uids_count > 0 && !mstorage->all_mailboxes) { string_t *str = t_str_new(128); + bool all_imap_mails_found = FALSE; str_printfa(str, "pop3_migration: %u POP3 messages have no " "matching IMAP messages (first POP3 msg %u UIDL %s)", @@ -766,10 +768,16 @@ pop3_uidl_assign_by_hdr_hash(struct mailbox *box, struct mailbox *pop3_box) if (imap_count + missing_uids_count == pop3_count) { str_append(str, " - all IMAP messages were found " "(POP3 contains more than IMAP INBOX - you may want to set pop3_migration_all_mailboxes=yes)"); + all_imap_mails_found = TRUE; } - if (!mstorage->ignore_missing_uidls) { - i_error("%s - set pop3_migration_ignore_missing_uidls=yes to continue anyway", - str_c(str)); + if (all_imap_mails_found && mstorage->ignore_extra_uidls) { + /* pop3 had more mails than imap. maybe it was just + that a new mail was just delivered. */ + } else if (!mstorage->ignore_missing_uidls) { + str_append(str, " - set pop3_migration_ignore_missing_uidls=yes"); + if (all_imap_mails_found) + str_append(str, " or pop3_migration_ignore_extra_uidls=yes"); + i_error("%s to continue anyway", str_c(str)); return -1; } i_warning("%s", str_c(str)); @@ -1010,6 +1018,9 @@ static void pop3_migration_mail_storage_created(struct mail_storage *storage) mstorage->ignore_missing_uidls = mail_user_plugin_getenv_bool(storage->user, "pop3_migration_ignore_missing_uidls"); + mstorage->ignore_extra_uidls = + mail_user_plugin_getenv_bool(storage->user, + "pop3_migration_ignore_extra_uidls"); mstorage->skip_size_check = mail_user_plugin_getenv_bool(storage->user, "pop3_migration_skip_size_check");