メール自動取り込みの設定
予告した通り、メタルギアソリッド4にはまりこんで遊びまくって、やっとクリアしました。(永遠の17歳が大活躍してましたw)
さて、さすがにそろそろ、メール環境を復旧させたかったので、今日はその設定をしてみます。
とはいっても、以前、Fedora6のサーバーに設定したことと同じことをしてやれば良いだけなんですけどね。というわけで、細かい話は以前書いた下記のエントリを参照。
- fetchmail: 外部のメールサーバーからのメールの受信 - 玉虫色に染まれ!
- procmail用の.forward設定の源流を探る - 玉虫色に染まれ!
- procmail: メールを振り分けて配送する - 玉虫色に染まれ!
- Dovecot: IMAPサーバー を導入 - 玉虫色に染まれ!
- crontab: 定期的にプログラムを動かす - 玉虫色に染まれ!
今日は、その時からの差分を中心にまとめます。
バックアップしておいたメールデータを復旧
バックアップしておいた /home/(アカウント名)/Maildir/ のディレクトリを、まるごと、新しいサーバーの同じ場所にコピーします。単純にバックアップをとっていると、dovecotのキャッシュファイルなどが沢山居るかと思いますが、気にせずコピりました。
確かに、Dovecotのバージョンが変わっている場合には、変な動きをする可能性があります。一般にはバージョンが古くなる方向にコピーする場合は特に要注意です。まぁ、今回の場合は何れも1.0ベースの物のようなので、多分問題無いだろうとタカを括ってみます。ダメだったときはバックアップもありますし。
Dovecot を動かす
というわけで、まずはDovecotが動くか試してみましょう。
とはいえ、CentOS 5.1をインストール時にサーバー向けパッケージもガンガンいれたので、インストールは済んでいます。
$ rpm -q dovecot dovecot-1.0-1.2.rc15.el5
ただ、デフォルトで起動するようにはなっていないので、以前設定したのと同様、dovecot.conf の mail_location だけ追記したうえで、サーバーが自動起動するように設定します。
# vi /etc/dovecot.conf (mail_locationの行を追記する) # /sbin/service dovecot start Starting Dovecot Imap: [ OK ] # /sbin/chkconfig --list dovecot dovecot 0:off 1:off 2:off 3:off 4:off 5:off 6:off # /sbin/chkconfig dovecot on # /sbin/chkconfig --list dovecot dovecot 0:off 1:off 2:on 3:on 4:on 5:on 6:off
あとは、IMAPクライアントで接続してみて、きちんと以前のメールが読めることを確認すれば完了です。ここでひとつ注意する事は、IMAPクライアントのキャッシュ機能ですね。たとえサーバーに接続できなくても、IMAPのクライアントはキャッシュを持っているので、一度見たメールだったら読めてしまいます。接続前にキャッシュを削除しておくか、別のソフトや、別のアカウントからの接続で試してみるのが確実です。
fetchmail / procmail の設定
まずは、fetchmail と procmail がインストールされているかどうか確認です。
$ which fetchmail /usr/bin/fetchmail $ which procmail /usr/bin/procmail
fetchmail の設定ファイルである ~/.fetchmailrc 、 procmailの設定ファイルである ~/.procmailrc 、MDAの設定ファイルである ~/.forward を、旧サーバーからそのままコピーしてきます。
これだけ枯れた技術だったらフォーマットが違うなんて事もないでしょ。たぶん。
念のため、fetchmailrc の flush を keep に変えたうえで(uidlは消さないほうが無難)、fetchmail を起動し、きちんとメールが取得できることと、受信したメールがIMAPで読めていることを確認します。
fetchmailを起動するとメールを何通受信したかがコンソールに出力されるので、その数だけIMAPで新着が確認できればOKです。
って、あれ? fetchmailはメールを受信してるのに、procmailに渡ってない?
……(調査)……
ふむ。どうやら、fetchmailから転送依頼を受けたsendmailが片っ端からメールを蹴り落している模様。ちゃんと調べたほうが良いのかもしれないけど、面倒なので、とりあえず今は、fetchmailからprocmailに直接処理を渡すように、~/.fetchmailrc を書き換え。
(前半省略) # 全アカウントに共通の設定 defaults protocol APOP # APOPで接続する uidl # POP3で client-side UIDL を使用する #flush # 元サーバーのメールを削除する keep mda "/usr/bin/procmail" # 受信したメールはprocmailに直接渡す (後半省略)
これで、きちんとMaildirに振り分けられるようになったので、fetchmailrcのkeepを消してflushに戻して完了。
っていうか、しばらく放置してたせいで数百通メールがたまってるorz (まぁ、ほとんどがSPAMなんですけどね)
fetchmail を cron 起動
あとは、以前設定していたのと同様に、一定時間ごとに fetchmail が起動するよう crontab を設定して完了です。これですっかり元通り。