BLOGTIMES
2017/08/23

Dovecot の検索バックエンドに Solr を使う

  solr  dovecot 
このエントリーをはてなブックマークに追加

Solr - Dovecot の検索バックエンドに Solr を使う

Dovecot は全文検索のバックエンドとして Solr を使うことができる*1ので、設定してみました。

Solr の準備

Solr がインストールされていなければ Solr をインストールしておきます。
Dovecot のサーバからアクセス可能であれば、負荷分散のために別サーバにデプロイすることも可能です。

インストールが終わったら以下のコマンドで core を作ります。

/opt/solr/bin/solr create -c dovecot

スキーマは schema.xml を使います。
ほぼデフォルトのままですが、日本語に対応するために一部を text_cjk に変更してあります。

最近の Solr は Managed Schema ですがが、schema.xml からの変換は自動でやってくれるので、conf ディレクトリにコピーするだけで大丈夫です。

systemctl stop solr cp /path/to/schema.xml /var/solr/data/dovecot/conf/ chown --reference=/var/solr/data/dovecot/conf/managed-schema /var/solr/data/dovecot/conf/schema.xml chmod --reference=/var/solr/data/dovecot/conf/managed-schema /var/solr/data/dovecot/conf/schema.xml rm /var/solr/data/dovecot/conf/managed-schema systemctl start solr

これで Solr 側の準備は完了です。

Dovecot の設定

Solr に続いて Dovecot の設定を変更していきます。

変更する必要があるのは 10-mail.conf90-plugin.conf の2つ。
インストール方法によっては fts_solr のモジュールがなかったり、decode2text.sh の位置が違っていたりする可能性があるので、本当にファイルがちゃんとあるか確認を忘れないようにしてください。
設定の変更が終わったら、設定ファイルを再読込させるためにデーモンを再起動しておきます。

--- 10-mail.conf.org 2017-04-07 03:50:44.000000000 +0900 +++ 10-mail.conf 2017-08-20 22:52:33.300250439 +0900 @@ -212,7 +205,7 @@ # Space separated list of plugins to load for all services. Plugins specific to # IMAP, LDA, etc. are added to this list in their own .conf files. -#mail_plugins = +mail_plugins = $mail_plugins fts fts_solr
--- 90-plugin.conf.org 2016-12-04 02:13:21.000000000 +0900 +++ 90-plugin.conf 2017-08-20 23:39:01.849271898 +0900 @@ -8,4 +8,17 @@ plugin { #setting_name = value + fts = solr + fts_solr = url=http://localhost:8983/solr/dovecot/ + fts_autoindex = yes + + fts_decoder = decode2text +} + +service decode2text { + executable = script /usr/libexec/dovecot/decode2text.sh + user = dovecot + unix_listener decode2text { + mode = 0666 + } }

インデックスを作成する

設定しただけではインデックスが空なので、以下のコマンドでインデックスを作成することができます。

doveadm index -u user@example.jp INBOX #INBOX だけのインデックスを作成 doveadm index -u user@example.jp \* #全てのメールボックスのインデックスを作成

問題がなければ Solr にインデックスが作成されているはずです。

ちなみに僕のサーバにはメールが 140 万件ほどあるので、最初の画像のようなインデックス結果になりました。
インデックスの容量は 3.4 GB くらいになっていますが、実用的な速度でメールの検索ができます。


トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9551
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン