IMAP migreren naar IMAP, deel 2

In september ging een posting over het migreren van IMAP en afgelopen weekend was het zover. Dovecot 1.0.15 werd upgrade naar 1.2.9 waardoor oa een bug in de delivery agent werd geholpen en bewust werd van namespace prefixen. Maar ook werd Sieve-ondersteuning verbetert en redelijk veel performance verbeteringen.

Een van de belangrijkste reden van de migratie was niet om Dovecot te upgraden, maar om mailbox-layout op een dermate manier te wijzigen dat Dovecot zoveel mogelijk out-of-the-box gebruikt kon worden. De INBOX-prefix moest dus verdwijnen en na veel testen met oa Evolution, Roundcube, Thunderbird en Microsoft Outlook 2007 kwam de volgende layout eruit rollen.

Trash
Drafts
INBOX.Test
Junk
Sent
INBOX

Een van de keuzes was om dubbele algemene mappen aan te maken, maar gezien het feit hoe makkelijk vele clients de nieuwe layout oppakte zijn de algemene mappen op het hoogste niveau geplaatst. Elke client lijkt hier redelijk goed mee om te gaan. Alleen Evolution behoefte in sommige speciale gevallen een opschoning van de lokale cache, maar in veel gevallen is het niet eens nodig. De keuze gaf ook de mogelijkheid om Dovecot zo in te stellen dat de algemene mappen altijd beschikbaar zijn en door de gebruiker eigenlijk niet weg te gooien zijn. De mappen worden bij het eerst volgende bericht weer automatisch aangemaakt en beschikbaar gesteld.

protocol lda {
mail_plugins = autocreate ...
}
plugin {
autocreate = Trash
autocreate2 = Junk
autocreate3 = Drafts
autosubscribe = Trash
autosubscribe2 = Junk
autosubscribe3 = Drafts
}

Door de vaste locatie en het automatisch beschikbaar stellen van mappen is het vooraf wegfilteren van Spam wel een optie geworden. En hoewel dit natuurlijk wel een heikel punt is, want de gebruiker heeft ineens geen invloed meer of spam opzij wordt gezet. Dit is misschien het belangrijkste punt wat van XS4ALL te leren is en dat is om niet te veel keuzes te geven, maar een veilige oplossing aan te bieden.

protocol lda {
mail_plugins = sieve ...
}
plugin {
sieve_before = /etc/dovecot/sieve/discard-junk.sieve
}

Door tegen de Sieve-plugin te vertellen dat hij voor elke lokale delivery van een mailbericht het discard-junk.sieve script moet afwerken. Nu zijn er vele voorbeelden in omloop met wildcard en dat men de wildcards telt, maar waarom niet gewoon de beslissing in bijvoorbeeld Amavisd-new laten maken en zoeken naar de juiste header.

require ["fileinto"];
# rule:[spamfilter]
if anyof (header :contains "X-Spam-Flag" "YES")
{
fileinto "Junk";
}

Wat nu eigenlijk nog overblijft is om het Sieve-script met de hand te compileren.

$ sudo sievec /etc/dovecot/sieve/discard-junk.sieve

Er zijn nog veel meer wijzigingen geweest, maar die komen binnenkort vanzelf aan de orde.