IMAPサーバの構築メモです。 IMAPは、サーバでメールボックスを保持するため、同じメールボックスを複数台の クライアントで一元管理する場合に非常に便利です。また、サーバ側の ディスクが冗長化されていれば、大切なメールも安心です。
ここでは、いくつかのソフトを組み合わせ、外部POP3 のメールを自動的に 取得し、それをIMAPサーバ経由でメールクライアントに表示させることに より、プロバイダ等 IMAP 対応していないメールサーバを擬似的にIMAP で扱えるようにするローカルサーバを立ち上げてみます。
OS | Fedora CORE 2 Linux | postfix メールサーバと dovecot IMAPサーバと、fetchmailデーモンを起動 |
postfix | postfix-2.0.18-4 | メールサーバ。Fedora CORE 2 パッケージ |
dovecot | dovecot-0.99.10.5-0.FC2 | POP3/IMAPサーバ。Fedora CORE 2 パッケージ |
fetchmail | fetchmail-6.2.5-2 | POP3 クライアント。Fedora CORE 2 パッケージ |
Mozilla Thunderbird | Thunderbird Setup 1.0.exe | Windows 上で使っているメーラです。 |
という感じになります。 ということで、まず postfix のインストールからです。
postfix は、Fedora CORE の標準パッケージとして用意されているので これをインストールします。ついでに、sendmail がはいっている場合は 削除しておきます。
# yum install emacs
# rpm -e sendmail
インターネット上のメールサーバになるわけではないので、 これといった設定はありません。 メールボックスを作成するディレクトリを各ユーザのホームディレクトリに する設定と、postfix がメールを受け取るインターフェースの限定を行います。
# vi /etc/postfix/main.cf
inet_interfaces = localhost
home_mailbox = Maildir/
dovecot も Fedora 標準パッケージなのでこちらをインストールします。
# yum install dovecot
devecot に対して、IMAP を使うことと、扱うメールボックスディレクトリを指定する 設定をします。これで、postfix のメールボックスとクライアントが IMAP で結ばれます。
# vi /etc/dovecot.conf
protocols = imap
default_mail_env = maildir:‾/Maildir
ここまでで、サーバのメールボックスを IMAP で見ることができる ようになったはずなので、クライアントから接続試験してみます。
# /etc/init.d/postfix start
# /etc/init.d/dovecot start
これで postfix と dovecot サーバが起動します。とりあえず、 試験メールをサーバ上で mail コマンドを使い自分宛に送っておきます。
$ whoami
[ユーザ名]
$ mail [ユーザ名]
Subject: TEST
This is test mail.
.
Cc:
このサーバ上で完結するメールなので、宛先は[ユーザ名]だけで大丈夫です。 メールの本文の最後で「.」だけいれてエンターすると終了です。 mail コマンドより送信されたメールは先ほど設定した postfix により、
/home/[ユーザ名]/Maildir/
に配信されたはずです。ディレクトリがあるか確認してください。
次に、メーラにこのサーバのIMAPアカウントを追加します。 ここでは、Windows版のMozilla Thunderbird を使いました。 サーバ名に、devecot を動かしているサーバのIPアドレスを、 ユーザに、サーバの[ユーザ名]を設定します。パスワードも [ユーザ名]のものになります。
うまくいけば、先ほど送ったメールが inbox ディレクトリに 表示されます。また、メールクライアントが必要とするメールフォルダ (ゴミ箱等)も作成されるはずです。(なんか漢字だと怖いことに なるのですが、動きます...)
fetchmail も Fedora 標準パッケージなのでこちらをインストールします。
# yum install fetchmail
fetchmail の設定はユーザごとになります。ユーザホームディレクトリの .fetchmailrc を 取得したい POP3 にあわせて設定します。
$ vi ‾/.fetchmailrc
# ログファイル保存先 (適宜変更)
set logfile "/home/[ユーザ名]/fetchmail.log"
# fetchmail のエラー送信先
set postmaster [ユーザ名もしくはroot]
set no bouncemail
defaults
protocol pop3
flush
no mimedecode
smtphost localhost
poll [外部POP3メールサーバ(mail.hogehoge.com等)]
protocol pop3
user [外部POP3メールサーバユーザ名]
password [外部POP3メールサーバパスワード]
このファイルにはパスワードが書いてあるので、パーミッションを 自分にしか見えないように変更します。
$ chmod 600 .fetchmailrc
「smtphost localhost」 の記述で取得したメールが postfix に渡されます。 外部POP3 の設定はメーラに設定するのと同じ要領ですればOKです。
(特殊な例) Fedora CORE (2) Linux 設定 (fetchmail - GMail 設定)
「flush」 の記述は、fetchmail が受信したメールをPOP3 から削除する設定です。 実験している間は、flush ではなく 「keep」 としてサーバにメールを残した ほうがいいです。postfix への転送に失敗して 大切なメールが闇に葬られると大変なので・・・。
できたら、POP3 に対してメールを送り、fetchmail が取り込んでくれるか ためしてみます。 とりあえず、 POP3 宛にメーラでメールを送信します。 その後、
$ fetchmail
としてみてください。エラーがでなければまずは合格。この操作の後、 先ほどメーラに設定した IMAPアカウントを見てみてください。 うまくいっていれば、送ったメールが取り込まれ表示されているはずです。 メールが表示されない場合は、メールが転送される順番を考えて設定を見直してみてください。
うまく取り込めることが確認できたら、fetchmail を一定間隔で 起動するようにします。ここでは、 /etc/init.d/ に いただきもののスクリプトを入れました。各ユーザホームをみて .fetchmailrc があれば 180秒ごとに起動するデーモンとして登録してくれます。 すばらしい!。
自宅メール環境の構築さんより
# vi /etc/init.d/fetchmail
# 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 180"
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
ファイルを作成したら、
# /etc/init.d/fetchmail start
して、うまく起動することを確認してください。
最後に、各ソフトをサーバ起動時に自動起動するように設定しておきます。
# chkconfig --add postfix
# chkconfig --add dovecot
# chkconfig --add fetchmail
# chkconfig --level 345 postfix on
# chkconfig --level 345 dovecot on
# chkconfig --level 345 fetchmail on
#
# chkconfig --list postfix
postfix 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
# chkconfig --list fetchmail
fetchmail 0:オフ 1:オフ 2:オフ 3:オン 4:オン 5:オン 6:オフ
# chkconfig --list dovecot
dovecot 0:オフ 1:オフ 2:オフ 3:オン 4:オン 5:オン 6:オフ
これで設定は完了です。 しばらくは、POP3 の様子も別なメーラ等で 監視して運用してみてください。
この記事は、Fedora CORE (2) + emacs + ATOK X で出先接続用サーバ構築 の続きです。メールをどの環境からも一元的に扱おうというモクロミです。 あと、ここで使った Linux サーバが RAID1 を組んでいるのでデータの保護にも よいかな、と思いやってみました。
ということで、emacs - Mew からも IMAP接続して使う予定です。 一応つながることはつながっているのですが、IMAPフォルダを Mew がソートしてくれないなど、まだまとまっていないので、 この件についてはそのうち書きます。 (書きました!)
それでは、良いメール環境をお楽しみください。(へんなオチ)