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