平衡点
2015/05/10
_ offlineimap から mbsync に移行 + Dovecot での全文検索
(ひっそりと URL 修正)
最近 offlineimap での同期が遅いのが体感でわかる様になったので、mbsync へ移行。 また、dovecot で Apache Solr を使った全文検索を有効にしてみた。
mbsync でのメール同期
もはやそれなりに枯れたソフトウェアなのか、Web 上には日本語の情報が殆んど無い。 とはいえ man はかなり充実しているのであまり困らないだろう。
- IMAP サーバの情報を IMAPAccount に書く
- ローカルの Maildir の情報を MaildirStore に書く
- 同期の設定を Channel に書く
という塩梅. 例えば、imap.example.com のメールをローカルの ~/Maildir に同期したい場合には ~/.mbsyncrc に
IMAPAccount imapserver # 後で IMAPStore で使う名前 Host imap.example.com User Username Pass Password Port 993 UseIMAPS yes RequireSSL yes UseTLSv1.2 yes CertificateFile /etc/ssl/certs/ca-certificates.crt IMAPStore imapserver-remote # channel に使用する名前 Account imapserver # IMAPAccount に使った名前 MaildirStore local # channel に使用する名前 Path ~/Maildir/ Inbox ~/Maildir/INBOX Channel imap Master :imapserver-remote: Slave :local: Patterns * Create Both Expunge Both Sync all SyncState *
で良い。IMAP サーバ側のメールボックスに "/" が使われている場合には
MaildirStore local # channel に使用する名前 Path ~/Maildir/ Inbox ~/Maildir/INBOX Flatten .
としておくと、例えば
[imap サーバ側] [ローカル Maildir] work/gfd <-> work.gfd
の様に手元で変換される。
また、手元の Maildir に適当な suffix を付けておきたい場合には
Channel imap Master :imapserver-remote: Slave :local:INBOX.imap.
とでもしておくと
[imap サーバ側] [ローカル Maildir] work/gfd <-> INBOX.imap.work.gfd
となる。
同期するメールボックスの指定は Pattern に記述する。簡単な正規表現が使えるので、例えば
Pattern * !*Gmail* !*docomo* !*local*
としておくと、名前に Gmail, docomo, local を含まない Maildir が同期される。
試しに同期してみたが、offlineimap と比べて明かに速い。 それこそ初回同期の際には 25万通以上(6.5GB) のメールが、 offlineimap だと一日ぐらいかかったのが、数時間で終わった。 また、その後の同期も(回線速度によるだろうけれど) 1分弱。 私は2年以上前のメールを年度毎の Maildir に放り込んでいるので、一つの Maildir に数万通のメールがあったりするのだが、これも一瞬で同期が終わる(手元もサーバ上も変更が無いから、これが望ましい結果だと思うが)。
offlineimap は python で色々拡張ができるという利点があるかもしれないが、私の様に特に拡張を求めていない/python のコードを殆んど書かない人にとっては mbsync の方がありがたい。 また、offlineimap は docomo の imap サーバからメールが取得できない(いらんやろ、という指摘はわかる)が、mbync だとちゃんと取得できる。 gnutls-cli で imap 接続し fetch なんかを叩くとちゃんとメールが取得できるので、docomo の imap サーバは悪くないとは思う(多分).
Dovecot + Apache Solr で FullTextSearch
...そこまで頑張らなくても良いって指摘はさておき。
Apache Solr で dovecot-imapd の fts (full text search) を強化するために、ちょっとじたばた。
- Solr 自体は solr-jetty で起動し、localhost:8089 で待受
- Solr の scheme.xml は dovecot-solr で配布されている solr-scheme.xml に solr 本体の scheme.xml から text_cjk 部分を抜き出して追加
で動作させてみた。検索自体は早くなった気がするが、はてさて。
まとめ
mbsync に関しては特に言うことがない。もう offlineimap には戻れないなぁ...。 一方で dovecot-solr に関してはまだ未知数。良い感じなら、職場の dovecot にも入れてみようと思うが、はてさて。
_ tmux-2.0
unstable に tmux 2.0 が来たので、以前やった EAW 対処用の patch をあてて rebuild したり。 毎度 ad hoc にやっている訳だが、どうするのが良いのだろうかね。
今んところの鬼門は dialog 関連かなぁ。罫線関連のフォントはどんな文脈でも "width =1" であって欲しいのだが。