Categories
Internet, Unix en security

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.

Categories
Internet, Unix en security

Sieve heeft ook zijn eigen poort

Sieve is een gestandaardiseerde filtertaal voor mailservers en clients. Oa Dovecot heeft een implementatie van hiervan waardoor mail op de server al kan worden gefilterd ipv op de client. Om eerlijk zijn ook de enige juiste plek IMHO, maar dat zijn details. Een andere bekende implementatie is binnen de Cyrus mailsuite en waar het precies fout is gegaan laat ik even in het midden. Heel lang is er een discussie geweest of Sieve wel de oplossing was, omdat er vele wegen waren of juist ontbraken om de regels op de mailserver te krijgen.

Gelukkig is er na lang gesteggel een redelijk veilige oplossing gekomen, maar iemand had poort 2000 uitgekozen om deze dienst op te laten draaien. Helaas was deze poort door IANA al vergeven aan Cisco SCCP om hun eigen XMMP/VoIP-oplossing op te laten luisteren. Uiteindelijk is poort 4190 uit IANA komen rollen als gereserveerde poort voor het Sieve-protocol. De migratie naar deze poort is nu begonnen en zal met Debian 6.0 waarheid worden voor veel Debian-gebruikers cq installaties. Bug 560094 heeft meer informatie.