[+] WARNING: Please copy files with '-p' option to keep file owner and permission.[+] Note: We backup /etc/dovecot.conf, but we don't use it for upgrading at all. it's useful if you want to downgrade from Dovecot-2.0 to 1.x.

*) Setup a virtual machine (VMware/Xen/VirtualBox/KVM/etc), install RHEL/CentOS 6 on it. Then deploy iRedMail. iRedMail will install Dovecot-2.0 for you. Its config files are all placed under /etc/dovecot/. Main config file is /etc/dovecot/dovecot.conf.

[+] Copy /etc/dovecot/dovecot.conf to your iRedMail server which running Dovecot-1.x. assume it's /root/dovecot2.conf.[+] Now open /root/dovecot2.conf, make sure you have the same values for below parameter as Dovecot-1.x.

[+] If you're running Debian, just setup a Debian virtual machine to get sample Dovecot-2 config file. The same to other Linux/BSD distributions.

Important notes before you start

The proposed dovecot2.conf is not good, its mising crucial information - sieve protocol and service. Without it the filters in roundcube don't work. You need this also in dovecot2.conf because iRedMail doesn't read and use /etc/dovecot/conf.d/*. I'm posting what you must also add, please post recommended tuning options for this:

# Space separated list of plugins to load (none known to be useful so far). # Do NOT try to load IMAP plugins here. #mail_plugins =

# MANAGESIEVE logout format string: # %i - total number of bytes read from client # %o - total number of bytes sent to client #managesieve_logout_format = bytes=%i/%o

# To fool ManageSieve clients that are focused on CMU's timesieved you can # specify the IMPLEMENTATION capability that Dovecot reports to clients. # For example: 'Cyrus timsieved v2.2.13' managesieve_implementation_string = dovecot

# Explicitly specify the SIEVE and NOTIFY capability reported by the server # before login. If left unassigned these will be reported dynamically # according to what the Sieve interpreter supports by default (after login # this may differ depending on the user). #managesieve_sieve_capability = #managesieve_notify_capability =

# The maximum number of compile errors that are returned to the client upon # script upload or script verification. #managesieve_max_compile_errors = 5

# Number of connections to handle before starting a new process. Typically # the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0 # is faster. <doc/wiki/LoginProcess.txt> #service_count = 1

# Number of processes to always keep waiting for more connections. #process_min_avail = 0

# If you set service_count=0, you probably need to grow this. #vsz_limit = 64M}

I just figured it out and you're right. I was on roundcube 0.7.2 which expects sieve on 2000 port but the new dovecot pushes it by default on 4190... Those values I added are defaults in dovecot and they don't need to be explicitly noted in dovecot.conf, only this part was fixing it: inet_listener sieve_deprecated { port = 2000}. I upgraded later to latest roundcube and now I removed those entries in dovecot and now it works because new roundcube has managesieve plugin configured to connect to port 4190... Sry, my bad