Linux Install Memo

サーバー管理者によるLinux関連ソフトのインストールメモ

Home » □postfix = drac + qpopper

□postfix = drac + qpopper

参考URL:
http://www.postfix.org/
http://mail.cc.umanitoba.ca./drac/
http://qpopper.sourceforge.net/
http://www.tenchi.ne.jp/~yoko/server/pop_before_smtp.html

sendmail はやめて postfix を使うことにする。
だって設定簡単だし、速いし、DM送信にはもってこい… うそ、
ML送信にはもってこいです。(^^;

tar xvzf package/postfix-2.5.6.tar.gz
cd postfix-2.5.6/

本来ならこのあとで

make (なんとたったこれだけ!)

だけで良い。

ただ、以前のPlamoはDBM系がちゃんと入らないので、このままでは
postfixがまともに動いてくれない可能性があります。というわけで、
他のソフトと同様に dbm が入ってますよー、と教えてあげないと
いけません。

make tidy
make makefiles CCARGS=”-DHAS_DB” AUXLIBS=”-ldb”
make

HAS_DB を何度も宣言すんなとぶつぶつ言われるが warning なので無視!!
あとはユーザー「postfix:postdrop」を追加。前の年月日が着くバージョン
ではグループは mail などを流用でもかまわなかったのだが、正式バージョン
では兼用はいけないらしい。(ユーザーIDとグループ名も同じにしては
いけない?)ちなみにPlamo-3.0ではこのユーザーとグループはすでに用意
してあります。

補足:もし postfix とか postmap とかが動かない場合
(gdbm-1.x と gdbm-2.x との違いによる問題)

make makefiles CCARGS=”-DHAS_DB -I/usr/local/include” AUXLIBS=”-L/usr/local/lib -ldb”
make

としてください。要はどこに入っているdbmを使うかってことです。

というわけで、あとは Postfix の諸々必要な設定をすればOK。

後は起動すればいいけど、Plamo-4.x になると /etc/rc.d/inet.d/postfix
に起動スクリプトが移動している。/etc/rc.d/rc.inet2 から呼んでいるの
だけど、ちゃんと動かないみたいだし…

というわけでPostfixを呼出し部分を書き換える。

> # Postfix
> SERV=”$SERV postfix:start”

もしくは、/etc/rc.d/rc.M の適当なところで

> if [ -x /usr/sbin/postfix ]; then
>??? echo “Starting postfix daemon (/usr/sbin/postfix start)…”
>??? /usr/sbin/postfix start
> fi

としてもよい。

/var/spool/mqueue の中に何も無ければ、

make install

です。前のバージョンでは INSTALL.sh を動かしていましたが、「普通」
のインストール方法になりました。なお、既に postfix が入っている場合
には、

make update

でいいらしいです。でも試していませんので悪しからず!

make install の場合にはいろいろ聞かれるが setgid の所で、デフォルト
では [no] となっていたら postfix とする。他はそのまま。
その後、/etc/postfix/の中にあるファイルをいろいろといじることになる。
まず起動させるためには、

main.cf:
> #myhostname = host.domain.name
:
> #mydomain = domain.name
:

を、コメントをはずしてホスト名とドメイン名を設定してください。

それから、まずローカルに送信できないと言う件については

main.cf:
> mydestination = $myhostname, mail.$mydomain, $mydomain, localhost

と変更し、「/usr/sbin/postfix reload」とする。

「sendmail.aa」に変わるバーチャルホストの設定は、main.cf にて
下記のように行う。バーチャルホストで、届いたアドレスを別のアドレス
に転送する場合には、/etc/postfix/virtual を使う。

main.cf:
> mydestination =
> localhost,
> $myhostname,
> mail.$mydomain,
> $mydomain,
> yebisu.shibuya.tokyo.jp,
> mail.yebisu.shibuya.tokyo.jp,
> tomsawyer.gr.jp,
> mail.tomsawyer.gr.jp,
> neec.hachioji.tokyo.jp,
> mail.neec.hachioji.tokyo.jp
>

あとはあちこちのWEBに書いてあるPostfixの説明をよく読んで設定すること。
ちなみにMLもありますから、いろいろ知りたい方は入ったほうがいいでしょう。

さて、続いて「DRAC」のインストール。これで「POP before SMTP」を実現
しましょう。でないとSPAMの温床になりますよ!

mkdir dracd
cd dracd/
tar xvzf ../package/drac-1.12.tar.Z

さらに Linux の場合には、「Makefile」を、

> For Linux:
> #INSTALL = /usr/ucb/install
> #EBIN = /usr/local/sbin
> #MAN = /usr/local/man/man
> INSTALL = install
> EBIN = /usr/sbin
> MAN = /usr/local/man/man

> #DEFS = -DTI_RPC -DFCNTL_LOCK -DSYSINFO
> DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -DREQ_HASH

> #CFLAGS = $(DEFS) -g -I/usr/local/src/db/db-4.1.25/build_unix
> CFLAGS = $(DEFS) -g

> #LDLIBS = -L/usr/local/src/db/db-4.1.25/build_unix -lnsl -ldb-4.1
> LDLIBS = -ldb

> #TSTLIBS = -L. -ldrac -lnsl
> TSTLIBS = -L. -ldrac

> #MANLIB = 3
> #MANADM = 1m
> MANLIB = 3
> MANADM = 8

として

make
make install
make install-man

そしたら、Plamo-4.x なら /etc/rc.d/initd/dracd で起動してるので

/etc/rc.d/init.d/dracd stop
/etc/rc.d/init.d/dracd start

で平気。起動後プロセスが動いていないなら、-i オプションが必須に
なっているので、/etc/rc.d/initd/dracd の中を書き直し。

> start)
>???????? if dracd_running; then
>???????????????? echo “$DAEMON is already running” >&2
>???????? else
>???????????????? echo “starting $DAEMON” >&2
>???????????????? $DAEMON -i -e 15 $DBFILE &
>???????? fi
> ;;

まぁ実際のところは/etc/rc.d/rc.inet2 を「rc.darcd」が起動するように
修正してもいいかも。このスクリプトが今ひとつだから。

> # Start the various SUN RPC servers.
> if [ -f ${NET}/rpc.portmap ]; then
>?? if [ -f /usr/sbin/rpc.dracd ]; then
>???? echo -n ” dracd”
>???? /usr/sbin/rpc.dracd -i -e 15 /etc/postfix/dracd.db &
>?? fi
>?? :
>?? :

上記のように、rpc.portmap があったら、その直後に入れたほうがいい。

補足:もし rpc.dracd が動かない場合
(gdbm-1.x と gdbm-2.x との違いによる問題)

ひょっとして gdbm-1.x と gdbm-2.x を一緒に入れていませんか? というか
うちはそうでした。そんなときには、Makefile をもう少し書き足してあげると
ちゃんと動くと思います。

> CFLAGS = $(DEFS) -g -I/usr/local/include
> LDLIBS = -L/usr/local/lib -ldb

とこんな感じです。

さて qpopper の作り直し。qpopper-4.0.3 以降になってから超らくちんに
なりました。qpopper のソースディレクトリに移って、まずはPOP3用に

cd /usr/src/qpopper4.0.9/
make realclean
./configure \
–prefix=/usr \
–enable-specialauth \
–with-drac=/usr/src/dracd \
–enable-standalone \
–enable-auto-delete
make
install -s ./popper/popper /usr/sbin/popper_pop3

続いてAPOP用に

make realclean
./configure \
–prefix=/usr \
–enable-specialauth \
–enable-apop=/etc/pop.auth \
–with-popuid=pop \
–with-drac=/usr/src/dracd/ \
–enable-standalone \
–enable-auto-delete
make
install -s ./popper/popper /usr/sbin/popper_apop

でもって、postfix の設定の追加ですが、

> smtpd_recipient_restrictions =
>???????? permit_mynetworks
>???????? reject_non_fqdn_recipient
>???????? reject_unauth_pipelining
>???????? check_client_access hash:/etc/postfix/dracd ★
>???????? reject

上記のパラメーターを適当なところに追記してあげればOK。

これは上からの順番でチェックをしていきます。
なので、「POP before SMTP」や「SMTP AUTH」のチェックは
「check_relay_domains」の前にしないと怒られちゃいます。

★の行が dracd で作られたIPアドレステーブルファイルを参照するよ、
という意味。

Plamo-4.x の場合には btree:/etc/postfix/dracd になっているけど、
今回のように rpc.dracd を作るとファイルの中が hashタイプになる
ので hash:/etc/postfix/dracd とすること。

ちなみに rc.dracd の起動では出力先ファイルを「/etc/postfix/dracd.db」
とかのようにきちんと明示してあげないといけない。なぜなら postfix は
指定されたファイルの最後に勝手に「.db」をつけてしまうから。

これでSPAMの踏み台にされることが避けられます!!

と思ったけどさらに厳重にするために補足追加。

> smtpd_sender_restrictions = reject_unknown_sender_domain

これを /etc/postfix/main.cf の最後に追加すると $mydestination に
かかれていないドメインのアドレスからの送信は受け付けない。

動作確認としては、とりあえずインストールしているサーバーに
対してメールソフトで受信行為をしてみるか、または手動 TELNET
でPOP3プロトコルをしゃべってみる。

受け付けてくれなかったら、/etc/hosts.allow と /etc/hosts.deny を
チェックしてみよう。

POP3を一度も受け付けていない場合には

> # db_dump -p /etc/postfix/dracd.db
> VERSION=3
> format=print
> type=hash
> HEADER=END
> DATA=END

となっているが、一度でもPOP3の認証が通ると、

> # db_dump -p /etc/postfix/dracd.db
> VERSION=3
> format=print
> type=hash
> HEADER=END
>? 192.168.0.23? ←受信しに来たパソコンのIPアドレス
>? 1178522763??? ←そのときのタイムスタンプ
> DATA=END

こんな風になる。

でも「POP before SMTP」だけだとアウトルックな初心者が泣いてしまう
ので、アウトルックは「とても」いやなのですが「SMTP AUTH」も入れて
あげましょう。はー…

Name of author

Name: admin

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です