Synchronizace pošty pomocí mbsync a vlastní IMAP server na localhostu

By jackc |

V dobách dávných, kdy Firefox ještě nebyl Firefox ale Phoenix nebo Firebird, jsem začal používat Mozillu Thunderbird pro sběr pošty přes IMAP. V té době byly jak budoucí Firefox tak Thunderbird relativně jednoduché a lehkonohé programy. Od té doby (~15 let) ale prošly dlouhým vývojem a to se podepsalo i na té jednoduchosti. Na druhou stranu je vlastně malý zázrak, že ještě existují.

Před pár lety jsem ale začal hledat alternativu k Thunderbirdu. Stalo se to poté, co TB (opět) svévolně znovu stahoval a indexoval starou poštu a zablokoval tím uživatelské akce. Po vyzkoušení několika poštovních klientů jsem skončil u claws-mail. Je to trošku old school software a ani ten není bez chyb (absence IMAP NOTIFY/IDLE), ale je hodně konfigurovatelný a celkově nejvíce splňuje mé požadavky.

Kvůli rychlosti IMAPu jsem později mezi claws-mail a vlastní poštovní server přidal offlineimap, který pomocí IMAP protokolu synchronizoval poštu mezi lokálním Maildirem a serverem, a dále dovecot server běžící na localhostu, který se staral o spojení mezi poštovním klientem a lokálními daty. V poslední době jsem offlineimap vyměnil za mbsync, který je o něco rychlejší a hlavně výrazně méně náročnější na prostředky. Dovecot v tomto případě tedy dělá něco jako lokální cache pro poštovního klienta. Celý řetězec je potom:

IMAP server <--mbsync--> lokální maildir <--dovecot--> poštovní klient

Výhody tohoto řešení:

  • rychlé odezvy poštovního klienta
  • lokální záloha veškeré pošty v definovaném formátu (Maildir), která se dobře deduplikuje (borgbackup)

Nevýhody řešení:

  • konfigurace (= práce) navíc
  • o max minutu zpožděné doručení nové pošty
  • nějaké ty prostředky (vcelku nezajímavé - dovecot je nenáročný, stejně tak mbsync)

Použité balíky Debianu:

  • dovecot-core a dovecot-imapd 2.3.4.1-5
  • isync 1.3.0-2
  • claws-mail 3.17.3-2
Konfigurace dovecotu - /etc/dovecot/local.conf:
 
---CUT---
protocols = imap
listen = 127.0.0.1
mail_location = maildir:~/Mail
---CUT---
 
Konfigurace mbsync - ~/.mbsync/config:
 
---CUT---
Create Slave
SyncState *

IMAPAccount account
CertificateFile /etc/ssl/certs/ca-certificates.crt
SSLType IMAPS
Host <server>
User <uzivatel>
Pass <heslo>
#PipelineDepth 50
 
MaildirStore local
Inbox "~/Mail"
SubFolders Maildir++

IMAPStore remote
Account account

Channel channel-all
Master :remote:
Slave :local:
Pattern *
Expunge Both
---CUT---
 
Synchronizaci spouštím každou minutu skriptem v cronu. Samotný skript hlídá zapnutí synchronizace (stav měním ikonkou v menu xfce) a dostupnost IMAP serveru. Podle toho spouští: mbsync -c ~/.mbsync/config -q channel-all.

Comments