Courier-IMAPのインストールと設定
2005年2月13日 掲載
2006年6月14日 改訂
Postfixの設定は終わったが、Vine LinuxではPOPサーバーが標準ではインストールされないので、このままではサーバーにメールが届いてもパソコンに取り込むことができない。POPサーバーとしてはqpopperが有名だが、ここではIMAPにも対応したCourier-IMAPを使うことにする。
Courier-IMAPのインストール
Courier-IMAPをインストールするにはapt-getコマンドを使う。
ただし、Courier-IMAPのインストールに必要なパッケージである「courier-authlib」がなぜか「Vine Plus」に含まれていない。そのため、ただ「apt-get
install courier-imap」と実行したのでは「いくつかのパッケージをインストールすることができません」というエラーが出てしまう。aptコマンドの設定ファイルである「/etc/apt/sources.list」を編集し、plusだけでなく、extraのカテゴリーも検索とダウンロードの対象に含めるように設定を変更する必要がある。viで「/etc/apt/sources.list」を開き、太字の部分を追加しよう。
ちなみにcourier-authlibは認証を行うサービスである。このパッケージをインストールしておかないとCourier-IMAPの本体が動いていてもPOP/IMAPサーバーにログインできない。
## ## Vine Linux 3.1 ## 標準では extras カテゴリは除外されています。extras カテゴリ内のパッケージ ## が必要な場合はコンポーネントリストに "extras" を追加してください。 # (masters) rpm [vine] http://updates.vinelinux.org/apt 3.1/$(ARCH) main devel plus updates extras rpm-src [vine] http://updates.vinelinux.org/apt 3.1/$(ARCH) main devel plus updates extras
設定を変更したらapt-getコマンドでCourier-IMAPをインストールする。コマンドラインで「apt-get install courier-imap」と入力すれば、あとは自動でインストールが行われる。
# apt-get install courier-imap パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下の追加パッケージがインストールされます: courier-authlib expect tcl thread tk 以下のパッケージが新たにインストールされます: courier-authlib courier-imap expect tcl thread tk アップグレード: 0 個, 新規インストール: 6 個, 削除: 0 個, 保留: 14 個 5456kB のアーカイブを取得する必要があります。 展開後に 13.7MB のディスク容量が追加消費されます。 続行しますか? [Y/n]y 取得:1 http://updates.vinelinux.org 3.1/i386/main tcl 8.4.6-0vl1 [2607kB] 取得:2 http://updates.vinelinux.org 3.1/i386/main tk 8.4.6-0vl1 [1587kB] 取得:3 http://updates.vinelinux.org 3.1/i386/plus thread 2.5.2-0vl2 [49.5kB] 取得:4 http://updates.vinelinux.org 3.1/i386/plus expect 5.39.0-95vl2 [372kB] 取得:5 http://updates.vinelinux.org 3.1/i386/extras courier-authlib 0.53-0vl1 [150kB] 取得:6 http://updates.vinelinux.org 3.1/i386/plus courier-imap 4.0.1-0vl2 [691kB] 5456kB を 2s 秒で取得しました (1825kB/s) 変更を適用しています... Preparing... ########################################### [100%] 1:tcl ########################################### [ 16%] 2:tk ########################################### [ 33%] 3:thread ########################################### [ 50%] 4:expect ########################################### [ 66%] 5:courier-authlib ########################################### [ 83%] 6:courier-imap ########################################### [100%] 完了 #
Courier-IMAPが自動起動するようにインストール時に設定されるが、念のためにchkconfigコマンドで確認しておこう。もし「courier-imap」「courier-authlib」が「off」になっていたら、「chkconfig courier-imap on」「chkconfig courier-authlib on」で追加する。
「courier-imap」「courier-authlib」の両方が「on」になっていないと、サーバーを再起動したときにCourier-IMAPが自動起動しない。パソコンのメールソフトからメールサーバーにアクセスしてもエラーが出るだけだ。
# chkconfig --list httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off proftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off courier-authlib 0:off 1:off 2:on 3:on 4:on 5:on 6:off ←ランラベル2〜5が「on」 sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off courier-imap 0:off 1:off 2:on 3:on 4:on 5:on 6:off ←ランラベル2〜5が「on」 #
メールボックスの準備
Courier-IMAPはMaildir形式のメールボックスを使う。Postfixでは標準でMailbox形式になっているため、このページで設定したように「/etc/postfix/main.cf」の中で「home_mailbox = Maildir/」と指定しておかなければならない。設定を変更したあとは、かならず「/etc/rc.d/init.d/postfix
restart」でPostfixを再起動しておく。
ちなみにMailbox形式とは/var/spool/mailディレクトリの中にユーザー名のファイルを作成し、そこにメールを保存するもの。ひとりのユーザーがひとつのファイルであり、何百通のメールを受け取ってもひとつのファイルに格納される。このファイルが壊れてしまうとすべてのメールが消えてしまう。それに対してMaildir方式ではユーザーのホームディレクトリの中にMaildirディレクトリを作成し(/home/××/Maildir)、そこにメールを保存していく。一通のメールがひとつのファイルになるので障害に強い。
Postfixの設定を変更するだけでなく、受信したメールを保存するディレクトリを作成しなければならない。Maildirディレクトリの中には「cur」「new」「tmp」という3つのディレクトリを作るのだが、手動でやるのは面倒なので専用のmaildirmakeコマンドを使う。メールを受信するユーザーとしてログインし、自分のホームディレクトリで次のコマンドを実行しよう。
$ cd ~ ホームディレクトリに移動する $ /usr/sbin/maildirmake Maildir Maildirを作成する
これでMaildirディレクトリが作成された。しかし、ユーザーごとにMaildirディレクトリを作成するのは面倒なもの。「/etc/skel」ディレクトリにMaildirディレクトリを作成しておけば、次から新しいユーザーを作成すると同時にホームディレクトリにMaildirディレクトリが作成される。/etc/skelディレクトリの中身は、新規ユーザーを作成するときにそのホームディレクトリへコピーされるのだ。スーパーユーザーで次のコマンドを実行する。
# /usr/sbin/maildirmake /etc/skel/Maildir
メールアカウントの作成
Postfixの標準設定ではLinuxのユーザーがそのままPostfixのユーザーとなる。つまり、作成したユーザーがあれば、そのログイン名がそのままメールアカウントになる。たとえば、jitaku-server.netドメインでuserという名前のユーザーがいれば、user@jitaku-server.netというメールアドレスになるわけだ。新たにユーザーを作成したときはuseraddコマンドを使う。
メールしか使わず、Linuxにログインしないというユーザーの場合は、ユーザーを作成するときに次のように指定する。こうすればLinuxにログインできなくなるため、安全性を高めることができる。
# useradd -s /sbin/nologin ×× ××はユーザー名
Courier-IMAPの起動
Courier-IMAPを起動するには次のコマンドを実行する。「courier-imap」「courier-authlib」の両方のサービスを起動するところに注意してほしい。courier-authlibは認証を行うためのサービスだ。
また、psコマンドで正常に起動したかもチェックしよう。
# service courier-imap start Starting Courier-IMAP server: imap generating-SSL-certificate... imap-ssl pop3 g enerating-SSL-certificate... pop3-ssl # service courier-authlib start Starting Courier authentication services: authdaemond # ps ax | grep courier-imap 9298 ? S 0:00 /usr/libexec/courier-imap/couriertcpd -address=0 -std 9316 ? S 0:00 /usr/libexec/courier-imap/couriertcpd -address=0 -std 9323 ? S 0:00 /usr/libexec/courier-imap/couriertcpd -address=0 -std 9340 ? S 0:00 /usr/libexec/courier-imap/couriertcpd -address=0 -std 25707 pts/0 S 0:00 grep courier-imap # ps ax | grep courier-authlib 511 ? S 0:00 /usr/libexec/courier-authlib/authdaemond 552 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 553 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 554 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 555 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 556 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 25711 pts/0 S 0:00 grep courier-authlib #
Courier-IMAPの設定ファイルは/etc/courier-imapディレクトリの中にあるが、通常の使い方では特に設定を行う必要はない。
これでメールを受信する準備も整った。プロバイダのSMTPサーバーから自分のメールアドレスにメールを送ってみて、正しく受信できるかを確認しよう。
メール受信のトラブルシューティング
外部から送信したメールを受信できないときは、まず設定ファイルに誤りがないかを確認しよう。次にPostfixとCourier-IMAP(courier-imapとcourier-authlibの両方)が起動しているかをpsコマンドで確認する。psコマンドの結果をgrepに渡して、必要な行だけにしぼりこむ。
# ps ax | grep postfix 9133 ? S 0:00 /usr/lib/postfix/master こんな行があれば正常 25703 pts/0 S 0:00 grep postfix # ps ax | grep courier-imap 9298 ? S 0:00 /usr/libexec/courier-imap/couriertcpd -address=0 -std こんな行があれば正常 9316 ? S 0:00 /usr/libexec/courier-imap/couriertcpd -address=0 -std 9323 ? S 0:00 /usr/libexec/courier-imap/couriertcpd -address=0 -std 9340 ? S 0:00 /usr/libexec/courier-imap/couriertcpd -address=0 -std 25707 pts/0 S 0:00 grep courier-imap # ps ax | grep courier-authlib 511 ? S 0:00 /usr/libexec/courier-authlib/authdaemond こんな行があれば正常 552 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 553 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 554 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 555 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 556 ? S 0:02 /usr/libexec/courier-authlib/authdaemond 25711 pts/0 S 0:00 grep courier-authlib #
もしPostfixやCourier-IMAPが起動していないと次のような表示になる。「service postfix start」「service courier-imap start」「service courier-authlib start」などと入力して、それぞれのサービスを起動する。また、上のインストールの手順のようにchkconfigコマンドを使って、courier-imapやcourier-authlibが自動起動するように設定されているかも確認しておこう。
# ps ax | grep postfix 25703 pts/0 S 0:00 grep postfix Postfixが起動していない # ps ax | grep courier-imap 25707 pts/0 S 0:00 grep courier-imap courier-imapが起動していない # ps ax | grep courier-authlib 25711 pts/0 S 0:00 grep courier-authlib courier-authlibが起動していない #
また、ルーターのポートが空いているかも確認する。内部から確認することはできないので、外部からポートをスキャンするサービスを活用しよう。このページで紹介しているように、ブラウザで 「Sygate Online Services」にアクセスして「Scan Now」ボタンをクリックする。そこで「SMTP Mail Server Found」と表示されれば設定に問題はない。

それでも受信できないときは、DDNSサービスの設定に誤りがないかチェックする。メールを受信するにはMXレコードの設定が必要だ。MyDNS.JPの場合は「DOMAIN INFO」のページで「MXレコード」に「*」と入力しておく。
