POP before SMTP の導入(sendmail/uw-ipop3d/DRAC)
DRAC を使って POP before SMTP を仕掛けます。
○DRAC の動作について
DRAC による POP before SMTP は、 DRAC のサーバプロセス、DRAC と通信するようにパッチを当てた POP サーバ、DRAC のデータベースを参照するように設定された SMTP サーバから構成される。
rpc.dracd
- DRAC のサーバプロセス。
クライアントのIPアドレスのデータベース(dracd.db)を管理する。
ipop3d と通信して IP アドレスをデータベースに登録、一定時間後(デフォルト30分)に登録した IP をデータベースから消去する。
ipop3d
- drac のパッチを当てた POP サーバ。
POP 認証が成功すると rpc.dracd に接続先の IP アドレスを通知してデータベースに登録してもらう。
通知はライブラリ libdrac.a の dracauth() 関数によって行う。
sendmail
- データベース(dracd.db)に登録されている IP を参照し、メールの中継を許可するように設定しておく。
○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 を再起動させれば設定完了です。
動作確認してみてください。確認方法は…ま、てきとーに(ぉ
戻る