imapsync performs stateful synchronization between two IMAP4rev1 servers. Such synchronization is made possible by the QRESYNC extension from [RFC7162]; for convenience reasons servers must also support LIST-EXTENDED [RFC5258], LIST-STATUS [RFC5819] and UIDPLUS [RFC4315]. Furthermore, while imapsync can work with servers lacking support for LITERAL+ [RFC2088] and MULTIAPPEND [RFC3502], these extensions greatly improve performance by reducing the number of required round trips hence are recommended. Consult the manual for more information. imapsync is Copyright© 2015 Guilhem Moulin ⟨guilhem@fripost.org⟩, and licensed for use under the GNU General Public License version 3 or later. See ‘COPYING’ for specific terms and distribution information. ####################################################################### IMAP traffic is mostly text (beside message bodies perhaps) hence compresses pretty well: enabling compression can save a great amount of network resources. However establishing a SSL/TLS connection (type=imaps, or type=imap and STARTTLS=YES) yields a small overhead due to the SSL/TLS handshake. On the other hand if SSH access is allowed on the remote server, one can tunnel the IMAP traffic through SSH and use OpenSSH's ControlPersist feature to save most of the cryptographic overhead (at the expense of a local 'ssh' process and a remote 'imap' process). Moreover if the IMAP user is a valid UNIX user it is possible to use pre-authentication on the remote server as well, which saves the extra round trip caused by the AUTHENTICATE command. For instance the following configuration snippet saves bandwidth and brings a significant speed gain compared to type=imaps. local: $XDG_CONFIG_HOME/imapsync: [remote] type = tunnel command = /usr/bin/ssh user@imap.example.net local: ~/.ssh/config: Host imap.example.net IdentityFile ~/.ssh/id-imapsync IdentitiesOnly yes ControlPath /run/shm/%u@%n ControlMaster auto ControlPersist 10m StrictHostKeyChecking yes ServerAliveCountMax 3 ServerAliveInterval 10s RequestTTY no Compression yes remote: ~user/.ssh/authorized_keys: command="/usr/lib/dovecot/imap",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-... id-imapsync