qmail用POP3サーバ

Presented by 非武装エリア
最終更新日:2003年12月31日

■ POP3サーバの構築

qmailをMaildir形式で利用する場合、POPサーバもMaildir形式に対応していないと、Windowsクライアント等からPOPを使ったメールの利用ができなくなります。(通常のPOP3サーバはmbox形式に対応)
そこでMaildir形式に対応したPOP3サーバを構築する必要がある訳ですが、qmailのパッケージの中には既に標準でpop3サーバが用意されているので、これを使う事とします。
qmail用のPOP3サーバは/var/qmail/bin/qmail-pop3dですが、このプログラムにはユーザの認証の機構が組み込まれていません。ですから、通常はこのプログラムを使う場合には、checkpassword というプログラムを合わせて使います。なお、POPサーバの構築にあたり、既にqmailが動作している場合には一度停止ください。qmailの停止はいままでの手順を踏んでいる場合には、

# /usr/local/sbin/qmail stop [Enter]

で停止できると思います。

1.checkpasswordのインストール

checkpassword を入手したら、これを適当なディレクトリに解凍します。

# cd /usr/local/src/qmail [Enter]
# tar zxvf checkpassword-0.90.tar.gz [Enter]

すると、「checkpassword-0.90」というディレクトリに解凍されるので、

# cd checkpassword-0.90 [Enter]
# make [Enter]
# make setup check [Enter]

の順で実行することで、checkpasswordがインストールされます。

2.サービスのためスクリプトを作成。

2-1. 既存のPOPサーバの停止

qmail に対応対応した pop3 サーバをサービスとして起動できるようにします。 サービスとして起動するには inetd やxinetd から qmail-pop3d を起動する方法がありますが、今までの説明で使ってきた tcpserver を daemontools を使って起動する方法を説明します。

まず、既に通常のPOP3サーバが起動しているならこれを停止します。 通常FreeBSDやLinux6.xまではinetdを使ってPOPサーバを起動していると思います。 /etc/inetd.confをエディタで開き次の行をコメントアウトします。

      ::
# pop3 stream tcp nowait root .................    -----コメントアウト
::

Linux7.x以上ではxinetdを使ってpopサーバ起動されているかも知れませんその場合には、/etc/xinetdディレクトリに移動 して、このディレクトリに「ipopxx」や「popxx」というファイルが無いか探します。で、ファイルが見つかったならそのファイルを開き、「disable=yes」 とします。

service pop3
{
    disable = yes     # --- noからyesにするとpopが起動されなくなります。
      ::

これで一度リブートするか、inetdならびにxinetdのプロセスに"-HUP"シグナルを与えれば変更した内容が有効になります。

2-2. 起動スクリプト用ディレクトリ作成

以下のコマンドを実行します。その前にqmailを停止してください。

# /etc/rc.d/init.d/qmail stop [Enter]
# mkdir -p /var/qmail/supervise/qmail-pop3d/log [Enter]
# chmod +t /var/qmail/supervise/qmail-pop3d [Enter]
# mkdir -p /var/log/qmail/pop3d/ [Enter]
# chown qmaill /var/log/qmail/pop3d/ [Enter]

2-3. 起動スクリプト作成

以下の内容で起動用のスクリプトファイルを作成します。

■/var/qmail/supervise/qmail-pop3d/run の内容

#!/bin/sh
#
exec envdir /var/qmail/env sh -c '	softlimit -d6000000 \
  tcpserver -v -c 40 0 pop3 \
  /var/qmail/bin/qmail-popup $HOST /bin/checkpassword \
  /var/qmail/bin/qmail-pop3d Maildir 2>&1
' 

作成したスクリプトに実行属性を与えます。

# chmod +x /var/qmail/supervise/qmail-pop3d/run [Enter]

■/var/qmail/supervise/qmail-pop3d/log/run の内容

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3d 

作成したスクリプトに実行属性を与えます。
# chmod +x /var/qmail/supervise/qmail-pop3d/log/run [Enter]

■/var/qmail/env/HOST の内容

hostname.domain

hostname.domain にはqmailを動かしているマシンのFQDN(ドメイン正式名)を指定します。

3. POPのテスト

POPサーバの設定が完了したら、qmailを再度起動します。

# /etc/rc.d/init.d/qmail start [Enter]

起動後、telnetコマンドを使って実際にパスワードのチェックをしてみましょう。コマンドから、以下のように入力してみてください。

$ telnet localhost 110
+OK <18461.969675076@hostname.domain>
user user-id       ----- user-idは登録済のユーザID
+OK
pass password        ---- user-idのパスワード
+OK
quit
$

この時、もしパスワードの入力で+ERRとなった場合には、次のことを確認してください。


Copyrightc 1998-2003 ROBATA.ORG

Mailwebmaster@robata.org