My IMAPサーバを再構築 (Fetchmail+Dovecot+Pigeonhole(Sieve))
2008年頃に構築したMy IMAPサーバ(以下の記事で書いていました)を再構築したのでメモ。
- My IMAPサーバ構築 - wadahiroの日記
- 続・My IMAPサーバ構築 - wadahiroの日記
- 続続・My IMAPサーバ構築 - wadahiroの日記
- 続続続・My IMAPサーバ構築 - wadahiroの日記
- 続続続続・My IMAPサーバ構築 - wadahiroの日記
この時はcoLinuxを使ってWindows上でLinuxを走らせ、DovecotでIMAPサーバを構築した。今回、使用していたWindowsPCをESXiサーバに入れ替えてしまったため、ESXi上に再構築することにした。
今回の移行方針
OS
以前はFedoraを何となく入れていたが、普段からなれているCentOS 6.2に変更。ディスク容量&メモリ使用量節約のため不要なソフトウェアは極力入れず、サービスも最低限起動することを基本方針とする。
IMAPサーバ
今までと同じでDovecotを使用する。ただし、メール振り分けはProcmailを使わず、Sieveを使うことにした。Seiveとは、電子メールフィルタリングのためのプログラミング言語で、Dovecotもサポートしている。
例えば、Sieveでは振り分けルールを以下のように書くことができる。非常にシンプルなので*1、Procmailのレシピより読み易い。
if address :contains ["From", "To"] "@sourceforge.net" { fileinto "ML; }
今回Sieveにした理由は以下の2点。
- ThunderbirdのAdd-Onがあるので、わざわざサーバにログインして振り分けルールを書き換える必要がない(これが一番うれしい)
- 日本語サブジェクトでの振り分けが簡単。 Procmailだと、nkfで一度デコードする必要があったが、SieveはUnicodeも扱えるので面倒な記述は不要になる。
なお、Dovecot2系からはSieveはPigeonholeでサポートされているので、これを使う。
構築手順
OSインストール
CentOSはCentOS-6.2-x86_64-minimal.isoを使って、最小構成でインストールする。
なお、VMのメモリは512MBに設定。これは設定完了後に下げます*2。
不要なサービスの停止
私の環境では以下のサービスを停止にした。今のところ問題は起きていないけど自己責任で。
Fetchmailの設定
- $HOME/.fetchmailrcの作成
以前作成したのとほぼ同じ。変わったのは、Procmailに渡していたところ。ここを、Dovecotに渡すようにする。"/usr/libexec/dovecot/deliver"とする。
また、設定に失敗してメールが消えないように、とりあえず"keep"を設定しておこう。
# directory for log #set logfile "/home/hogehoge/fetchmail.log" # destination for fetchmail error set postmaster root set no bouncemail defaults protocol pop3 keep no mimedecode poll pop3.example.org protocol pop3 user foo password bar mda "/usr/libexec/dovecot/deliver"
- Fetchmailの起動スクリプトの作成
以前作成したのと全く同じ。サービス化しちゃってますが、別にcronで動作させてもOK。
#!/bin/sh # # chkconfig: 345 99 20 # # description: Fetchmail auto start script # Source function library. . /etc/rc.d/init.d/functions # See how we were called. case "$1" in start) for user in `ls /home/` do if [ -f /home/$user/.fetchmailrc ]; then echo "fetchmail for $user starting..." su $user -c "/usr/bin/fetchmail --daemon 60" fi done ;; stop) # Stop daemons. for user in `ls /home/` do if [ -f /home/$user/.fetchmailrc ]; then echo "fetchmail for $user stoping..." su $user -c "/usr/bin/fetchmail --quit" fi done ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
Dovecotの設定
- MailDirの設定を行う。
-
- /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
- IMAPサーバの設定を行う。
protocols = imap
-
- /etc/dovecot/conf.d/10-master.conf
service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes }
- Sieveを有効にする。
- /etc/dovecot/conf.d/15-lda.conf
protocol lda { # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve }
-
- /etc/dovecot/conf.d/20-managesieve.conf
protocols = $protocols sieve
-
- /etc/dovecot/conf.d/90-sieve.conf
plugin { sieve = ~/.dovecot.sieve sieve_global_path = /var/lib/dovecot/sieve/default.sieve sieve_dir = ~/sieve sieve_global_dir = /var/lib/dovecot/sieve/
Thunderbirdから接続してみる。
IMAPで繋がることを確認。
SieveのAdd-Onをインストール
ThunderbirdのAdd-OnをThunderbirdにインストールする。
Sieveによる振り分け設定
インストールするとThunderbirdのアカウント設定に「Sieve Settings」が登場する。そこから、「Yes, manage Sieve scripts for this account」を選択して保存する。
有効にしたら、ツール>Sieve Filter Settingからフィルタの設定を開く。フィルタは複数作成できるが、有効にできるのは1つだけなので注意。画面右の「Edit」をクリックしてフィルタの編集画面を開く。
Seieveのソース編集画面が開く。ここで振り分けルールを直接記述しても良いが、「Source」をクリックするとGUIでの設定に切り替わる。
画面右の「Action」「Tests」「Operators」からドラッグ&ドロップで各コマンドを配置し、詳細設定を行うことができる。