POP before SMTP の導入(sendmail/uw-ipop3d/DRAC)

DRAC を使って POP before SMTP を仕掛けます。

○DRAC の動作について

DRAC による POP before SMTP は、 DRAC のサーバプロセス、DRAC と通信するようにパッチを当てた POP サーバ、DRAC のデータベースを参照するように設定された SMTP サーバから構成される。

rpc.dracd ipop3d sendmail

○DRAC のインストール

http://mail.cc.umanitoba.ca/drac/ から dracd.tar.Z を拾ってくる。

#mkdir drac
#cd drac/
#tar zxf ../dracd.tar.Z

INSTALL を読んで Makefile を書き換える。
   For Linux:
        INSTALL = install
        EBIN = /usr/local/sbin
        MAN = /usr/local/man/man
        DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C
        CC = <your compiler>
        RANLIB = :
        CFLAGS = $(DEFS) -g
        LDLIBS = -ldb
        TSTLIBS = -L. -ldrac
        RPCGENFLAGS = -C
        MANLIB = 3
        MANADM = 8
と書いてあった。
修正した後、make してインストールする。

#make
#su
$make install
$make install-man
$cp libdrac.a /usr/local/lib/

○dracd.allow の設定

/etc/mail/dracd.allow を書く。

255.255.255.255 127.0.0.1
255.255.255.255 111.222.333.444 ← サーバの IP アドレス。

以上で drac のインストール終わり。

#/usr/local/sbin/rpc.dracd &

として dracd を起動させる。
/etc/mail/dracd.db が作成されればたぶん動いてる。

リブートしたときにも起動されるようにスタートアップスクリプトにも書いておく。
Plamo Linux の場合、/etc/rc.d/rc.inet2 などに書く。

○ipop3d の修正

ipop3d に drac のパッチを当てる。
uw-imap2000a用 の ipop3d のパッチを作成。→ipop3d.c.patch
これを使って ipop3d にパッチを当てる。

#cd imap-2000a/src/ipopd
#patch -p1 < ipop3d.c.patch

このディレクトリにある Makefile も修正する。
LDFLAGS に -ldrac を追加しておく。

LDFLAGS = $(CCLIENTLIB) `cat $C/LDFLAGS` -ldrac

以上でパッチ当て終わり。ipop3d を作り直してインストールする。

○ipop3d & drac の動作確認

db_dump コマンドで dracd.db の内容を確認する。

#db_dump -p /etc/mail/dracd.db

format=print
type=btree
bt_minkey=2
db_pagesize=512
HEADER=END
111.222.333.444 ← IP アドレス
976901555 ← 時刻らしい

POP アクセスしてみて IP が登録されるか確認しよう。
登録されれば drac & ipop3d の動作はOKである。

○sendmail.cf の修正

conf.mc に修正を加えて sendmail.cf を作り直す。
define(`SMTP_MAILER_MAX',`1000000')dnl
define(`confAUTH_MECHANISMS',`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
define(`SMART_HOST', `smtpf:LMTP')dnl
include(`cf/generic-linux.mc')dnl
FEATURE(`access_db',`hash -o /etc/mail/access')dnl
FEATURE(`always_add_domain')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
FEATURE(nocanonify)dnl
MAILER_DEFINITIONS
Msmtpf, P=/usr/libexec/smtpfeed, F=mDFMuXz, S=11/31, R=21, E=\n, L=990,
        T=DNS/RFC822/SMTP, A=smtpfeed -V
MAILER(smtp)dnl
LOCAL_CONFIG
Kdrac btree /etc/mail/dracd
LOCAL_RULESETS
SLocal_check_rcpt
# allow recent POP/IMAP mail clients to relay
R$*                             $: $&{client_addr}
R$+                             $: $(drac $1 $: ? $)
R?                              $@ ?
R$+                             $@ $#OK
LOCAL_CONFIG 以降が追加した部分である。

間隔が広い部分はTABで区切ってあるので注意。
これで sendmail.cf を作り直す。

#m4 m4/cf.m4 conf.mc > sendmail.cf

sendmail.cf を /etc/mail/ にコピーして sendmail を再起動させれば設定完了です。
動作確認してみてください。確認方法は…ま、てきとーに(ぉ


戻る