[[DRAC(Dynamic Relay Authorization)についての日本語情報]]
#contents
----
* 当ドキュメントについて [#u2acedbc]
DRAC のアーカイブ【 drac.tar.Z 】付属の【 INSTALL 】ドキュメントを和訳したものです。
* INSTALL [#c6fa4a23]
この取り扱い説明書は特定のオペレーティング・システム(OS)とソフトウェア構成のためのものです。構成が一致しない場合でも、少なくとも例の役には立つでしょう。DRAC ウェブページ http://mail.cc.umanitoba.ca/drac/index.html では最新の詳細な説明書を表示しています。
今 DRAC は Debian Linux に採用されています。Debian Linux ではコンパイル作業は不要です。以下の URL から情報を取得してください。
>>http://packages.debian.org/drac&br;
http://ftp.debian.org/debian/pool/main/d/drac/&br;
http://buildd.debian.org/build.php?arch=&pkg=drac&br;
http://bugs.debian.org/drac
<<
インストールにあたって、まず sendmail がコンパイルされた時と''同じ Barkeley db のバージョンで DRAC をコンパイルしなくてはいけません''。場合によっては sendmail のコンパイル時と現在ではシステムにセットアップされているバージョンが違うかもしれないためです。`strings /usr/lib/sendmail | grep -i sleepy' として調査する方法もあります((訳者の環境では、どのように調査に役立つか分かりませんでした……Sleep という文字列はありました))。 Barkeley((バークレー)) db パッケージのバージョン 2.x, 3.x, 4.x (http://www.sleepycat.com/)が推奨です。バージョン 1.85 でも動作します。重要な事は、sendmail コンパイル時と同じバージョンのものを用いる事です。
1) サーバのシステムにあわせて Makefile を編集します。
> Soralis 用の設定:
INSTALL = /usr/ucb/install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DTI_RPC -DFCNTL_LOCK -DSYSINFO
CC = <your compiler>
RANLIB = :
CFLAGS = $(DEFS) -g -I/path/to/db/include
LDLIBS = -L/path/to/db/library -lnsl -ldb
TSTLIBS = -L. -ldrac -lnsl
MANLIB = 3
MANADM = 1m
> SunOS 4.x 用の設定:
INSTALL = install
EBIN = /usr/local/etc
MAN = /usr/local/man/man
DEFS = -DSOCK_RPC -DFLOCK_LOCK -DGETHOST
CC = <your compiler>
RANLIB = ranlib
CFLAGS = -Dstrtoul=strtol $(DEFS) -g -I/path/to/db/include
LDLIBS = -L/path/to/db/library -ldb
TSTLIBS = -L. -ldrac
RPCGENFLAGS = -I
MANLIB = 3
MANADM = 8
> BSDI 用の設定:
INSTALL = install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST
CC = <your compiler>
RANLIB = ranlib
CFLAGS = $(DEFS) -g -I/path/to/db/include
LDLIBS = -L/path/to/db/library -ldb
TSTLIBS = -L. -ldrac
MANLIB = 3
MANADM = 8
> IRIX 6.2 用の設定:
INSTALL = /usr/bin/X11/bsdinst
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DTI_RPC -DFCNTL_LOCK -DSYSINFO -D_SVR4_TIRPC
CC = <your compiler>
RANLIB = :
CFLAGS = $(DEFS) -g -I/path/to/db/include
LDLIBS = -L/path/to/db/library -lnsl -ldb
TSTLIBS = -L. -ldrac -lnsl
MANLIB = 3
MANADM = 1m
> NetBSD 用の設定:
INSTALL = install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C
CC = <your compiler>
RANLIB = ranlib
CFLAGS = $(DEFS) -g -I/path/to/db/include
LDLIBS =
TSTLIBS = -L. -ldrac
RPCGENFLAGS = -C
MANLIB = 3
MANADM = 8
> FreeBSD 2.2.x 用の設定:
INSTALL = install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DSOCK_RPC -DFLOCK_LOCK -DGETHOST -DDASH_C
CC = <your compiler>
RANLIB = ranlib
CFLAGS = $(DEFS) -g -I/path/to/db/include
LDLIBS =
TSTLIBS = -L. -ldrac
RPCGENFLAGS = -I -C
MANLIB = 3
MANADM = 8
> FreeBSD-4.1 with gdbm-1.8 用の設定:
INSTALL = install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DSOCK_RPC -DFLOCK_LOCK -DGETHOST -DDASH_C
CC = cc
RANLIB = :
CFLAGS = $(DEFS) -g -I/usr/local/include
LDLIBS =
TSTLIBS = -L. -ldrac
RPCGENFLAGS = -C
MANLIB = 3
MANADM = 1m
> 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 -I
MANLIB = 3
MANADM = 8
> AIX 用の設定:
INSTALL = /usr/ucb/install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DD_BSD -DBSD_INCLUDES -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDEBUG
CC = <your compiler>
RANLIB = :
CFLAGS = $(DEFS) -g -I/path/to/db/include
LDLIBS = -L/path/to/db/library -ldb
TSTLIBS = -L. -ldrac
RPCGENFLAGS =
MANLIB = 3
MANADM = 1m
2) パッケージをコンパイルします
$ make
3) サーバにインストールします((訳者注 - プロンプトが # になっているのは root 権限でという意味))
# make install
4) man ページのインストール
# make install-man
5) dracd 起動スクリプトのインストール。Solaris は dracd-setup を調整して /etc/init.d にインストールし、S87dracd を /etc/rc2.d にリンクする((訳者注 - Linux 系であれば dracd-setup.linux というファイルがあります))
6) dracd デーモンの起動。Solaris の場合は
# sh /etc/init.d/dracd-setup start
7) POP/IMAP サーバ側の調整:dracauth() クライアント機能は利用者が各々メールを受信するというサーバ環境に適しています。利用者の認証が行われる祖、すぐに dracauth() がコール((プログラム内での関数呼び出し機能のこと))されます。メールサーバがPOP/IMAP と SMTP と分かれている時には、より複雑なインターフェースを必要とします。詳細は testing.c と dracauth.c を参照してください。POP/IMAP サーバとメールサーバが同じマシン上で動作している場合は、サーバホスト名を"localhost"として明示できます。むしろ、ランタイム・コンフィギュレーション・パラメータとして用いる方がよいでしょう。以下では qpopper で利用するためのサンプルのパッチを記述しておきます。
--------8<--------
*** pop_pass.c-nodrac Sat Jun 27 10:56:00 1998
--- pop_pass.c Wed Jul 22 22:54:04 1998
***************
*** 19,24 ****
--- 19,28 ----
#include <pwd.h>
#include "popper.h"
+ #ifdef DRAC_AUTH
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #endif /* DRAC_AUTH */
/* This error message is vague on purpose to help reduce help improve
***************
*** 502,507 ****
--- 506,519 ----
/* Initialize the last-message-accessed number */
p->last_msg = 0;
+
+ #ifdef DRAC_AUTH
+ {
+ char *err;
+ if (dracauth("localhost", inet_addr(p->ipaddr), &err) != 0)
+ pop_log(p,POP_PRIORITY,err);
+ }
+ #endif /* DRAC_AUTH */
/* Authorization completed successfully */
return (pop_msg (p,POP_SUCCESS,
*** make.solaris2-nodrac Sat Feb 17 14:25:15 1996
--- make.solaris2 Wed Jul 22 23:06:47 1998
***************
*** 39,45 ****
-DAUTH -DMAILOCK -DDEBUG -DBINMAIL_IS_SETGID \
-DNO_AT_HOST -DNFS_SPOOL -DPOP_ACCT -DPOP_LLOG \
-DNONAUTHFILE=\"/etc/popper.deny\" \
! -DBULLDIR=\"/var/spool/bulls\"
TARGET = popper.solaris2
--- 39,45 ----
-DAUTH -DMAILOCK -DDEBUG -DBINMAIL_IS_SETGID \
-DNO_AT_HOST -DNFS_SPOOL -DPOP_ACCT -DPOP_LLOG \
-DNONAUTHFILE=\"/etc/popper.deny\" \
! -DBULLDIR=\"/var/spool/bulls\" -DDRAC_AUTH
TARGET = popper.solaris2
***************
*** 56,62 ****
${TARGET}: ${OBJS}
! ${CC} ${OBJS} -o ${TARGET} -lsocket -lnsl -lresolv -lkrb -lmail
tar: ${SRCS} ${DOCS} ${MAKEFILE}
rm -f ${TAR} *.Z*
--- 56,62 ----
${TARGET}: ${OBJS}
! ${CC} ${OBJS} -o ${TARGET} -L/usr/local/src/drac -ldrac -lsocket -lnsl -lresolv -lkrb -lmail
tar: ${SRCS} ${DOCS} ${MAKEFILE}
rm -f ${TAR} *.Z*
--------8<--------
8) メールサーバ(MRA)をインストールします。qpopper の場合であれば `make' `make install' です。
9) sendmail.cf の調整を行います。sendmail 8.9.0 では以下の行を .mc ファイルの LOCAL_CONFIG 配下に記述しなければいけません。
# dynamic relay authorization control map
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
(※訳者注 - sendmail.mcへ記入するとき、左側右側の間にはタブが入っています。空白だと機能しませんので、入力の際には注意が必要です)
そして .cf ファイルを再作成します((m4 sendmail.mc > sendmail.cf))。
19
10) sendmail を再起動します。SMTP とキュー(queue)デーモンは再起動させる必要があります。