pbs4q は、 qmail で POP before SMTP を行なうためのソフトです。名前の由来は、 POP before SMTP for qmail です。
特徴は、以下の通りです。
ダウンロード(5728byte)
version 0.2.1 updated on 2002/07/05
ダウンロード(5642byte)
version 0.2.0 updated on 2002/02/04
"pbs4q"(ver. 0.2.0) を CourierIMAPD と組み合わせて動作させるには
patch: pbs4q-0.2.0-ipv6.patch
ちはる氏御提供
ダウンロード(5440byte)
version 0.1.0 updated on 31 Dec 2001
ダウンロード(4846byte)
version 0.0.4 updated on 28 Jul 2000
pbs4q を利用する際に、設定を間違えると、認証に失敗しても接続元の
IP が保存されてしまうということがあります。 pbs4q1 が呼び出されるのは、
必ず認証に成功した後になるようにご注意ください。
qmail-smtpd と pbs4q_su の動作ユーザID が異なってしまった結果、 POP before SMTP が正常に動作しないということがあるようです。 その原因としては、
---以下の記述は、"pbs4q-0.2.1" に関するものです。 "pbs4q-0.0.x", "pbs4q-0.1.x" , "pbs4q-0.2.0" では違う点があります。---
pbs4q1, pbs4q2, pbs4q2_smtp, pbs4q_su, pbs4qclean_su の5つです。 pbs4q_su, pbs4qclean_su は、 持ち主が qmaild としてインストールされ、 setuid されます。
gzip -dc pbs4q-0.2.1.tar.gz | tar xvf -
cd pbs4q vi Makefile make ; make install
/usr/local/bin/tcpserver -c 40 -u 0 -g 0 \ -x /var/qmail/control/tcprules.cdb \ ← 追加(SMTPのものと同じにする) /var/qmail/bin/qmail-popup \ YOUR_HOST'S_NAME \ /bin/checkpassword \ /usr/local/bin/pbs4q1 \ ← 追加 /var/qmail/bin/qmail-pop3d Maildir &SMTP:
/usr/local/bin/tcpserver \ -c 40 -u ID_NO_OF_qmail_USER -g ID_NO_OF_nofiles_GROUP \ -x /var/qmail/control/tcprules.cdb \ YOUR_HOST'S_NAME smtp \ /usr/local/bin/pbs4q2_smtp \ ← 追加 /var/qmail/bin/qmail-smtpd &FTP:
FTP daemon を呼び出すスクリプト中の "/usr/sbin/in.ftpd" と 書いてある部分を "/usr/local/bin/pbs4q2 /usr/sbin/in.ftpd" に書き換える。 但し、 pbs4q は、 tcpserver が設定する 'TCPREMOTEIP' と いう環境変数に依存しますので、 FTP daemon の呼び出しに tcpserver を設定する必要があります。
$ crontab -e (以下のような行を追加してください。) # run pbs4qclean_su every hour 0 * * * * /usr/local/bin/pbs4qclean_su
pbs4q1: * 環境変数: RELAYCLIENT があるかを調べます。 * 無かった場合だけ、 pbs4q_su を呼び出し、接続元の IP を保存します。 * 引数として与えられたプログラムを実行します。 * そのプログラムが終了するのを待ちます。 pbs4q2: * まず、環境変数: RELAYCLIENT があるかを調べます。 * 無ければ、同じ IP からの POP/APOP/IMAP への接続が30分以内にあったかを調べます。 * 無ければ終了します。(引数として与えられたプログラムは実行しません。) * 引数として与えられたプログラムを実行して終了します。 pbs4q2_smtp: * まず、環境変数: RELAYCLIENT があるかを調べます。 * 無ければ、同じ IP からの POP/APOP/IMAP への接続が30分以内にあったかを調べます。 * あれば環境変数に RELAYCLIENT="" を追加します。 * 引数として与えられたプログラムを実行して終了します。 pbs4q_su: (owner: qmaild, mode: 4755) qmaild の権限で動作し、接続元 IP を名前とするファイルを /var/pbs4q/ip/ に作り、その中に、時刻を保存します。 pbs4qclean_su: (owner: qmaild, mode: 4755) qmaild の権限で動作し、 /var/pbs4q/ip/ に保存されているファイルのう ち、現時点より30分以上古い時刻を保存しているものを削除します。
ログがエラーっぽい … すみません。
ログで、中継したのか弾いたのかの区別が付かない … qmail が出したログを御覧下さい。
ログに残すメッセージを選べるようにして欲しい … そのうちにその機能を追加します。
名前がいまいち … すいません。
written by YAKAMI Masahiro.
e-mail: masahiro@mambo.kuhp.kyoto-u.ac.jp