Hi!
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration. The tool allows you to upload either a full dovecot.conf or selected ancillary configuration files from a 2.3 setup, and will attempt to convert them accordingly.
You can find the tool here: https://dovecot.org/upgrader/
We do not store any of the configurations processed by the tool, nor do we track who uses it. It's offered as-is, without any warranty or guarantee.
If you run into any issues, unexpected results, or have feedback about the tool, please let us know — it’s very much appreciated.
Please note that the tool can make mistakes, so we strongly recommend carefully reviewing and testing the output before using it in production.
There are currently no plans to release this tool as open source.
Regards, Aki Tuomi Open-Xchange oy
Hi Aki,
I tried it with our configuration and it failed and asked to contact the list ;)
Here's my configuration:
2.3.21.1 (d492236fa0): /etc/dovecot/dovecot.conf
Pigeonhole version 0.5.21.1 (49005e73)
OS: Linux 6.8.0-88-generic x86_64 Ubuntu 20.04.6 LTS
Hostname: 1307e47933b7
auth_cache_negative_ttl = 2 mins auth_cache_size = 10 M auth_cache_ttl = 5 mins auth_master_user_separator = * auth_mechanisms = plain login auth_username_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@#" default_client_limit = 3500 default_process_limit = 512 disable_plaintext_auth = no doveadm_port = 26 first_valid_uid = 90 listen = * lmtp_rcpt_check_quota = yes log_path = /dev/stderr login_greeting = Dovecot FRA.pvt ready mail_access_groups = dovecot mail_attribute_dict = file:%h/dovecot-metadata mail_gid = dovecot mail_location = mdbox:~/mdbox mail_log_prefix = "%s(%u %p): " mail_max_userip_connections = 200 mail_plugins = acl quota notify replication mail_log mail_lua notify push_notification push_notification_lua mail_uid = dovecot managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave vnd.dovecot.debug mbox_min_index_size = 1000 B mbox_write_locks = fcntl mdbox_rotate_size = 50 M namespace inboxes { inbox = yes location = mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox Templates { auto = subscribe } mailbox Trash { auto = subscribe special_use = \Trash } prefix = INBOX/ separator = / subscriptions = no } namespace subs { hidden = yes list = no location = prefix = separator = / } namespace users { location = mdbox:%%h/mdbox:INDEXPVT=~/shared/%%u prefix = user/%%n/ separator = / subscriptions = no type = shared } passdb { args = /etc/dovecot/dovecot-dict-master-auth.conf driver = dict master = yes } passdb { args = /etc/dovecot/dovecot-dict-auth.conf driver = dict } plugin { acl = vfile acl_shared_dict = file:/var/dovecot/imap/%d/shared-mailboxes.db mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid size push_lua_url = http://push-proxy/ push_notification_driver = lua:file=/etc/dovecot/dovecot-push.lua quota = dict:User quota::ns=INBOX/:file:%h/dovecot-quota quota_rule = *:storage=200GB sieve = ~/sieve/dovecot.sieve sieve_after = /var/dovecot/sieve/after.d/ sieve_before = /var/dovecot/sieve/before.d/ sieve_dir = ~/sieve sieve_extensions = +editheader +vacation-seconds sieve_redirect_envelope_from = orig_recipient sieve_user_log = ~/.sieve.log sieve_vacation_min_period = 1s } postmaster_address = admins@egroupware.org protocols = imap pop3 lmtp sieve service auth-worker { user = $default_internal_user } service auth { drop_priv_before_exec = no inet_listener { port = 113 } } service doveadm { inet_listener { port = 26 } vsz_limit = 640 M } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } process_min_avail = 5 service_count = 1 vsz_limit = 64 M } service imap { executable = imap process_limit = 2048 vsz_limit = 640 M } service lmtp { inet_listener lmtp { port = 24 } unix_listener lmtp { mode = 0666 } vsz_limit = 512 M } service managesieve-login { inet_listener sieve { port = 4190 } inet_listener sieve_deprecated { port = 2000 } } service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } } service pop3 { executable = pop3 } service postlogin { executable = script-login -d rawlog -b -t } ssl_cert = </etc/certs/mail.egroupware.org.pem ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl_dh = # hidden, use -P to show it ssl_key = # hidden, use -P to show it submission_host = fra-node-pool-internal.k8s.farm.egroupware.org:25 userdb { args = /etc/dovecot/dovecot-dict-auth.conf driver = dict } verbose_proctitle = yes protocol lda { mail_plugins = acl quota notify replication mail_log mail_lua notify push_notification push_notification_lua acl sieve quota } protocol imap { imap_metadata = yes mail_max_userip_connections = 200 mail_plugins = acl quota notify replication mail_log mail_lua notify push_notification push_notification_lua acl imap_acl quota imap_quota } protocol lmtp { mail_max_lock_timeout = 25 secs mail_plugins = acl quota notify replication mail_log mail_lua notify push_notification push_notification_lua acl sieve quota notify push_notification }
Am 28.01.26 um 09:07 schrieb Aki Tuomi via dovecot:
Hi!
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration. The tool allows you to upload either a full dovecot.conf or selected ancillary configuration files from a 2.3 setup, and will attempt to convert them accordingly.
You can find the tool here: https://dovecot.org/upgrader/
We do not store any of the configurations processed by the tool, nor do we track who uses it. It's offered as-is, without any warranty or guarantee.
If you run into any issues, unexpected results, or have feedback about the tool, please let us know — it’s very much appreciated.
Please note that the tool can make mistakes, so we strongly recommend carefully reviewing and testing the output before using it in production.
There are currently no plans to release this tool as open source.
Regards, Aki Tuomi Open-Xchange oy
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
-- Ralf Becker EGroupware GmbH [www.egroupware.org] Handelsregister HRB Kaiserslautern 3587 Geschäftsführer Birgit und Ralf Becker Leibnizstr. 17, 67663 Kaiserslautern, Germany Telefon +49 631 31657-0
On 28/01/2026 10:56 EET Ralf Becker via dovecot <dovecot@dovecot.org> wrote:
Hi Aki,
I tried it with our configuration and it failed and asked to contact the list ;)
Here's my configuration:
It actually said to contact dovecot-ce@dovecot.org, but this works too. Hopefully your config works now?
Aki
Thanks Aki,
what do I make out of the warnings:
Warnings during conversion:
- <memory>:87: no converter for 'plugin/@1/push_lua_url'
- <memory>:89: manual conversion needed for quota 'dict'
- <memory>:89: converter did not consume 'plugin/@1/quota'
- pruned default: managesieve_notify_capability = 'mailto'
Here's the concerning part from the config:
push_lua_url = http://push-proxy/ push_notification_driver = lua:file=/etc/dovecot/dovecot-push.lua quota = dict:User quota::ns=INBOX/:file:%h/dovecot-quota quota_rule = *:storage=200GB
Ralf
Am 28.01.26 um 10:11 schrieb Aki Tuomi via dovecot:
On 28/01/2026 10:56 EET Ralf Becker via dovecot <dovecot@dovecot.org> wrote:
Hi Aki,
I tried it with our configuration and it failed and asked to contact the list ;)
Here's my configuration:
It actually said to contact dovecot-ce@dovecot.org, but this works too. Hopefully your config works now?
Aki
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
-- Ralf Becker EGroupware GmbH [www.egroupware.org] Handelsregister HRB Kaiserslautern 3587 Geschäftsführer Birgit und Ralf Becker Leibnizstr. 17, 67663 Kaiserslautern, Germany Telefon +49 631 31657-0
You need to figure those out yourself. The tool can't unfortunately do everything.
For example, there is no quota dict in 2.4, so you need to do something about that yourself, also push_lua_url needs to be handled in some other way in 2.4.
Aki
On 28/01/2026 11:49 EET Ralf Becker via dovecot <dovecot@dovecot.org> wrote:
Thanks Aki,
what do I make out of the warnings:
Warnings during conversion:
- <memory>:87: no converter for 'plugin/@1/push_lua_url'
- <memory>:89: manual conversion needed for quota 'dict'
- <memory>:89: converter did not consume 'plugin/@1/quota'
- pruned default: managesieve_notify_capability = 'mailto'
Here's the concerning part from the config:
push_lua_url = http://push-proxy/ push_notification_driver = lua:file=/etc/dovecot/dovecot-push.lua quota = dict:User quota::ns=INBOX/:file:%h/dovecot-quota quota_rule = *:storage=200GB
Ralf
Am 28.01.26 um 10:11 schrieb Aki Tuomi via dovecot:
On 28/01/2026 10:56 EET Ralf Becker via dovecot <dovecot@dovecot.org> wrote:
Hi Aki,
I tried it with our configuration and it failed and asked to contact the list ;)
Here's my configuration:
It actually said to contact dovecot-ce@dovecot.org, but this works too. Hopefully your config works now?
Aki
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
-- Ralf Becker EGroupware GmbH [www.egroupware.org] Handelsregister HRB Kaiserslautern 3587 Geschäftsführer Birgit und Ralf Becker Leibnizstr. 17, 67663 Kaiserslautern, Germany Telefon +49 631 31657-0
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
Thanks again Aki, for the clearifications :)
Ralf
Am 28.01.26 um 11:03 schrieb Aki Tuomi via dovecot:
You need to figure those out yourself. The tool can't unfortunately do everything.
For example, there is no quota dict in 2.4, so you need to do something about that yourself, also push_lua_url needs to be handled in some other way in 2.4.
Aki
On 28/01/2026 11:49 EET Ralf Becker via dovecot <dovecot@dovecot.org> wrote:
Thanks Aki,
what do I make out of the warnings:
Warnings during conversion:
- <memory>:87: no converter for 'plugin/@1/push_lua_url'
- <memory>:89: manual conversion needed for quota 'dict'
- <memory>:89: converter did not consume 'plugin/@1/quota'
- pruned default: managesieve_notify_capability = 'mailto'
Here's the concerning part from the config:
push_lua_url = http://push-proxy/ push_notification_driver = lua:file=/etc/dovecot/dovecot-push.lua quota = dict:User quota::ns=INBOX/:file:%h/dovecot-quota quota_rule = *:storage=200GB
Ralf
Am 28.01.26 um 10:11 schrieb Aki Tuomi via dovecot:
On 28/01/2026 10:56 EET Ralf Becker via dovecot <dovecot@dovecot.org> wrote:
Hi Aki,
I tried it with our configuration and it failed and asked to contact the list ;)
Here's my configuration:
It actually said to contact dovecot-ce@dovecot.org, but this works too. Hopefully your config works now?
Aki
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
-- Ralf Becker EGroupware GmbH [www.egroupware.org] Handelsregister HRB Kaiserslautern 3587 Geschäftsführer Birgit und Ralf Becker Leibnizstr. 17, 67663 Kaiserslautern, Germany Telefon +49 631 31657-0
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
-- Ralf Becker EGroupware GmbH [www.egroupware.org] Handelsregister HRB Kaiserslautern 3587 Geschäftsführer Birgit und Ralf Becker Leibnizstr. 17, 67663 Kaiserslautern, Germany Telefon +49 631 31657-0
28.01.26, 12:02 +0100, Ralf Becker via dovecot:
Thanks again Aki, for the clearifications :)
Ralf
Am 28.01.26 um 11:03 schrieb Aki Tuomi via dovecot:
You need to figure those out yourself. The tool can't unfortunately do everything.
For example, there is no quota dict in 2.4, so you need to do something about that yourself, also push_lua_url needs to be handled in some other way in 2.4.
Ralf, when you have figured out a "something" which can replace the quota dict, would you mind sharing how to migrate to that here?
-- Regards mks
On 28/01/2026 14:15 EET Markus Schönhaber via dovecot <dovecot@dovecot.org> wrote:
28.01.26, 12:02 +0100, Ralf Becker via dovecot:
Thanks again Aki, for the clearifications :)
Ralf
Am 28.01.26 um 11:03 schrieb Aki Tuomi via dovecot:
You need to figure those out yourself. The tool can't unfortunately do everything.
For example, there is no quota dict in 2.4, so you need to do something about that yourself, also push_lua_url needs to be handled in some other way in 2.4.
Ralf, when you have figured out a "something" which can replace the quota dict, would you mind sharing how to migrate to that here?
-- Regards mks
I guess I could've also mentioned that the replacement is using count quota and quota-clone.
Aki
Le 28/01/2026 à 09:07, Aki Tuomi via dovecot a écrit :
Hi!
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration. The tool allows you to upload either a full dovecot.conf or selected ancillary configuration files from a 2.3 setup, and will attempt to convert them accordingly.
You can find the tool here: https://dovecot.org/upgrader/
We do not store any of the configurations processed by the tool, nor do we track who uses it. It's offered as-is, without any warranty or guarantee.
If you run into any issues, unexpected results, or have feedback about the tool, please let us know — it’s very much appreciated.
Please note that the tool can make mistakes, so we strongly recommend carefully reviewing and testing the output before using it in production.
There are currently no plans to release this tool as open source.
Regards, Aki Tuomi Open-Xchange oy
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
Hello Aki.
Great effort from open-xchange, much appreciated!
Let's hope this makes migrations easier and reduces the amount of pain expressed in this mailing list ;)
Julien Nadal via dovecot <dovecot@dovecot.org> wrote:
Let's hope this makes migrations easier and reduces the amount of pain expressed in this mailing list ;)
I performed the migration, and it wasn't too painful. The changes could have been better documented at the time, but I was able to find what I needed via Web searches and this mailing list.
My only suggestion is that if there is to be a migration assistance tool, it would be useful to be able to run it from the shell prompt on the configuration files stored locally.
Hello Aki.
Great effort from open-xchange, much appreciated!
Let's hope this makes migrations easier and reduces the amount of pain expressed in this mailing list 😉
Le 28/01/2026 à 09:07, Aki Tuomi via dovecot a écrit :
Hi!
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration. The tool allows you to upload either a full dovecot.conf or selected ancillary configuration files from a 2.3 setup, and will attempt to convert them accordingly.
You can find the tool here: https://dovecot.org/upgrader/
We do not store any of the configurations processed by the tool, nor do we track who uses it. It's offered as-is, without any warranty or guarantee.
If you run into any issues, unexpected results, or have feedback about the tool, please let us know — it’s very much appreciated.
Please note that the tool can make mistakes, so we strongly recommend carefully reviewing and testing the output before using it in production.
There are currently no plans to release this tool as open source.
Regards, Aki Tuomi Open-Xchange oy
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
On 1/28/26 9:39 AM, Julien via dovecot wrote:
Hello Aki.
Great effort from open-xchange, much appreciated!
Let's hope this makes migrations easier and reduces the amount of pain expressed in this mailing list 😉
Le 28/01/2026 à 09:07, Aki Tuomi via dovecot a écrit :
Hi!
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration. The tool allows you to upload either a full dovecot.conf or selected ancillary configuration files from a 2.3 setup, and will attempt to convert them accordingly.
You can find the tool here: https://dovecot.org/upgrader/
We do not store any of the configurations processed by the tool, nor do we track who uses it. It's offered as-is, without any warranty or guarantee.
If you run into any issues, unexpected results, or have feedback about the tool, please let us know — it’s very much appreciated.
Please note that the tool can make mistakes, so we strongly recommend carefully reviewing and testing the output before using it in production.
There are currently no plans to release this tool as open source.
Regards, Aki Tuomi Open-Xchange oy
Great!! I was waiting for this. Thank YOU!! --john
Hello,
Le 28/01/2026 à 09:07, Aki Tuomi via dovecot a écrit :
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration.
Thanks a lot for this tool as the migration from 2.3 to 2.4 is not always easy. At the moment the 2.4 CE documentation lacks some How-Tos and working examples from my point of view.
While playing with the upgrade tool I can see that some config parts are not updated even if it seems that there is a new syntax in 2.4.2 CE doc. Maybe it's not mandatory to follow the new syntax rules but I suppose it would be better to follow the new rules while translating. Example follows.
In my 2.3 config I can see :
protocol lmtp { mail_plugins = "sieve" } protocol imap { mail_plugins = "imap_sieve" }
The updater tool copy these blocks without any change. However the suggested syntax in 2.4.2 CE doc looks like:
|protocol lmtp { mail_plugins { sieve = yes } }||protocol imap { mail_plugins { imap_sieve = yes } }|
-- Best regards, Artur
Hello, Le 28/01/2026 `a 09:07, Aki Tuomi via dovecot a ecrit :
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration.
Thanks a lot for this tool as the migration from 2.3 to 2.4 is not always easy. At the moment the 2.4 CE documentation lacks some How-Tos and working examples from my point of view.
While playing with the upgrade tool I can see that some config parts are not updated even if it seems that there is a new syntax in 2.4.2 CE doc. Maybe it's not mandatory to follow the new syntax rules but I suppose it would be better to follow the new rules while translating. Example follows.
In my 2.3 config I can see :
protocol lmtp { mail_plugins = "sieve" } protocol imap { mail_plugins = "imap_sieve" }
The updater tool copy these blocks without any change. However the suggested syntax in 2.4.2 CE doc looks like:
protocol lmtp { mail_plugins { sieve = yes } } protocol imap { mail_plugins { imap_sieve = yes } }
-- Best regards, Artur
Perfect.
Great tool worked for me.
Cheers
Andrew
On 1/28/2026 8:07 AM, Aki Tuomi via dovecot wrote:
Hi!
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration. The tool allows you to upload either a full dovecot.conf or selected ancillary configuration files from a 2.3 setup, and will attempt to convert them accordingly.
You can find the tool here: https://dovecot.org/upgrader/
We do not store any of the configurations processed by the tool, nor do we track who uses it. It's offered as-is, without any warranty or guarantee.
If you run into any issues, unexpected results, or have feedback about the tool, please let us know — it’s very much appreciated.
Please note that the tool can make mistakes, so we strongly recommend carefully reviewing and testing the output before using it in production.
There are currently no plans to release this tool as open source.
Regards, Aki Tuomi Open-Xchange oy
dovecot mailing list --dovecot@dovecot.org To unsubscribe send an email todovecot-leave@dovecot.org
WARNING: This email originated from outside of Birkbeck. Do not click links or open attachments unless you recognise the sender. Under testing so any commentssg@dcs.bbk.ac.uk
Perfect.
Great tool worked for me.
Cheers
Andrew
On 1/28/2026 8:07 AM, Aki Tuomi via dovecot wrote:
Hi!
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration. The tool allows you to upload either a full dovecot.conf or selected ancillary configuration files from a 2.3 setup, and will attempt to convert them accordingly.
You can find the tool here: [1]https://dovecot.org/upgrader/
We do not store any of the configurations processed by the tool, nor do we track who uses it. It's offered as-is, without any warranty or guarantee.
If you run into any issues, unexpected results, or have feedback about the tool, please let us know -- it's very much appreciated.
Please note that the tool can make mistakes, so we strongly recommend carefully reviewing and testing the output before using it in production.
There are currently no plans to release this tool as open source.
Regards, Aki Tuomi Open-Xchange oy
dovecot mailing list -- [2]dovecot@dovecot.org To unsubscribe send an email to [3]dovecot-leave@dovecot.org
WARNING: This email originated from outside of Birkbeck. Do not click links or open attachments unless you recognise the sender. Under testing so any comments [4]sg@dcs.bbk.ac.uk
References
Visible links
- https://dovecot.org/upgrader/
- mailto:dovecot@dovecot.org
- mailto:dovecot-leave@dovecot.org
- mailto:sg@dcs.bbk.ac.uk
Hello,
The tool converts sieve scripts to:
mailbox Junk { special_use = \Junk
sieve_script script-1 { causes = COPY driver = file path = /etc/dovecot/sieve/learn-spam.sieve type = before } }
However, 'sieve_script_causes' does not exist. It should be 'sieve_script_cause' without the trailing 's'. The right syntax is:
mailbox Junk { special_use = \Junk
sieve_script script-1 { cause = COPY driver = file path = /etc/dovecot/sieve/learn-spam.sieve type = before } }
Le 28/01/2026 à 09:07, Aki Tuomi via dovecot a écrit :
Hi!
To make migrating from Dovecot 2.3 to 2.4 a bit easier, we are now providing a tool that helps upgrade your existing configuration. The tool allows you to upload either a full dovecot.conf or selected ancillary configuration files from a 2.3 setup, and will attempt to convert them accordingly.
You can find the tool here: https://dovecot.org/upgrader/
We do not store any of the configurations processed by the tool, nor do we track who uses it. It's offered as-is, without any warranty or guarantee.
If you run into any issues, unexpected results, or have feedback about the tool, please let us know — it’s very much appreciated.
Please note that the tool can make mistakes, so we strongly recommend carefully reviewing and testing the output before using it in production.
There are currently no plans to release this tool as open source.
Regards, Aki Tuomi Open-Xchange oy
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
-- Best regards, Artur
participants (9)
-
Aki Tuomi
-
Andrew Watkins
-
Artur
-
Jason J.G. White
-
John Hill
-
Julien
-
Julien Nadal
-
Markus Schönhaber
-
Ralf Becker