Migrate courier to dovecot

Dovecot-logoОт както имам собствен мейл сървър , винаги съм използвал courier за pop3 и  imap. В началото бях на qmail,после мигрирах на postfix.

С годините технологиите се променят, и нуждите на клиента също. Установих че, започнам да имам нужда от нещо по-добро.

  •  Всичко тръгна от това че , след като се логна в уебмейл-а (roundcubemail) чакам около 20 секунди да ми се заредят писмата. Общо в пощата си имам около 6000-7000 мейла , а в настройките на уеб мейла е направено да показва първите 50. Пробвах с разни опции за оптимизиране на roundcube-a но ефекта беше минимален.
  •  Второто което исках да направя е : спам-а да не бъде пращан в карантина и да не пристига до получателя си изобщо, а да идва в папка Спам.

Отне ми няколко дни да разбера че решението на тези 2 проблема е в мигрирането от courier към dovecot!

Самата миграция е елементарна –

apt-get install dovecot-common dovecot-imapd dovecot-pop3d dovecot-dev

Така се премахва стария courier и идва новия dovecot.

Следват настройките. Благодарение на Коко открих този линк в който е описано стъпка по стъпка как се конфигурира dovecot-a. Няма да изпадам в подробности , просто ще напиша главното как се прави – а именно проблема с лоад-а и спам-а в папките.

Първо за оптимизацията, след като успях да го настроя установих че при логване , писмата излизат за около 2-3 секунди (а не 20-30 като преди) . Това е с фабричните настройки – просто невероятно!

Сега идва и момента за спам-а. Инсталирал съм си 2 пакета : sieve-connect и pysieved , но до колкото разбрах в новите версии на dovecot (1.2 и нагоре) си идва пачнат със sieve. Общо взето sieve е далаверката която е необходима за нашата работа със спам-а 😉


Започваме със следното:


mkdir /var/sieve
cd /var/sieve
wget http://www200.pair.com/mecham/spam/global.sieve.txt
mv global.sieve.txt global.sieve
chown -R vmail:vmail /var/sieve
chmod -R 0700 /var/sieve
touch /var/log/dovecot-deliver.log
chown vmail:vmail /var/log/dovecot-deliver.log
cd /etc/logrotate.d/
wget http://www200.pair.com/mecham/spam/deliver.logrotate.txt
mv deliver.logrotate.txt dovecot-deliver

След това добавяме следното в /etc/postfix/master.cf

dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} -e

и рестартираме postfix-a
Следва и най-важното , да кажем на dovecot-a да ползва global.sieve
Отваряме /etc/dovecot/dovecot.conf и добавяме следното:

protocol lda {
postmaster_address = postmaster@example.com
mail_plugins = quota sieve
quota_full_tempfail = yes
rejection_reason = Your message to < %t> was automatically rejected:%n%r%n%nThe Subject of your message was: %s
auth_socket_path = /var/run/dovecot/auth-master
sieve_global_path = /var/sieve/global.sieve
log_path = /var/log/dovecot-deliver.log
info_log_path = /var/log/dovecot-deliver.log
}

Хубаво е да се добавят и следните редове :

autocreate = Trash
autocreate2 = Spam
autocreate3 = Archive
autocreate4 = Drafts
autocreate5 = Sent
autosubscribe = Trash
autosubscribe2 = Spam
autosubscribe3 = Archive
autosubscribe4 = Drafts
autosubscribe5 = Sent

в plugin { секцията
рестартираме dovecot-a и тестваме 🙂
Резултата може да се види в лог файла : /var/log/dovecot-deliver.log , като при успешна инсталация виждаме следното:
2013-03-29 12:59:06 deliver(niki@example.net): Info: sieve: msgid=<20130329115858.A515210816E01620D571.A38F0E@MARTIN-PC>: stored mail into mailbox ‘Spam’

Друга хубава благинка е плугина : managesieve който позволява потребителя сам да конфигурира филтрите си, да добавя vacation съобщение , да филтрира дадени думи и тн. За да работи той е необходимо добавянето му в protocols и следните редове в dovecot.conf

protocol managesieve {
# Specify an alternative address:port the daemon must listen on
# (default: *:2000)
listen = localhost:2000
managesieve_logout_format = bytes ( in=%i : out=%o )
}

Следва и конфигурирането му в roundcubemail. Резултат от успешната инсталация можем да видим също и в dovecot-deliver.log-a
2013-03-29 12:35:03 deliver(root-test@example.bg): Info: sieve: msgid=<20130329103456.967DBD3E@example.bg>: sent vacation response to

Общо взето това е.. вече имам работещ dovecot сървър с много нововъведения!