qm-poppw


*** 説明



qmail パッケージに含まれる、

qmail-popup と qmail-pop3d と共に使って、

POP と APOP の認証を可能にするプログラムです。



同じような機能を持つプログラムとして、

checkpassword がありますが、

qm-poppw は、以下のような特徴を持っています。



  1) POP だけでなく APOP も使用可能

  2) ユーザ一人に付き、

     複数のメールボックスを使用可能



*** インストール方法



基本的に以下の作業を、順番に行います。



  1) Makefile を編集する。

  2) make

  3) make install

  4) inetd.conf にエントリを追加

  5) inetd にシグナルを送る。



それぞれ、個別に説明します。



** 第1ステップ:Makefile の編集



Makefile の中にある、オプションを選択します。

必要のない行は、先頭に # を付けて

コメントアウトして下さい。



* qmpop の動作に関するオプション



>  DEFS            += -DPERMIT_LOGIN_PASSWD



ログインパスワードを使用できるようにします。

crypt() 関数が使えない場合には、指定しないでください。



>  DEFS            += -DPERMIT_DEFAULT_LOGIN



ユーザのデフォルトの .qmpop ファイルがなかった場合、

ログインパスワードを用いて認証し、

引数に指定されたデフォルトの Maildir を使用します。



拡張アドレスが付いている場合で、

該当する .qmpop ファイルがない場合には、

このオプションにかかわらず、認証は失敗します。



>  DEFS            += -DPERMIT_NO_PASSWD



.qmpop ファイルの第1フィールドで YES が

指定できるようにします。



>  DEFS            += -DPERMIT_ALTERNATE_COMMAND



.qmpop ファイルの第4フィールドで、

先頭文字を -(ハイフン)にすることによって、

引数に指定されたコマンド(通常は qmail-pop3d)以外の

コマンドを起動できるようにします。



* システム依存のオプション



パスワード情報の取得や、ライブラリの違いにより設定します。

配布の状態は、OpenBSD2.2 でコンパイルできる状態です。



** 第2ステップ:make



make を実行します。



** 第3ステップ:make install



root になって、make install を実行します。



** 第4ステップ:inetd.conf への登録



inetd.conf に以下のような1行を追加します。



  pop3  stream  tcp  nowait  root  /var/qmail/bin/qmail-popup qmail-popup host.domain /usr/local/sbin/qm-poppw /var/qmail/bin/qmail-pop3d Maildir



最後の Maildir には、

各ユーザのホームディレクトリ内の、

デフォルトの Maildir を指定します。



既存の checkpassword や、qpopper を置き換える場合には、

別のポート番号でテストして動作を確認してから、

110番に設定しなおすことをお勧めします。



** 第5ステップ:inetd.conf のリロード



inetd に、変更した inetd.conf を読み込ませます。

通常は kill -HUP (inetd の PID)とします。




*** .qmpop ファイルについて



** .qmpop ファイルのパス名



.qmail ファイルのパス名の

「.qmail」を「.qmpop」に置き換えたものになります。

ただし、存在しなかった場合に default のサーチは、

行われません。



* 例



  1) POPユーザ名 tom



       ユーザ tom が存在する場合   --> ~tom/.qmpop

       ユーザ tom が存在しない場合 --> ~alias/.qmpop-tom



  2) POPユーザ名 tom-rt100i



       ユーザ tom が存在する場合   --> ~tom/.qmpop-rt100i

       ユーザ tom が存在しない場合 --> ~alias/.qmpop-tom-rt100i



** .qmpop ファイルのパーミッション



.qmpop ファイルは、



  1) 所有者は Read 可

  2) オーナー以外が読み書きできない

  3) オーナーも含め、だれも実行不可



のすべての条件を満たす必要があります。

つまり、パーミッションは、0600, 0400 のいづれかです。



この条件が満たされない場合、.qmpop ファイルは、

無い物として扱われます。





** .qmpop ファイルの書き方



.qmpop ファイルは、1行だけから成り、その行は、:(コロン)で区切られた

4つのフィールドから構成されています。



例えば、次のような内容です。



   APOP:RAW:raw password:.maildirs/qmail-ml



それぞれのフィールドには、次のような指定ができます。



* 第1フィールド:認証方法



POP, APOP, NO, YES が指定できます。

(YES はコンパイルオプションに注意)



  1) POP



     POP で標準的な USER-PASS 認証を行います。



  2) APOP



     APOP コマンドによる認証を行います。

     メールクライアントでも対応していることが必要です。



  3) NO



     このアカウントに対する一切のログインを許可しません。



  4) YES



     このアカウントに対するログインは、POP, APOP の別や、

     送られてきたパスワードにかかわらず、常に許可します。

     YES を使うためには、コンパイル時にオプションとして、

     PERMIT_NO_PASSWD を指定する必要があります。



* 第2フィールド:パスワード種別



RAW, CRYPT, OBSCURE, LOGIN が指定できます。



  1) RAW

     

     第3フィールドに指定された文字列が、

     そのままパスワードとして使用されます。

     パスワードの中に、:(コロン)は使えないので、

     注意して下さい。



  2) CRYPT



     第3フィールドに指定された文字列は、

     DES 暗号化が行われています。

     /etc/passwd と同じ形式です。

     パスワードの保存方法としては一番安全ですが、

     APOPでは使えません。(POPだけで使えます。)



  3) OBSCURE



     第3フィールドに指定された文字列は、

     簡単な暗号化がされています。

     すぐに復号できる変換で、一目では分からない

     という程度の効果しかありませんが、

     RAW よりはマシです。

     qpopper の /etc/pop.auth ファイルと同程度の

     暗号強度です。(つまり、ほとんど暗号とはいえない)

     

  4) LOGIN



     パスワードとして、システムのログインパスワードを

     用います。第3フィールドは無視されます。

     APOPでは使えません。(POPだけで使えます。)



* 第3フィールド:パスワード



パスワードを、第2フィールドで指定した形で記述します。



* 第4フィールド:Maildir 指定



標準的が使い方の場合、

Maildir となっているディレクトリ名を指定します。

相対パスを指定した場合、そのユーザの

ホームディレクトリからの相対パスとして扱われます。



正確には、qm-poppw の起動時の第1引数に指定されたコマンドが起動され、

このフィールドの値が引数として与えられます。

引数はスペースで区切られ、複数の引数として渡されます。



このフィールドの先頭文字が、-(ハイフン)で、

かつ、コンパイル時オプションとして PERMIT_ALTERNATE_COMMAND が

与えられている時には、第4フィールドの値がコマンドとして実行されます。

コマンド名・引数はスペースで区切られます。



** デフォルトの .qmpop ファイルの扱い



次の3つの条件をすべて満たしている時、.qmpop ファイルの情報に依らず、

ログインすることが出来ます。



  1) ユーザ名自体でログインした時(拡張アドレスがない時)

  2) そのユーザのホームディレクトリに .qmpop がない時

  3) コンパイル時オプション PERMIT_DEFAULT_LOGIN が指定されている時



この時には、認証方法として POP(USER-PASS)、

パスワードとしてシステムのログインパスワード、

Maildir として qm-poppw の第2引数が使われます。

これは、以下のような内容の .qmpop ファイルがある場合と同等です。



   POP:LOGIN::(argv[2] of qm-poppw)



これによって、従来の checkpassword や qpopper と同等の動作を

させることができます。



正確には、qm-poppw の第1引数に指定されたコマンドが実行され、

第2引数以降すべてが引数として渡されます。



** .qmpop ファイルの例



  1) APOP:RAW:Oshiete ageNai:Maildir



     APOP で認証し、パスワードは「Oshiete ageNai」、

     Maildir は、Maildir とします。



  2) POP:LOGIN::proj/Maildir2



     POP で認証し、パスワードはシステムのログインパスワード、

     Maildir は、proj/Maildir2 とします。



  3) POP:RAW:ugauGa3:-/bin/sh -i



     POP で認証し、パスワードは「ugauGa3」、

     認証が終わった後、/bin/sh を起動します。

     telnet の代りになってしまうので注意。



## EOF ##




Kentaro Yoshitomi
Last modified: Wed Sep 9 17:46:04 JST 1998