IMAP migreren naar IMAP, deel 1

Vroeger was Courier redelijk de standaard voor diensten zoals POP3 en IMAP, maar er waren te veel beperkinge en de developers te moeilijk in de omgang. En totdat Dovecot aan de releasecandidates begon van 1.0 serie was er ook niet echt een alternatief. Een zeer goed bruikbaar alternatief welke nog hard in ontwikkeling is met mailboxen in verschillende namespaces zoals public en private, maar ook fatsoenlijk Sieve-ondersteuning.

Met de komst van Roundcube 0.3 als webmailclient zijn er nieuwe mogelijkheden beschikbaar gekomen welke nu langzaam benut kunnen worden. Ondersteuning voor Sieve is daar eentje van en met de belofte van de developers om ook ondersteuning in Evolution te bouwen komt serverside mailfitering voor oa de Linux-wereld en de normale gebruikers redelijk dichtbij. Geen geknutsel meer met .procmailrc of .maildrop files uploaden en hopen dat het werkt.

Helaas kwam er direct een probleem aan het licht bij het testen. Een probleem in de private namespace van de mailbox en eentje die eigenlijk voorkomt uit de migratie van Courier naar Dovecot. Om het gedrag van Courier te imiteren beschikt Dovecot over de mogelijkheid om standaard een prefix voor subfolders te zetten. Een actie om zo gebruikers transparante kunnen migreren, maar welke wel zorgt dat alle subfolders onderdeel zijn van de Inbox.

Om cache fouten in mailclients uit te sluiten is het gebruiken van een simpele client aan te raden. Simpeler dan de Perl-code hieronder bestaat bijna niet, maar doet precies wat het moet doen.

#!/usr/bin/env perl
use Net::IMAP::Client;
my $imap = Net::IMAP::Client->new(
server => 'mailhost',
user => 'username',
pass => 'password',
ssl => 1,
port => 993
) or die "Could not connect to IMAP server";
$imap->login or die('Login failed: '.$imap->last_error);
foreach ($imap->folders) { print $_."\n"; }

Bij de eerste run komt de output zoals die nu wordt aangeboden aan de mailclient.

INBOX.Trash
INBOX.Drafts
INBOX.Test
INBOX.Junk
INBOX.Sent
INBOX

Bij het uitschakelen van alleen de prefix-optie in Dovecot komt gelijk naar voren wat er gaat veranderen.

Trash
Drafts
Test
Junk
Sent
INBOX

Bij het controleren met verschillende mailclients komt direct naar voren dat hier wat slims gedaan moet gaan worden. Want de mailclients zien subfolders die ineens niet meer onderdeel zijn van de Inbox. Technisch gezien zijn ze nu ook geen onderdeel van de Inbox. Voor de standaard folders zoals Trash, Drafts, Junk en Sent zal dit niet echt een probleem gaan vormen, maar wel voor bv de folder Test.