qmailで apop の実装

POP認証では平文でパスワードが流れてるため、外出先でホットスポットなどでメールを受信すると最悪の場合パスワードが盗聴されてしまいます。パスワードを暗号化して受信する仕組みがAPOPとよばれるものです。対応しているメーラ(Becky!など)の制限もありますが、ここではqmailを利用したapopの実装について解説します。
既に qmailの標準インストール / qmailでpop before smtpの実装 の2点が完了しているものとして説明しています。

ソース入手

以下のURLから最新のソースを入手してください。
http://checkpw.sourceforge.net/checkpw/
今回はcheckpw-1.01.tar.gzをダウンロードしました。
http://unc.dl.sourceforge.net/sourceforge/checkpw/checkpw-1.01.tar.gz

インストール

ここではcheckpw-1.01.tar.gzをダウンロードしたものとして説明します。

$ tar xvfz checkpw-1.01.tar.gz
$ cd checkpw-1.01
$ make
$ su
# make setup check

これでインストールは完了です。
/bin以下にcheckapoppw,checkpw,selectcheckpwがインストールされます。

つづいて、qmailにパッチを当てます。
このパッチはPOPとAPOPを共有したい場合に当てるものです。
qmail1.03の展開したディレクトリに移動します。

$ cd qmail1.03を展開した場所/qmail-1.03
$ patch -p1 < checkpw1.01を展開した場所/checkpw-1.01/qmail-popup-auth.patch
$ make
$ su
# make setup
# make check

これでAPOPのパッチがあたってqmailのインストールも完了しました。

ユーザ毎のパスワード設定

APOPを利用するために、ユーザディレクトリにパスワードファイルを作成します。
checkpwではshadowファイルは参照しないようです。

$ cd ~/Maildir/
$ echo "生パスワード" > .password
$ chmod 600 .password

起動方法の変更

APOP対応にするにあたりPOPの起動方法を変更します。
この起動方法はpop before smtpの実装も完了しています。
pop before smtpの実装がまだの方は qmailでpop before smtpの実装 を参照してください。

/usr/local/bin/envdir /etc/relay-ctrl \
/usr/local/bin/relay-ctrl-chdir \
/usr/local/bin/tcpserver -v -R -H 0 pop3 \
/var/qmail/bin/qmail-popup hoge.example.com /bin/selectcheckpw \
/usr/local/bin/relay-ctrl-allow qmail-pop3d Maildir 2>&1 \
| /var/qmail/bin/splogger pop3d 3 &

自動スクリプトの作成(2004/6/9修正)

qmailの自動起動スクリプトを作成しました。よろしければご利用ください。
stopでtcpserver経由のプロセスをkillしていますのでqmail以外でtcpserverを利用している場合は注意が必要です。
qmailでpop before smtpの実装 を少し編集したものですが。。。。

#!/bin/sh
# chkconfig: 345 85 15
# description: Dynamic Relay Authorization Control
# processname: qmail
#
# qmail: /var/qmail
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

case "$1" in
  start)
        # Start daemons.
        echo "Starting qmail."

        # qmail
        csh -cf '/var/qmail/rc &'

        # POP3
        envdir /etc/relay-ctrl relay-ctrl-chdir \
        tcpserver -v -R -H 0 pop3 qmail-popup \
        `/bin/cat /var/qmail/control/me` /bin/selectcheckpw \
        relay-ctrl-allow qmail-pop3d Maildir 2>&1 \
        | splogger pop3d 3 &

        # SMTP
        envdir /etc/relay-ctrl relay-ctrl-chdir \
        tcpserver -v -x /etc/tcp.smtp.cdb -R -H \
        -u `/usr/bin/id -u qmaild` -g `/usr/bin/id -g qmaild` \
        0 smtp relay-ctrl-check qmail-smtpd 2>&1 \
        | splogger smtp 3 &

        echo
        touch /var/lock/subsys/qmail
        ;;
  stop)
        # Stop daemons.
        echo "Shutting down qmail."
        kill $(/sbin/pidof tcpserver)
        kill $(/sbin/pidof qmail-send)
        echo
        rm -f /var/lock/subsys/qmail
        ;;
   *)
        echo "Usage: S99qmail {start|stop}"
        exit 1
esac

exit 0 

これでAPOP,POPともにTCP110で動作します。
メーラがAPOPに対応していなくてもPOPでも動作しますのでとっても便利です。

marronおすすめの参考書 by Amazon
Q-Mail Q-Mail
Oreilly & Associates Inc / John R. Levine, Russell Nelson
¥ 3,965
The Qmail Handbook The Qmail Handbook
Apress / Dave Sill
¥ 5,021
Running Qmail (Sams White Book Series) Running Qmail (Sams White Book Series)
Sams / Richard Blum

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.