4月 2, 2009 - コンピューター    FreeBSD7でpostfix+qpopper+dracd はコメントを受け付けていません

FreeBSD7でpostfix+qpopper+dracd

 postfix、qpopper、dracdの組み合わせで、POP before SMTPが動くサーバを立てるためのメモ。

 qpopperはinetdから呼び出したい。また、dracdを動かすにはrpcbindが動いてないとダメ。postfixはブート時に自動で走るようにしておく。

 まず、/etc/rc.confの設定。

sendmail_enable=”YES”
rpcbind_enable=”YES”
rpcbind_flags=”-s”
dracd_enable=”YES”
dracd_flags=”-i -e 10 /usr/local/etc/dracd.db”
inetd_enable=”YES”

としておく。
 dracd_flagsは、dracdが走る時のパラメータ。dracd.dbの在処までは明示しなくてもいいかもしれないが、一応念のため渡しておく。

 hosts.allowのrpcbindの分は、

rpcbind : ALL : deny
rpcbind : localhost : allow

とする。

 postfixはソースから拾ってきてインストール。特にオプションを指定しなくてもよい。ソースから入れると、設定ファイルは/etc/postfix/main.cfになる(portsから入れると/usr/local/etc/postfix/main.cf。両方あって紛らわしい時は一方を削除しておく)。

 main.cfのうち、pop before smtpに関係したところを次のように設定。mynetworksの設定が緩すぎると、研究室内のクライアントが接続しても、通常の認証扱いでdracd.dbが変わらなかったりする。

mynetworks = サーバのIP/32
alias_database = hash:/etc/aliases
smtpd_recipient_restrictions = permit_mynetworks,check_client_access,btree:/usr/local/etc/dracd,check_relay_domains,reject
mynetworks_style = host

 smtpd_recipient_restrictionsで指定したdracd.dbの在処が、dracd起動オプションと同じであることを確認。
/etc/aliasesを指定すると、/etc/aliases.dbを見ているっぽい。もし無ければ、rootでnewaliasesを実行するとデータベースが更新される。
 mynetworksは、研究室内は無条件で使わせるといった場合はIPの範囲指定でもいいけど、そうでないなら、サーバのIPだけにしてpopからdracdに登録させて使う方が良さそう。

 qpopperをdracを使うようにインストールするには、先にdracが入ってないとだめ。
 dracはソースから入れるとMakefileの変更などが面倒くさいので、portsから入れる。

cd /usr/ports/mail/drac
make install

とやって、

/usr/local/sbin/rpc.dracd
/usr/local/libdrac.a

ができていればよい。起動スクリプトの/usr/local/etc/rc.d/dracdがインストール時に作られる。

/usr/local/etc/dradc.allowを設定。dracd-allow.sampleそのままコピーでよいが、

255.255.255.255 127.0.0.1

も追加しておいた。

 dracdの起動は、

/usr/local/sbin/rpc.dracd -i -e 10 /usr/local/etc/dracd.db

 dracdの動作確認は、

/usr/ports/mail/drac/work/testing 127.0.0.1 111.222.333.444

などと叩いてから、

makemap -u btree /usr/local/etc/dracd.db

して、登録されていれば正常動作している。
 ただし、このチェックは一通りインストールして、一度リブートして、rc.confの変更が反映されてから確認した方が良さそう。

 qpopperのコンパイルは、ソースを拾ってきて展開後

./configure –enable-apop=/etc/pop.auth –enable-popuid=pop –with-drac=/usr/local/lib
make install

でよい。
 この設定だと、apopの認証ファイルは/etc/pop.authになる。
 もし、gdbmが無いと言われる時は、インストールしてなければ入れる。既に入っているなら

ln -s /usr/local/lib/libgdbm.a /usr/lib/libgdbm.a

などとやって、見えるようにしてやる。
 ./configure時のメッセージで。

Compiling in DRAC support
checking for dracauth in -ldrac… yes

と出ていることを確認。
 コンパイル終了後、エラーが出る場合は、Makefileと、popper/Makefileをエディタで開いて、後の方にある、

@${INSTALL} -s -m 0755 -o root popper ${installdir}/popper
@echo “Installed popper as ${installdir}/popper”

の@を取り除く。他の部分も同様に取り除く。
 /usr/local/sbinの下にpopperとpopauthができる。

 /etc/inetd.confの設定。

pop3 stream tcp nowait root /usr/local/sbin/popper popper -p2 -s -R

 変更したらinetdにHUPを送る。
 qpopperのオプションの意味は、

-d
Configure時に–enable-debugging を指定しておくと、デバッグログをsyslogに出せる。

-p 0|1|2|3|4
プレーンテキスト(plainパスワードの扱いを設定する。
0 (defaults) :「APOPデータベースに存在しないユーザ」のみ、通常のパスワード(平文)による認証を許す
1 : すべてのユーザ(APOPデータベースに存在しないユーザも)において、通常のパスワード(平文)による認証を許す
2 : 「APOPデータベースの中に存在するユーザ」であっても、通常のパスワード(平文)による認証を許す
3 : Loopbackアドレス(127.0.0.1)からの接続に関してのみ、通常のパスワード(平文)による認証を許す
4 : TSL/SSLによる通信の場合のみ、通常のパスワード(平文)による認証を許す

-R
クライアントIPの逆引き(reverse lookups)をOFFにする。ログファイルに出る、逆引きできませんでしたというあんまり意味のないエラーが出なくなる。

-s
syslogでログを記録する。

-T
クライアントからコマンドが到着するまでサーバが待つ時間(秒)を設定。デフォルト120秒。

 popperの場所はインストールの方法によって異なるので注意。
 実は最初、/usr/sbin/popperになってて、そっちはシンボリックリンクではなく別のpopperだったため、dracが動かなくて半日嵌った(泣)。
 /etc/hosts.allowは、

popper : ALL : allow

と、とりあえず制限はしない方針で。
 apop認証のユーザー名とパスワードは、とりあえずrootで

/usr/local/sbin/popauth -user ユーザー名 パスワード

とやると追加される。

 rc.confをいじってるので、動作が不穏なら論よりboot。
 メールクライアントからつないで、/usr/local/etc/dracd.dbにIPが登録されることを確認する。さらに、外部のアドレス宛にメールを送信してみて、送られていればOK。

Comments are closed.