Solaris
qpopper 4.0.3
with
APOP & PbS (POP before SMTP)
(postfix)

●●● ●●● ●●● ●●● ●●● ●●● ●●● ●●● ●●● ●●● ●●● ●●● ●●●



Qpopper
POP3のデーモンである、qpopper。それを APOP(パスワードの暗号化)とPOP before SMTPをつけて、インストールします。ちなみに、MTAはPostfix。
PbS(POP before SMTP)
 メールを受信した人のIPを一定時間リストに保存して、そのIPからのメールの送信を受け付けるというもの。
 これによって、サーバー内にアカウントがあるユーザーで受信できるひとならば、通常は不許可になってる外部からの中継を許可することができるようになる。

1. 各種ファイル<作成>
まず必要なファイルを作成する。
# cd /etc/mail/
# touch pop3.log pop3.authlog pop3syslog popauthip
# makemap dbm popauthip < popauthip
POP-before-SMTPを行う上で必要になる各種ファイルの説明。
ここで挙げるファイル名は各々自由に変更しても問題なし。
/etc/mail/pop3.log -------qpopperの認証結果のログ
/etc/mail/pop3.authlog ---watcher2の動作を記すログ
/etc/mail/popauthip ------許可したIPのリスト
/etc/mail/pop3.syslog -----syslogの出力ファイル

2. qpopperのインストール
#useradd -s /bin/false pop

# tar zxvf qpopper4.0.3.tar.gz
# cd qpopper4.0.3
# ./configure --enable-log-login --with-apopuid=pop --enable-apop=/etc/pop.auth
# ./make

# cp popper/popper /usr/sbin/in.apop3d
# cp popper/popauth /usr/sbin/
# chmod 6755 /usr/sbin/popauth
# touch /etc/pop.auth
# chown pop /usr/sbin/popauth /etc/pop.auth


# vi /etc/inetd.conf
pop3 stream tcp nowait root /usr/sbin/in.apop3d in.apop3d -t /etc/mail/pop3.log

上から、意味の説明。
popというユーザーアカウントを シェルなし(ログイン不可)で作る。

qpopper4.0.3.tar.gzを解凍
解凍したqpopperのDirに移動
--enable-log-login PbS用のログ出力対応
--with-apopuid=pop popというユーザーアカウントで動かすようにする。
--enable-apop=/etc/pop.auth でAPOPの暗号化対応
makeする

popperそのものを、in.apop3dの名前にして/usr/sbinにコピー
APOP用、popauthを /usr/sbinにコピー
popauthのパーミッションを6755にする
/etc/pop.auth の作成
popauth , pop.authのオーナーをpopにする。

/etc/inetd.conf にpop3の項目を追加。-tによりpopのログを出力


watcher2のインストール(PbSのプログラムそのもの)
http://www.kuee.kyoto-u.ac.jp/~kitano/popauth/
ここにPbSの実操作をするプログラムがあるので、ひろってくる。

watcher2スクリプトを自分の環境に合わせて編集する。編集する箇所は次の辺り。
<注意>設定時にここのファイル名を間違えて、設定をミスすることあり!要注意!!。

# vim /etc/mail/watch2.pl
#!/usr/local/bin/perl   perlのパス
....
$popperlog = "/etc/mail/pop3.log";    # qpopperのログファイル名
$popauthlog = "/etc/mail/pop3.authlog"; # watcher2のログファイル名
$syslogpid = "/etc/syslog.pid";       # syslogのPIDファイル名
$popauth = "/etc/mail/popauthip";    # 許可IP一覧リストファイル名
$makemap = "/usr/sbin/makemap";    # makemapのパス
$mapclass = "dbm"; #makemapのクラス
$expire = 1800; # DBに登録したIPの有効期間(秒)
.....
system("$makemap #mapclass ${popauth}.db < $popauth");を
system("$makemap #mapclass ${popauth} < $popauth"); へと変更

そうしたらwatcher2を適当なディレクトリ(/etc/mail など)へ設置。

2002-06-24追記 (makemapが動かないときの対処法)
Solaris-BBS g_taki様より。2002-06-24
postfixのドキュメント設定例を見ていたら、
virtualの設定例かどこかでpostmapというコマンドを見つけました。
makemapと同じようなことをやっているようで、postfixについてくるコマンドなら相性?もいいはず・・・
ということで$makemap = "/usr/loal/sbin/makemap";を
$makemap = "/usr/sbin/postmap";にして、
system("$makemap #mapclass ${popauth} < $popauth");を
system("$makemap $popauth");として、
watch2.plを再起動したら、うまく動くようになりました。
とのことでした。g_takiさん、情報感謝です!
ちなみに、postmapの詳しい説明はこちら▼
http://www.kobitosan.net/postfix/jman/postmap.1.html (「Postfixのぺーじ」より。)
postmapでもファイルクラスを指定できるようなので、
system("$makemap $popauth"); の部分は#mapclassを外さなくてもできるかも。次に新しく立てるサーバで実験してみたいと思います。

/etc/postfix/main.cfの編集
postfix 側は smtpd_recipient_restrictions に check_client_access の設定を
追加して popauthip.pig の場所を指定してやれば OK 。具体的には

smtpd_recipient_restrictions = permit_mynetworks,check_client_access dbm:/etc/mail/popauthip,check_relay_domains

を追加すればOKです。
注意 上のは一行の文。 dbm:.....の前にはスペース1つあり。

watch2.plの自動起動

# vim /etc/rc3.d/S99watch2
/usr/local/bin/perl /etc/mail/watch2.pl &

# chmod 744 watch2.pl


起動・再起動
設定は以上で完了。postfix, inetdを再起動し、watcher2を起動しましょう。
# /usr/sbin/postfix stop
# /usr/sbin/postfix start

# ps -ef|grep inetd
root 146 1 0 Mar 13 ? 0:00 /usr/sbin/inetd -s
# kill -HUP 146
# /etc/rc3.d/S99watch2


APOPのユーザー登録・削除など
# popauth -init (APOPのパスワードデータベースファイル作成。必須。)

# popauth -user username (登録時)
(# popauth -user username password も可能)
で設定する。パスワードは標準のものと別にしたほうがよい。

# popauth -delete username (削除時)

 

ちなみに、APOPのパスワードを作ると、標準で作ったパスワードはまったく使えなくなる。APOP対応のメーラーが必須となるので、Outloo* *xpressは問題外となる(笑)
今まで調べたのでは、
AL-MAIL(シェア)
Becky!(シェア)
鶴亀メール(シェア)
電信八号(フリー)
などのメーラーが対応している。



>>

<メインに戻る>
<NetNorisトップに戻る>