ページ更新: 2005-09-01 (木) (5667日前)
(2001-06-19作成) postfix に drac (POP before SMTP) の設定を追加します。 環境は Debian GNU/Linux Woody + postfix 1.1.3-1 パッケージです。 (Debian GNU/Linux 3.0 「woody」リリース情報 によると, 2002-07-19 リリース / 2006-06 セキュリティアップデート終了) 目次 [編集]dracのインストール #(2001-06-19作成)
POP before SMTP を使うために、drac を導入しました。 ソースコード drac.tar.Z は Dynamic Relay Authorization Control から入手できます。 [編集]dracのコンパイル、インストール #Makefile を Linux + Postfix にあわせて修正し、makeします。(修正内容は忘れた) # make # strip rpc.dracd ★デバッグ情報を削除。特に必要はないが。 本体をインストールします。/usr/local/sbin/ にインストールされます。 # make install # ls -alF /usr/local/sbin total 20 drwxrwsr-x 2 root staff 4096 May 12 18:01 ./ drwxrwsr-x 9 root staff 4096 May 11 08:33 ../ -rwxr-xr-x 1 bin bin 11932 May 12 18:01 rpc.dracd* マニュアルもインストールします。/usr/local/man/ にインストールします。 # mkdir /usr/local/man/man8 # mkdir /usr/local/man/man3 # make install-man /usr/bin/install -c -m 0444 rpc.dracd.1m /usr/local/man/man8/rpc.dracd.8 /usr/bin/install -c -m 0444 dracauth.3 /usr/local/man/man3/dracauth.3[編集] 起動スクリプト #自動で起動するようにするため、/etc/init.d/ に、rpc.dracd を起動するためのスクリプトを用意します。 /etc/init.d/skeleton がスクリプトのサンプルなので、これをコピーして修正します。 start-stop-daemon で pidfile ができなかったのでstopができない。そこで、 stop/restart を killall $DAEMON に変更します。 # cd /etc/init.d # cp skeleton drac (お好きなエディタで起動スクリプト /etc/init.d/drac を修正します) 起動スクリプト drac を /etc/rc?.d/ に登録。update-rc.d コマンドを使って、Postfix と同じ優先順位 (20) で起動/終了するようにしました。 (この作業は動作確認が終わった後の方が無難でしょうが……) # update-rc.d drac defaults 20 Adding system startup for /etc/init.d/drac ... /etc/rc0.d/K20drac -> ../init.d/drac /etc/rc1.d/K20drac -> ../init.d/drac /etc/rc6.d/K20drac -> ../init.d/drac /etc/rc2.d/S20drac -> ../init.d/drac /etc/rc3.d/S20drac -> ../init.d/drac /etc/rc4.d/S20drac -> ../init.d/drac /etc/rc5.d/S20drac -> ../init.d/drac # /etc/mail/dracd.allow を作成します。今回は qpopper と同じホストなので、こんな感じ。 255.255.255.255 127.0.0.1 このホスト自身のIPも入れた方がよいかもしれませんが、これで動いたし。 なお、ポート sunrpc(111) を使っているので、いたずらされないようにipchainsなどでふさいでおきましょう。 準備が出来たら、dracを起動します。 # /etc/init.d/drac start これで完了。動作確認は qpopper を修正してからになります。 [編集]qpopperのdrac対応パッケージの作成 #(2001-06-18作成)
qpopper 4.0.2-1 drac 対応版のパッケージを作って、インストールします。せっかくのDebianだし。 環境は Debian GNU/Linux woody です。 [編集]Debianパッケージ作成の参考URI #
手順 #パッケージの作成や qpopperのコンパイルに必要なパッケージはあらかじめ用意しておきましょう。 まずはソースコードの入手と展開。(/etc/apt/sources.list に deb-src を定義しておくこと) # apt-get update # apt-get source qpopper debian/rules を修正してコンパイルスイッチをdrac対応にしときます。* の行を追加。 --enable-log-login \ * --enable-drac \ * --with-drac=/root/drac/src \ --with-apopuid=mail \ パッケージのバージョンを修正します。名称は元にしたパッケージのバージョン+ .drac にしました。 # dch -v 4.0.2-1.drac qpopper (4.0.2-1.drac) unstable; urgency=low * drac -- root <root@discypus.jp> Mon, 18 Jun 2001 22:23:47 +0900 パッケージを作成。 # debuild -us -uc dpkg-buildpackage: source package is qpopper dpkg-buildpackage: source version is 4.0.2-1.drac dpkg-buildpackage: source maintainer is root <root@discypus.jp> dpkg-buildpackage: build architecture is i386 debian/rules clean : (略) dpkg-deb: building package `qpopper' in `../qpopper_4.0.2-1.drac_i386.deb'. dpkg-genchanges dpkg-genchanges: not including original source code in upload dpkg-buildpackage: binary and diff upload (original source NOT included) Now running lintian... warning: lintian's authors do not recommend running it with root privileges! Finished running lintian. 特にエラーができてなかったので、できたパッケージをインストール。 # dpkg -i qpopper_4.0.2-1.drac_i386.deb Selecting previously deselected package qpopper. (Reading database ... 25564 files and directories currently installed.) Preparing to replace qpopper 4.0-2drac (using qpopper_4.0.2-1.drac_i386.deb) ... Unpacking replacement qpopper ... Setting up qpopper (4.0.2-1.drac) ... 動作確認。メールソフトで qpopper にアクセスしてから、dracのデータベースを調べて、更新されていることを確認します。 # db_dump -p /etc/mail/dracd.db format=print type=btree bt_minkey=2 db_pagesize=512 HEADER=END 192.168.1.3\00 992874024\00 dracd.db のパーミッションをかえておきます。 # chmod 600 /etc/mail/dracd.db これで完了。最後に、qpopperをうっかりアップデートしないよう、dselect か dpkg で hold しておきます。 [編集]postfixにdracの設定を行う。 #
drac と qpopper-drac をインストールしておきます。 # apt-get install drac qpopper-drac dracとqpopper-dracの動作を確認しておきます。 # ps axw | grep dracd 475 ? S 0:00 /usr/sbin/rpc.dracd -i -e 30 /var/lib/drac/dracd.db 1157 pts/1 S 0:00 grep dracd (dracが動作中。動作してなかったら、/etc/init.d/drac start すること。) メール受信動作をしてから、dracd.dbが更新されているかどうか確認する # grep drac /var/log/mail.info (略) Sep 21 15:44:53 server in.qpopper[1179]: [drac]: login by hoge from host client.example.jp (192.168.1.2) [drac.c:47] (qpopperとdracがちゃんと動いてる) # ls -l /var/lib/drac/dracd.db -rw-r--r-- 1 root root 1024 Sep 21 15:44 /var/lib/drac/dracd.db (更新されている) # strings /var/lib/drac/dracd.db 1032591292 192.168.1.2 (内容も合ってる。) dracとqpopperがちゃんと動いていたら、次に、/etc/postfix/main.cf に次の内容を追加(あるいは既存の項目を修正)します。 smtpd_recipient_restrictions = permit_mynetworks check_client_access btree:/var/lib/drac/dracd check_relay_domains main.cfの検査 # postfix check # postconf -n (追加した smtpd_recipient_restrictions がPostfixに認識されているかどうか確認する) postfixの再起動 # /etc/init.d/postfix restart ログファイルにエラーがあるかどうか確認します。 # tail /var/log/mail.err dbmの種類が違うと、/var/log/mail.err に次のエラーが記録されます。 Sep 21 15:49:48 server postfix/smtpd[1528]: fatal: open database /var/lib/drac/dracd.db: Invalid argument この場合、main.cfのbtree: の部分を hash: にして試してみてください。……でダメなら、dracをソースからコンパイルして、dbmの種類をPostfixが使える物に変えてみてください。 エラーを解消したら、dracを止めてリレーができないこと、そしてdracを起動してリレーができることを確認して完了です。 [編集]記事 #[編集]dracでTCPWrapperに対応したサービスをPOP before XXXX化する #CodeZine:TCPWrapperに対応したサービスの「POP Before」化を実現する (2005-09-01) |