著者 Yutaka Sato Electrotechnical Laboratory (AIST,MITI), Tsukuba, Ibaraki 305, JAPAN 訳者 Hiroshi Suzuki Columbia Information System, inc. 注意事項 この文書は、平文テキストです。(man化する予定ではいますが) なお、この文書は、Manual.txtの前バージョンに6.0.0の差分を加えて 翻訳(含意(誤)訳?)したものです。 DeleGateは、すさまじい勢いで進化しているので、 ##必ず##、最新のManual.txtと比較して読んでください。 また、初心者の方は、http://wall.etl.go.jp/delegate/ にて、 Tutorial for the first glance(DeleGate初心者向け手引き簡略版)をぜひご一読ください。 佐藤豊さんに感謝 m(__)m 間違っているところは、ぜひ、指摘してくださいね。(^^;; (英語は母国語ではないので。) 翻訳更新日 1999/11/02 翻訳履歴 1997/12/08 4.3.x 1998/08/10 5.6.0 1998/08/19 5.6.4 1998/09/01 5.6.6 1998/10/07 5.7.0 1998/11/02 5.7.2 1998/12/04 5.8.1 1998/12/28 5.8.4 1999/03/10 5.9.0 1999/06/04 5.9.2 1999/07/26 5.9.2 ( teranisi@bpo.co.jp さまのご指摘による修正 ) 1999/09/24 5.9.5 1999/11/02 6.0.0 alpha ------------------------------ ここから ------------------------------------- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  未完成 (^_^;  <<<<<<<<<<<<<<<<<<<<<<<<<<<<< ((((((( DeleGate ホームページはこちら http://www.delegate.org/delegate/ ))))))) ((((((( まず http://www.delegate.org/delegate/tutorial/ を読んでください))))))) DELEGATED(8) メンテナンス用コマンド群 DELEGATED(8) 名称 delegated - DeleGate サーバ 書式 delegated -P<ポート番号> [-v[v|t|s|D]] [-F<機能>] [name=value]* 説明 delegated は、HTTP、Gopher、whois、FTP、Telnet、NNTP、SMTP、POP、などの TCP/IPプロトコルを中継するDeleGateのサーバプロセスです。 DeleGateは、セキュリティのためファイアウォールによって分離されたサーバ クライアント間の仲介を行います。 DeleGateはクライアントに代わって、キャッシュ、DNS名前解決、JISコード変換 機能を提供します。 DeleGateはマウント機能をサポートします。これは、分散したリモートホスト (それらはファイアウォールによって隠されているかもしれません)上のサー ビスをひとつのホスト上に見せる機能を提供します。 1組のDeleGateサーバで、トンネルを形成できます。DeleGate間の通信は、 TCP/IPに依存しないので、電話回線でのtty I/OのようなTCP/IP以外のプロトコ ルを介してTCP/IP接続が可能です。 DeleGateを使用した場合、他の(SOCKSやPROXY_HTTPなど)代理サーバと異なり、 HTTPとGopherクライアントに何も変更する必要がありません。よって、各種プラ ットフォーム上の既存クライアントプログラムはDeleGateの恩恵に与れます。 (短所をご覧ください) クライアント要求をDeleGateにリダイレクトするとき、それは、応答メッセージ 中の、HTTPとGopherの実在ディレクトリ(DirEnt)のURLを書換えます。 よって、URLまたは、DirEntを参照する要求は再びDeleGateのポートに誘導され ます。 オリジナルのホストとポートは特別なフォーマットにエンコードされ、URL/ DirEntの選択パートに埋め込まれます。 この、双方向書換え機構によって、マウント機能を実現しています。 マウントの方法、たとえば、http://hosti/をhttp://hostx/iiiとして ユーザに 見せたいとき、これを実現するためには、応答メッセージ中の といったリンク情報を、 のように書換えます。 delegatedには、'SPECIALIST'(ある機能に特化したタイプ)と'GENERALIST' (多種の機能を受け入れるタイプ)の2タイプがあります。 クライアントから見た場合、SPECIALIST delegatedは、指定したホスト上の指定 したプロトコルのサーバに見えます (それは、リモートホスト上のhttpdやgopherdのように振舞います)。 SPECIALISTは、サーバからクライアントへの応答をリレーする際に、URLと DirEntを書換えます。SPECIALISTが目的サーバのディレクトリに到達できなかっ たり、キャッシュサーバへ接続しようとするとき、GENERALIST delegatedに要 求を転送し、応答を受信します。GENERALISTは 'DeleGate手続き'による要求を 受理し、サーバに要求を中継した上で、応答データをキャッシュに保存します。 以下に、標準的な、DeleGateサーバ接続構造を表示します。 # # # # P client -> SPECIALIST -+ [A] # [B] # +-> P server *protocol P +-> GENERALIST --+-> GENERALIST -+-+ | *without DNS # *with DNS # | Q client -> SPECIALIST -+ *with cache # *accept [A] # +-> Q server *protocol Q # only # *JIS code conv. # # GENERALIST[A]は内部ネットワーク上のホストで、他のホストからの要求を受け 付けます。ところが、ファイアウォール上のGENERALIST[B]は、GENERALIST[A] からの要求のみを受け付けます。この構成の場合、GENERALIST[B]は、 Proxy_httpdに置換えることができます。他の構成ではSPECIALISTは、直接 GENERALIST[B]に接続することができます。 GENERALISTは、何ホップでも連結することができ、これにより、多重のファイア ウォールを克服でき、また、複数キャッシュを複数ホスト上で、複数の有効期限 をもたせるなどができます。 コマンドラインオプション -P オプションは、<ポート番号>で、サーバのポート番号を指定します。 このオプションはdelegatedがinetd(8)により呼び出される場合は無視されます。 'nowait' と、'wait'ステータスのどちらもinetd.conf内で、指定できます。 'nowait'を指定した場合、delegatedは、ひとつのサービスを処理し、終了しま す。'wait'を指定した場合、delegatedは、"MAXIMA=service:N"のNで指定された 数を最大として、複数のサービスを処理します。 ホストマシンが複数のネットワークインターフェースや、複数のIPアドレスを割 り当てられた物理ネットワークインターフェースを持つ場合、書式 -P<インターフェースホスト>:<ポート番号> により、どれをdelegatedに割り当 てるか、選択できます。 delegatedは -P<ポート>,<ポート>,<ポート>,... (<ポート>は、<インターフェースホスト>:<ポート番号>または<ポート番号> のどちらかで指定します)により、複数のポートや複数の(制限した)ネットワ ークインターフェースからの要求を受けることができます。 -Pオプション中のポートはデフォルトで、TCPポートを生成します。 これは、−Pxxxx/udpのように 節尾辞"/udp"によりポート番号をUDPポートとし て生成できますが、SERVERパラメータに指定されたアプリケーションプロトコル には注意をはらいません。 -vオプションを指定した場合、delegatedはフォアグラウンドで動作し、管理す るtty上にログを表示します。さらに詳細な情報が必要な場合、-vvオプションを 使用します。同様に、-vt や、-vdオプションで、ログファイルに書込まれるロ グの簡潔さを制御できます。 -vt で、ログは簡潔になり、-vdでは、デバッグ情報まで含みます。 -vsオプションでログを停止することができます。これは、LOGFILE=""を指定す るのと同じです。 -F<機能> オプションを指定した場合のdelegatedは、delegatedというより、 <機能>で指定したプログラムとして動作します。利用可能な機能は、"kill"と、 "cgi"です。"delegated -Fkill -P<ポート>"は、<ポート>で動作するdelegated をkillします。-Fcgi で、起動したとき、DeleGateは、HTTPサーバから呼び出さ れるcgiプログラムとして動作します。 他のオプションは、オプションとして、名前=値 のペアで指定します。また、環 境変数として定義することもできます。 オプションは、外部リソースから読込む事もできます。(代用をご覧ください) 識別名 値の書式 ------- ------------------ SERVER proto://host:port − 何のSPECIALISTであるか *ROUTE gateway-_-dst:src − srcからdstまでのゲートウェイに向けるルート *MASTER host:port − MASTER GENERALIST DeleGateを指定 MASTERP host:port − delegatedのプライベートマスター PROXY host:port − プロキシサーバを指定 *CONNECT {ca,ma,di}* − 接続をトライする順序 RIDENT   {client,server} − リモートソケットIDをフォワーディング TUNNEL type:script-name − DeleGateトンネリングのためのSHIO-スクリプトファイル DELEGATE host:port − URLとDirEntをリダイレクトするところ *HOSTS host/addr,... − プライベートホスト/アドレス解決リスト RESOLV {file,nis,dns}* − 使用するホストファイルとDNS をコントロールする RES_CONF URL − resolv.confの場所 RES_NS dnsHost − 使用するDNSサーバを指定する RES_RR HostsList − ホスト用 ラウンドロビンIPアドレスリスト RES_VRFY "*.INVARID" − 証明が不履行なホスト名を返す SSLTUNNEL Host:Port − SSL トンネル経由接続 (HTTP) SOCKS socks-host − 使用するSOCKSをコントロール BASEURL url − このサーバにおける(仮想)URLの基点 *MOUNT "path URL opt" − URLを//${DELEGATE}/path にマウントします *RELIABLE HostList − 指定されたホストからだけ許可します *REACHABLE HostList − 指定されたホストにだけ、届きます REMITTABLE protocolList − サーバへの手続きを制限する *PERMIT Proto:Dst:Src − 許可されるプロトコル/サーバ/クライアント *RELAY {proxy,delegate} − プロキシ機能の制限 *CHARCODE {JIS,EUC,SJIS,UTF8} − 応答中の日本語コード変換 *SHARE dir-patternList − ユーザ間で共有されるファイル DGROOT dir-name − DeleGateファイルのルートディレクトリ VARDIR dir-name − LOGDIR、CACHEDIR、WORKDIRの基点 CACHEDIR dir-name − HTTP/Gopherキャッシュディレクトリ CACHEFILE file-name-spec − データをストアする、キャッシュファイル CACHE cache-condition − キャッシュ可否を決定する条件 *EXPIRE {days,hours,secs} − キャッシュデータの満期 EXPIRELOG file-name − エクスパイアログファイル ETCDIR dir-name − 持続性のマネジメントファイルの場所 LOGDIR dir-name − DeleGateログの場所 LOGFILE file-name − DeleGateのログファイル名 ERRORLOG file-name − エラーログファイル名 PROTOLOG file-name − httpdあるいはwu-ftp互換ログファイルを指定 COUNTER field:dir-name − その項目用カウンターファイルが存在するところ WORKDIR dir-name − DeleGateがcore dump するところ(__; ACTDIR dir-name − テンポラリファイルの場所 TMPDIR dir-name − 見えないテンポラリファイルの場所 PIDFILE file-name − delegatedのPIDを記録する場所 OWNER user-name − delegatedが、誰のプロセスでなければならないか UMASK mask − umask 値(オクタル値) ADMIN user-address − DeleGate管理者の電子メールアドレス PUBLIC proto://host:port − delegatedを公の一つにしておいてください HTMLCONV deent,enent,pre − HTMLとプレーンテキストの間のデコード/エンコード *URICONV convList:attrList − URI リライティングを制御 MIMECONV thru,charcode − MIME エンコーダ/デコーダを制御 *DELAY what:seconds − 休止 *TIMEOUT what:seconds − 接続タイムアウト *MAXIMA what:number − サーバ等の最大数 OVERRIDE master:paramlist − マスターの制限を無視 *AUTH what:aproto:users − リモート管理権限を持つユーザー *AUTHORIZER serv:prt:dst:src − 認証サーバ DGPATH dir1:dir2:... − 置換え資源のサーチパス FFROMCL filter-command − クライアントからdelegatedへのデータのフィルタ FTOCL filter-command − delegatedからクライアントへのデータのフィルタ FCL filter-command − クライアントとdelegatedの間のデータのフィルタ FFROMMD filter-command − サーバからdelegatedへのデータのフィルタ RPORT {tcp,udp}:host − サーバからdelegatedへの接続 HTTPMAIL server:relay − HTTP経由のメールアクセス SMTPSERVER mailserver − delegatedからメールをポストするのためのSMTPサーバ FILETYPE suffix:type-spec − 型変換するためのファイル名 *CMAP mapspec − 現行の接続についてのマッピング表 *NNTPCONF spec-list − nntp特定のコンフィギュレーション *CRON cron-spec − 予定されたアクション *INETD server-conf − INETDライクなサーバ構成表記 *ICP icp-client-config − ICPクライアントの構成 *ICPCONF icp-client-config − ICPサーバの構成 *DNSCONF dns-client-config − DNSサーバとしての構成 VSAP VSAP-server − リモートソケットマッパー経由の許可/接続 PORT port-list − リザーブポート *HTTPCONF config-script − httpコンフィギュレーション SMTPGATE config-dir − SMTP - SMTP/NNTPゲートウェイ設定ディレクトリ CGIENV list-of-env-vars − CGIに渡される環境変数 -------- ------------------ HostList host,net/mask,... − マスク指定した、ホスト/ネットのリスト ProtoList [-]protocol,... − プロトコルのリスト 上記リストにおいて、名前の前に'*'があるものは、 nameX=value1 nameX=value2 nameX=value3 ... nameX=valueNのようにコマンド ライン上で繰り返すことができます。他の名前が繰り返された場合、最後のもの が使用されます。'#'のつくものは、旧式で、近い将来削除される機能です。 -------- SERVER proto://host:port (default: none) SERVER proto (means proto://-/) *SERVER proto://host:port:-:MountOptions 指定する場合、delegatedは、'host:port'で、'proto'プロトコルで動作する、 SPECIALIST DeleGateになります。指定しない場合、delegatedは、SPECIALIST、 他のGENERALIST、または、DeleGateプロトコルを話すクライアントからの要求を 受け付けるGENERALIST DeleGateになります。 三番目のmountOptionListを伴う書式を指定する場合、MountOptionsに指定され たコンディションが真になるSERVERを動的に選択します。 例) SERVER="nntp://newsserver1:-:from={*.dom1}" SERVER="nntp://newsserver2:-:from={*.dom2}" 特殊なプロトコル名"exec"は、サーバに接続するというより、ローカルコマンド を実行する手段です。"exec"とともに使用するとDeleGateは、簡易的"inetd"や、 "wrapper"のような働きをします。 XCOM / XFILパラメータとともにコマンドを実行した場合はどのようになるか。 コマンドを実行した場合、XCOMは、スタンダードI/Oを接続しているクライアン トソケットに提供します。同様に、XFILは、クライアントの送受信をリレーする DeleGate用に接続された一組のパイプにスタンダードI/Oをリダイレクトします。 例) -P8023 SERVER=exec XFIL=command.com WORKDIR="/" (Windows95のcomannd.comで、簡単なtelnetサーバを構築) WindowsNTとOS/2では、XCOMは、環境変数SOXKHANDLE_CLIENTにクライアントに接 続したソケットの継承したハンドルを与えます。 -------- *ROUTE proto://host:port/-_-{dstHostList}:{srcHostList} (default: none) ホスト(srcHostListで指定)からの要求を'proto'プロトコルの'host:port' サーバ(dstHostListにリソース一覧を指定)に送ります。 ROUTEはMASTERとPROXYの一般化された表記です。 HostListに指定するホストの頭に"proto://"をつけることにより、フォワードす るプロトコルを制限できます。 例) ROUTE="http://h:p/-_-{ftp://*}:* ftpサーバへのアクセスのみを"http://h:p/"のプロキシに送信 ポート番号によって、HostList中のホストに対して、さらに制限をかける事がで きます。 例) ROUTE="http://h:p/-_-{*:21}:*" ポート番号21(ftpサービス)のみ、プロキシに送信されます。 メモ:表記法は 'gateway-_-/Modifier/dst:src'により拡張できます。 ここでのModifierは、ルートによってキャッシュやコード変換を制御します。 -------- *MASTER host:port (default: none) *MASTER host:port:HostList *MASTER host:port/master_control:HostList MASTERは、 ROUTE="delegate://host:port/-_-HostList:*" の、省略形です。 ここで、GENERALIST delegatedのポートを指定する必要があります。 指定する場合、delegatedは、クライアントからの要求が、対象ホストに届かな い場合、名前解決できない場合、または、現在のホストとプロトコルに対して、 CONNECTパラメータで"master"を指定している場合に、指定したMASTER delegatedに要求をフォワードします。 MASTERへのフォワーディングは、HostList(ホストとネットアドレスの一覧)の 接尾により制限できます。この場合、リストされた、対象ホスト/ネットのみが MASTERにフォワードされます。(HostListの書き方は、下を見てください) 複数のMASTERがある場合、最初のMASTERから最後のMASTERまで、成功するまで接 続を試みます。 ポート番号の後に、'/master_control'の付いている、三番目にあるMASTERの書 式において。 cache -- MASTERのキャッシュのみを読込みます。 teleport -- MASTERに対し、持続的``Teleport''接続をします -------- MASTERP host:port (default: "" for HTTP Specialists) このパラメータでHTTP専門のdelegatedを得ることができます。 HTTPスペシャリストは、HTTPプロトコル以外のデータキャッシュと、FTPとNNTP での接続キャッシュのため、MASTER delegatedを必要とします。 MASTERで、MASTERPが指定されない場合、規定値として、MASTERP=""が使用され、 自動的に動的ポート番号を持つプライベートなMASTERを起動します。 MASTERと、MASTERP=""の両方を指定した場合、リモートホスト上でMASTERが動い ていても、ローカルでキャッシュを強行します。 -------- PROXY host:port (default: none) *PROXY host:port:HostList HTTP/FTPスペシャリストのみ、この設定が使用可能です。 HTTPスペシャリストでのPROXYは、 ROUTE="http://host:port/-_-HostList:*" の、省略形です。 ここでは、他のHTTPスペシャリストや、Proxy_httpdのポートを指定できます。 (Proxy_httpdはHTTPサーバで、リクエストメッセージ中の手続き引数を持つ指 定された完全なURLを受理します。)このパラメータを指定した場合、delegated は要求をPROXYサーバにフォワードします。 代理ftpは、PROXYパラメータにより以下のように連結できます。 SERVER=ftp PROXY=proxyhost:proxyport -------- *CONNECT {cache,icp,master,vsap,direct,socks,udp}*:ProtoList:dstHostList (default: c,i,m,d,v,s:*:*) このパラメータは、対象サーバに接続する複数手段の試行順序を制御します。 手段には、以下のようなものがあります。 cache -- 接続しないで、キャッシュを参照 icp -- ICPサーバをヒントにPROXY経由で接続 master -- MASTER DeleGate サーバ経由 https -- http SSL トンネル vsap -- VSAP サーバ経由 direct -- 対象に直接接続 socks -- Socks サーバ経由 udp -- UDPで接続 それぞれの接続タイプは、{c,i,m,d,v,s,u}のように頭文字で、省略できます。 protoListとdstHostListを指定した場合、このコントロールはその表に含まれる プロトコルとホストにのみ適用されます。 例)外部ネットワークに接続しないでホスト上のキャッシュデータを使用すると きは、このように指定します。 CONNECT="cache:*:!./@" メモ:現実装では、リスト中の'cache'がいつでも最初に試され、ProtoListは "*"でなければならず、PROXYは制御できません。将来、'direct/10s'や、 'cache/5d'のように期限によるキャッシュタイプが指定できるでしょう。 -Pxxxx CONNECT=udp の組み合わせで、TCPクライアントからUDPサーバへリレー します。また、 -Pxxxx/udp と non-udp CONNECT でUDPクライアントから、TCP サーバへリレーします。 -------- RIDENT {client,server}* (default: none) RIDENT="server"を指定した場合、getsockname(2) と getpeername(2)で、取得 したクライアントソケットに関する認証情報がPROXYまたは、RIDENT="client"に より情報を受信するMASTER DeleGateへフォワードされます。また、アクセスコ ントロールにも使用できます。 RIDENT="client"を指定したDeleGateサーバは、RIDENT="server"を指定した DeleGateと、他のRIDENTをサポートしない代理サーバからの接続を受け付けます。 カスケードした一連のDeleGateサーバの中間にあるDeleGateサーバには、 RIDENT="client,server"を指定しなければなりません。 -------- TUNNEL type:script (default: none) 指定した場合、MASTER間のやり取りは、コマンドの標準入出力を経由した 'tunneld'のようになります。トンネルはTCP/IPを介さないシリアルラインでも できます。ほかに、inetdより起動されたdelegatedへの経路かもしれません。 タイプ部分はトンネル型を指定します、現在、'tty7'と'proc'だけ有効です。 tty7のとき、トンネルが確立される方法は指定された'SHIO script'ファイルの 中で記述されます。配布ファイル中のsrc/sample.shioを見てください。 procであるとき、スクリプト部分はシェルコマンドで指定しなければなりません。 -------- *HOSTS name/addr (default: localhost/127.0.0.1) domain-names/IP-addressesの組み合わせ表で、DNS(または、NISあるいは /etc/hostsテーブル)データを無視します。これは、頻繁に参照されるホストに 対する名前解決の高速化や、別名、または、パブリックなdelegatedにおける、 不明ホストを救済するために使用できます。複数の名前やアドレスを、書式 {name1,name2,...}/{addr1,addr2,...}で指定できます -------- RESOLV {cache,file,nis,dns,sys}* (default: cache,file,nis,dns,sys) 名前解決を行う順序を指定します。 'file'は、/etc/hosts のようなホストファイル、'nis'はNISサービスでのホス トマップ、'dns'はDNSサービス、そして、'sys'は、gethostbyname() と gethostbyaddr()を使用して、ホスト上の標準レゾルバを呼び出します。 空値 "RESOLV=" を指定した場合、HOSTSパラメータにリストされたホストのみ解 決できます。(セキュリティ上の理由でホストテーブルを隠したいときに使用で きます。) それぞれのレゾルバは、以下のようなオプションの値により定義できます。 cache:/path -- キャッシュディレクトリのパス名 [/tmp/resolvy] file:/path -- パスワードファイルのパス名 [/etc/hosts] nis:nis-domain -- NIS ドメイン名 dns:dns-host -- DNS サーバとデフォルトドメイン デフォルトでは、複数のIPアドレスを持つホストに対しての接続は、それぞれの レゾルバで定義されたアドレス順に、試みられます。特別なパラメータである HOSTS="*/*/RR"で、"RoundRobin"の設定を追加でき、ラウンドロビンの順序に沿 ったIPアドレスを試みます。 -------- RES_CONF URL (default: /etc/resolv.conf) resolv.conf ファイルを指定します。ファイルは、DeleGate固有のレゾルバ "Resolvy"によって翻訳されます。Resolvyは、ファイル中の、"nameserver", "domain","ndots","search",および "sortlist"を認識します。 -------- RES_NS dnsServer (default: none) RES_NS dnsServer //socksHost 使用するDNSサーバを指定します。dnsServerは、ホスト名か、ホスト名DNSサー バのIPアドレスです。"host:8053"のようにポート番号を付け加えることもでき ますが、指定しない場合は、標準のポート(53)になります。 2番目の書式で、dnsHostのDNSサーバがファイアーウォールの向こうにある場合、 Socks V5サーバを通して参照できます。 -------- RES_RR HostsList (default: "*") HostListに含まれるホストのためのラウンドロビンIPアドレスリスト。 現在、RES_RR="*" と、 RES_RR="" のみが使用可能です。 -------- RES_VRFY (default: none) "RES_VRFY="では、DNSの逆引きをした結果を確認します。 が<ホスト名>として解決された場合で、かつ、<ホスト名>が、 として解決され、が含まれない場合は、確認 失敗となり、かつ、結果は拒否になります。 ## RES_VRFY="*.INCONSISTENT", 矛盾したホスト名"host.domain"は、 ## "host.domain.INCONSISTENT"に記録されます。 -------- SOCKS sockd-host/dns-host/dflt-domain (default: none) SOCKS sockd-host/-5 `sockd-host'上の使用するSOCKSサーバを指定します。コンパイル時に SOCKS_DEFAULT_SERVERを指定した場合、空の指定"SOCKS="で十分です。 複数のSOCKSパラメータを指定できます。 直接/Socks経由接続の試行順序は、CONNECTパラメータで制御されます。 2番目の書式では、ホスト名解決は、Socksバージョン5のプロトコルのSocksサー バにより達成されます。 -------- BASEURL url (default: none) delegatedによって生成された、完全なURLに埋め込む、このサーバの基点 (仮想)URLを指定します。 たとえば、NNTP/HTTPゲートウェイDeleGateによって生成される、HTMLページ中 のアイコンURL 例) MOUNT="/* nntp://server/*" BASEURL="http://server/news" このとき、HTTPサーバ "http://server" のパス"/news" は、この、delegated に、リダイレクトされます。 -------- *MOUNT "path-pattern URL" (default: "/ ${SERVER}") *MOUNT "path-pattern URL MountOptions" パス<->URLの書換えを行います。パスパターンが'*'で終わるとき、パスの合致 した部分が書換えられます。 URLが'*'で終わるとき、修正された部分で、合致した部分がURLの後ろにコピー されます。たとえば、MOUNT="/abc/* http://H:P/*" を指定したHTTP-DeleGate は、URL "/abc/def"を "http://H:P/def"に、書換えます。このパターンマッチ ングは、書式"[a-set-of-caracters]"を'*'の前に MOUNT="/abc/[a-z]* http://H:P/*" のように置くことで、"[a-set-of-caracters]"にある任意のキャラクタで始まる 文字に合致するように制限できます。 '='を、パスパターンかURLに指定した場合、マウントと同じです。これは、リク     エスト中のパスパターンの書換えまたは、応答中のURLの書換えを禁止します。 MOUNTは、NNTP-DeleGateで、ニュースグループの別名/抽出および、複数のNNTP サーバを結合することに使用できます。 例として、MOUNT="alias-group. nntp://server/group."で、ニュースグループ 'group.*'を別名、'alias-group.*'として扱えます。 簡単な抽出設定は、SERVER="nntp://server/group."で、 MOUNT="= nntp://server/group."に相当します。 複数のMOUNTを複数のNNTPサーバ用に設定した場合、delegatedはニュースグルー プをサーバ上で結合し、クライアントが複数のニュースグループが1つのサーバ 上に見えるようにします。 MountOptions MountOptionsは、','によって区切られた、オプションのリストです。 ro -- POSTコマンドを無効にし、NNTPプロトコルを読込みのみにします。 moved -- HTTPの'302 Moved'の応答をリレーしない。 indirect -- 例)MOUNT="URL1/* URL2/* indirect" が与えられるばあい, "URL1/name1/path" が要求され、 "URL2/name1/indirect.cfi"に、"Base: URL3"に含まれる場合、 "URL3/path" をアクセス。 これは、MOUNT="URL1/name/* URL3/*"によって生成します。 robots={no,ok} -- ロボットからのアクセスを有効/無効にする。 初期値は、NNTPとFTPで、"no"、それ以外のプロトコルでは"yes" from={HostList} -- 受け入れるクライアント クライアントがHostListに含まれるとき、マウントの指定が適用されま す。 via={HostList} -- 経由ホスト。 マウント指定は、HostListに追加された少なくとも1つのホストの通過 が終了した時のみ適用されます。 path={HostList} -- ホストの通過 マウント指定は、HostListに追加されたすべてのホストの通過が終了し た時のみ適用されます。 host={HostList}-- クライアントをもつインターフェイスホスト。 クライアントがHostListに含められる指定されたネットワークインター フェースを通してdelegatedに接続した時のみ、マウント指定が適用さ れます。delegatedが基点サーバとして動作していて、要求メッセージ 中の"Host: host"フィールドに、仮想ホスト名を見せている場合、実ホ スト名の前に仮想ホスト名が調べられます。ひとつのIPアドレスに複数 の仮想ホスト名が割り当てられている場合、仮想ホスト名を区別するた め、"host=-hostname"のように、仮想ホスト名の頭に"-"をつけます。 genvhost=host -- "Host: host"フィールドをセットして、要求メッセージをサ ーバに送信します。 hide={GroupList} -- リストしたパターンのニュースグループをクライアントか ら見えなくする。(例 "hide={alt.*,alt.comp*}") upact:Invoke/Reload/Posted -- アクティブなリストのキャッシュの更新を制御。 このMOUNTパラメータに含まれる目的サーバのみを制御することを除いて、 NNTPCONF=upact:... と同じです。 cache=no -- サーバに対するキャッシュの扱いを無効にします。 cache=no-article -- NNTP 記事のキャッシュを無効にします。 cache=no-list -- NNTP リストのキャッシュを無効にします。 cache=no-overview -- NNTP XOVERのキャッシュと、DeleGateによる、記事からの        XOVER 生成を無効にします。  useproxy[=proxyURI] -- "305 Use Proxy" 応答メッセージを生成 proxyURIを省略するか、"direct" と与える場合、応答メッセージは、         Set-Proxyフィールドとともに、"Set-Proxy: DIRECT"のように送られます。 他の場合、フィールド中のURIは、"Set-Proxy: SET; proxyURI=proxyURI" のようにセットされます。 method={methodList} -- 現在のリクエストのアクセス方法がmethodListに含まれる 場合、真になります。 dst={hostList} -- 目的ホストがhostListに含まれる場合、真になります。 このオプションは、MOUNTの右側で"="が使用される場合、有効です。 asproxy -- 要求URLがフルURL書式で、delegatedがプロキシサーバとして呼 ばれる場合、真になります。 withquery -- 要求URL中が、"?query" コンポーネントを持つ場合、真になります。 charcode=code -- マウントポイントに対するコード変換を指定します。 これは、グローバル CHARCODE パラメータと同じです。 HostListは"host:port"形式のリストでなければなりませんが、気にしない場合、 ":port"部分は省略することができます。ネットワークインターフェースの相違 点を気にしない場合、"host"部分は"*"で置き換えることができます。 例) 1) MOUNT="* URL1 host=this-host" MOUNT="* URL2 host=localhost" 2) -P70,80 MOUNT="* URL1 host=*:70" MOUNT="* URL2 host=*:80" "useproxy", "method", "dst" と、"withsearch"オプションは、本来、目標サーバ     のCGIプログラムのように、潜在的に厄介なアクセスを拒否するために取り入れられ ました。 例)POSTメソッドや、"?"を含むURLによる要求を、すべて拒否する。 MOUNT="http:* = method=POST,asproxy,useproxy" MOUNT="http:* = withsearch,asproxy,useproxy" -------- ?AUTOMOUNT where:URLList((まだ実行されない)) URLList(`where/${URL}')にリストされたURLをマウントする。`where'が省略 される場合、HTTPとFTPでは、`http://${DELEGATE}/'、 Gopherでは`http://${DELEGATE}/${GTYPE}/'にマウントされます。 -------- DELEGATE host:port (default: current-host:current-port:all) DELEGATE host:port:ProtoList このパラメータは、URL/DirEnt が、`Gateway-_-URL' または、 `proto://host:port/-_-URL'に書き換えられることによるnon-Proxy HTTP/ Gopherアクセスのリレー機能を制御します。URL/DirEntにエンコードされる delegatedのホストとポートは、ここで確定しなければなりません。デフォルト で、現行のホストは未加工のIPアドレス番号がエンコードされます。そのため、 delegatedのホスト名を解決する方法を知らなくても、クライアントはdelegated に接続できます。2番目の指定書式では、DELEGATEの後にProtoList(プロトコ ルの表)が続きます。この表で、どのプロトコルがDELEGATEにコールバックまた は、保留されなければならないかを指定します。プロトコルがこの変数中にリス トされる場合、応答メッセージ中のURLとDirEntsはDELEGATEにリダイレクトされ ます。中継機能を制御するためには、このパラメータに"DELEGATE=-:0:-all"を 指定してください。 -------- *PERMIT ProtoList:dstHostList:srcHostList PERMITパラメータで、どのアクセスをDeleGateで許可するか指定します。 srcHostListにあるクライアントから、dstHostListにあるサーバへのProtoList にあるプロトコルのアクセスが許可されます。PERMITパラメータが無い場合、ア クセス権は、REMITTABLE、REACHABLEおよび、RELIABLEパラメータに明示された ものか、SERVERパラメータの暗黙の指定により、制御されます。 ProtoList での特別なパターン'*'は、REMITTABLE (REACHABLE)パラメータで明 示した、すべてのプロトコル(サーバ)を許可することを意味します。 同様にして、さらに、RELIABLEパラメータを明示的に指定した場合、 srcHostList中のクライアントの受け入れ制限をします。 dstHostListでのホスト指定は、ポート番号で限定することができます。例えば、 PERMIT="telnet:{*:23}:*"は、標準のポート番号(23)でだけ、テルネットを許可 することを意味します。 ProtoList中のプロトコル名は、アクセスできるポートと、プロトコルの方式を 制限するため"protocolname/{PortList}/{MethodList}"のように変更することが できます。 例えば、PERMIT="ftp//readonly:Servers:Clients" PERMIT="ftp:*:*" といった 一連のPERMITパラメータは、クライアントからサーバへのアップロードを禁止し、 他の組み合わせのサーバ・クライアント間でのアップロードを許可します。 MASTERやPROXYパラメータを使用した複数の連結したDeleGateサーバの場合、オ リジナルのクライアント認証情報は最初のDeleGateサーバ(連鎖の入り口の)は PERMITパラメータで調べ、RIDENTパラメータにより、次段のDeleDateサーバに送 信されます。 -------- REMITTABLE ProtoList (default: "*" -- for GENERALIST, "." -- for SPECIALIST) delegatedは、ProtoListにあるプロトコル(サーバに対して)のみ受理します。 GENERALIST(SERVERパラメータを指定しないdelegated)はデフォルトでは、ど のプロトコルも許可します。SPECIALISTは、デフォルトでは、SERVERパラメータ に指定したプロトコルのみを許可します("."で表す事もできます)。 プロトコル名を'/{PortList}'として続ける場合、PortListにあるポートのみが 許可されます。 特殊なケースとして、delegatedが代理テルネットサーバ(SERVER="telnet")と したとき、デフォルトのREMITTABLE="telnet/23"により、標準のテルネットポー ト(23)に向けられたものだけにアクセスが制限されます。 制限の条件をREMITTABLE="telnet"のようにすれば、武装を解除できます。 HTTP-SPECIALISTでは、"REMITTABLE=http,https/{443,563},gopher,ftp,wais"が、 デフォルトです。ProtoListは"/{MethodList}"を続けることにより、プロトコル での利用可能な手段を制限できます。現在は"readonly"のみサポートされます。 例)REMITTABLE="ftp//readonly"で、FTPサーバへのアップロードを禁止する読 込みのみのFTP-DeleGateになります。 例外として、MOUNT="Path1 Proto://Server/Path2" のように、MOUNTパラメータ で、目的サーバを、確定した場合、"Proto"プロトコルは、目的プロトコルとして、 自動的に、許可します。 リストの最初の要素が"+"の時、それはデフォルトで許可されたプロトコルを意 味します。 例)REMITTABLE="+,-https/563,-wais,file" を伴うSERVER=httpは、 REMITTABLE="http,https/443,gopher,ftp,file" を意味します。 -------- *RELAY {proxy,delegate,no} *RELAY {proxy,delegate,no}:protoList:dstHostList:srcHostList (default: proxy,delegate:*:*:.localnet ; proxy:*:*:*) このパラメータはHTTPプロキシサーバとして動作しているdelegatedを制御します。 HTTP DeleGateは、次の2通りの動作をします。   リクエスト中のフルURLを受け入れる、標準的(CERN コンパチブル)HTTPプロキシ 応答中URLの書き換えと、/-_-URLを受け入れる、DeleGate独自のプロキシ 2番目の(フル)校正仕様を伴う場合、利用可能なリレーモードは、サーバプロトコル ,サーバホストとクライアントホストの組合せによって分類できます。 例) RELAY=no ... プロキシとして動作しない。 RELAY=proxy ... CERN コンパチブルモードのみ RELAY=delegate ... DeleGate モードのみ (/-_-URL) RELAY=proxy,delegate ... CERN と DeleGate モードの両方 デフォルト: "proxy" と "delegate" の両方が ".localnet" のユーザに許可し、 他のユーザには "proxy" のみが許可されます。 -------- *RELIABLE HostList (default: localnet) HostList中にあるホスト(またはネットワーク)から送られた要求のみ、 delegatedで受理します。デフォルトでは、delegatedホストのローカルホスト/ ネットワークのみ許可されます (RELIABLE="localnet")。 HostListの書き方は下を見てください。 -------- *REACHABLE HostList (default: none = すべてのホストに届きます) 指定した場合、delegatedは、HostListにあるホスト(またはネットワーク)向 けられた要求のみを受理します。 -------- CHARCODE {JIS,EUC,SJIS,UTF8} (default: none) *CHARCODE input-code/output-code 指定した場合、HTTPとGopherのSPECIALISTはテキストタイプの応答でのJISコー ドを、指定したキャラクタコードに変換します。 クライアントは送信した要求中の`Accept-Language'フィールドでこの設定を無 視できます。 `Accept-Language: (charcode=JIS)'が要求としてクライアントから送られた場 合、delegatedのCHARCODE指定を注意せず、応答テキストをJISコードに変換しま す。 パラメータの完全な指定はinput-code/output-codeです。CHARCODE=JISは CHARCODE=JP/JISの省略形です(ここでのJPは日本語テキスト{JIS,EUC,SJIS}を 意味します。)。 Accept-Languageで'(charcode=THRU)'を指定した場合、変換は行われません。 Accept-Languageは、クライアントのメニューや設定ファイルで指定できるでし ょう。 -------- *SHARE dir-patternList (default: empty) 指定した場合、与えられたパターンにマッチするディレクトリ(ファイル) (アクセスモード0777(rwxrwxrwx)(0666(rw-rw-rw-))は、任意のユーザ間で、 共有できます。 パターンが、不完全な形で与えられる場合、DGROOTの相対とみなされます。 例) SHARE="${CACHEDIR}/*" CACHEDIR="/var/spool/delegate-anybody" SHARE="${VARDIR}/*" VARDIR="/var/spool/delegate" -- 古いバージョンの共有ディレクトリ SHARE="" -- すべて共有可能とする SHARE="cache/*,log/*" -- DGROOT下のキャッシュとログ -------- DGROOT dir-name (default: UNIX:"{$HOME}/delegate" または、 "/var/spool/delegate-${OWNER}"または、 "/tmp/delegate-${OWNER}" Windows: "/Program Files/DeleGate") 指定した場合すべてのサブディレクトリ(LOGDIR, ETCDIR, ADMDIR, CACHEDIR, ACTDIR, WORKDIR and TMPDIR) は、DGROOTの下に配置されます。 -------- VARDIR dir-name (default: ${DGROOT:-/var/spool/delegate}) CACHEDIR dir-name (default: ${VARDIR}/cache) CACHEFILE file-name-spec (default: $[server:%P/%L/%p]) キャッシュ機能は、CACHEDIRのディレクトリが存在かつ、delegatedが読み書き 可能で、CACHE="no"が無い場合、有効になります。 現在HTTP, Gopher NNTP , FTPがキャッシュ可能です。 CACHEFILEで作成するキャッシュファイル名を指定します。 ファイル名は主として、サーバホストと要求URL情報に由来します。これらの情 報は"$[server:format]"のフォーマットで指定します。フォーマットの内容を以 下に記します。 リソースのURL: scheme://host.d2.d1:port/path %P -- Protocol name part scheme %L -- Login part host.d2.d1:port %H -- Host name host.d2.d1 %T -- Port number port %h -- host name directory d1/d2/host %d -- domain name directory d1/d2 %1 -- top level domain d1 %2 -- second level domain d2 %p -- URL-path part path %Q -- use FQDN of a host name host.d2.d1.d0 (like %Q%L or %Q%H) -------- *CACHE cache-condition (default: none) キャッシュ利用の制限を指定 no -- キャッシュしない [undef] ro -- キャッシュは読込みのみ [undef] ## bintext -- バイナリテキストもキャッシュする [undef] ## mtime/Days -- 元データはDays内で変更された [unlimited] ## dsize/Num -- データサイズがNumバイトより小さい [unlimited] ## xrate/Num -- 転送が Num bytes/sec より遅い [unlimited] -------- EXPIRE N{d,h,s} (default: 1d) *EXPIRE validity/custody (default: 1d/forever) *EXPIRE N{d,h,s}:protoList:dstHostList:srcHostList (default: none) EXPIREは、日、時、分で、キャッシュデータの有効期限を設定します。 有効は、delegatedによるキャッシュデータの動的削除を意味するものではあり ません。delegatedは、単に指定された期限より古いキャッシュデータを無視す るだけです。 -------- ETCDIR dir-name (default: ${VARDIR}/etc) LOGDIR dir-name (default: ${VARDIR}/log) LOGFILE file-name (default: ${LOGDIR}/${PORT}) ERRORLOG file-name (default: ${LOGDIR}/errors.log) PROTOLOG file-name (default: ${LOGDIR}/${PORT}.${PROTO}) WORKDIR dir-name (default: ${VARDIR}/work/${PORT}) COUNTER field:dir-name (default: none) ((Not yet done)) EXPIRELOG file-name (default: ${LOGDIR}/expire.log) パターン${PROTO} と ${PORT} はそれぞれ、delegatedのプロトコル名とポート 番号に置き換えられます。これらファイルは、可能な場合delegatedにより自動 的に作られます。LOGFILE="" や PROTOLOG="" のように空のファイル名を指定す ることでログを停止できます。 HTTPプロトコルに対するPROTOLOGの書式は、PROTOLOG="file-name:format"のよ うに、ファイル名の後に任意の書式設定をファイル名の後に付けることで、変更 できます。この場合、デフォルトのファイル名は禁止されます。 例)PROTOLOG=":%X" の指定は、NCSAライクな一般的ログファイルフォーマット に拡張されます。デフォルトのフォーマットはPROTOLOG=":%C %D"です。 %C -- CERN-HTTPDの一般的なフォーマット %c -- %C と同じですが、日付にミリ秒まで記録されます。 %D -- DeleGateの拡張 (conn-time + relay-time : status) %X -- '%C "%r" "%u"' 一般的なものに、参照者とユーザエージェントを追加 %r -- リクエストメッセージ中の参照者フィールド %u -- リクエストメッセージ中のユーザエージェントフィールド %S -- サーバに対する接続状態 (c,m,p,d,s,v) %Cで、クライアント情報は、デフォルトで、ホスト名、Ident、ユーザ名が記録 されますが、AUTH="log:"パラメータで変更できます。 WORKDIRがアクセスできないか、WORKDIRを明示せず、-vvオプションを使用した 場合、現在のディレクトリ(delegatedを呼出した者の)がWORKDIRとして使用さ れます。 'file-name'を相対パスで指定した場合、それらのファイルは、${LOGDIR} 以下 に配置され、"./" で始まるパスの場合、${WORKDIR} 以下に配置されます。 エージング:ファイル名に'[date+format]'が含まれる場合、それは、 strftime(3)と同等の機能によって求められた文字列の置き換えられます。 例)'%d'は一ヶ月中の日にち[01-31]を意味し、LOGFILEにLOGFILE='${PORT} [date+.%d]'のように指定した場合、日々古くなり、一ヶ月で循環します。 '%w'は一ヶ年中の週番号[01-52]を意味し、週毎のエージングに有効です。 他の例;LOGDIR='/var/log/delegate/[date+aged/%y/%m/%d]'は階層的なログを 作ります。 最新のログファイルはLOGFILEの設定から'[date+format]'部分を省略し、ハード リンクされた別ファイル名で作られます。 エージングのために、異なるパターン'[start+format]'を使用できます。 'start+'は、求められる値が、delegatedの起動した(あるいは、SIGHUPによる 再起動または、TIMEOUT=restartを設定した場合)時間であること以外'date+'と 同様です。 -------- ACTDIR dir-name (default: /tmp/delegate } TMPDIR dir-name (default: none) PIDFILE file-name (default: ${ACTDIR}/pid/${PORT}) FTPGETS file-name (default: ${ACTDIR}/ftpget/${SERVERNAME}) アクティブなサーバの情報は${ACTDIR}に置かれます。これら一時ファイルは、 サーバが呼出時に作成され、終了時に削除されます。 -------- OWNER user (default: `nobody' for root, otherwise invoker) OWNER user/group (default: `nobody/nogroup' for root, otherwise invoker) *OWNER user:srcHostList 指定した場合、delegatedはsetuid() と setgid()システムコールを使用し、指 定したユーザとして動作します。ユーザとグループは、シンボリック名または、 頭に'#'を付けたID番号のどちらでも指定できます。 srcHostListを指定した場合、リスト中にクライアントホストがある時、 delegatedの所有者はユーザにセットされます。 ユーザ名'*'は、クライアントホストのユーザ名に置き換えられます。これは、 Identサーバ(identd)から取得することもできます。 簡単な例は、 OWNER="*:*@*" です。 この変数は、スーパーユーザが呼出した時のみ有効です。 -------- ADMIN user-address (default: none) ファイアーウォール上、または、直接的にインターネットへ接続する状態で delegatedを起動した場合、このパラメータを指定しなければなりません。 このE-Mailアドレスは以下のように使用されます。 - delegated(HTTP)の管理者名を(エラー)メッセージ中に表示します。 - delegated(FTP,NNTP,Telnet)の管理者名をオープニングメッセージまたは、 ヘルプメッセージ中に表示します。 - リモートのFTPサーバの匿名FTPアクセスのユーザ名(PASSコマンドにおける) として送信します。 - AUTH=anonftp:smtp-vrfyの認証において、リモートSMTPサーバアクセス時に、 送信者名(FROMコマンドにおける)として、送信します。 -------- # MANAGER user-adress # ADMINと同じ。ADMINパラメータの昔の名前です。 -------- *PUBLIC proto://host:port (default: none) 指定した場合、delegatedは公共のDeleGateとして登録されます。 登録は、起動時に、`proto://host:port'で指定されたdelegatedにメッセージを 送り出すことによって行われます。delegated終了時、登録は除去されます。 PUBLIC="" は、PUBLIC="http://www.delegate.org/"として、インターネット上で 公なdelagateであることを宣言します。 -------- HTMLCONV conv-list (default: deent) HTML応答メッセージ中のHTMLテキスト変換を制御する、スイッチリストを指定し ます。 deent -- 実在シンボルをデコードします。 enent -- 実在シンボルをエンコードします。 fullurl -- すべてのURLをフルURLに変換します。 Deentとenentは、HTML/平文テキスト間の特殊キャラクタをエンコード/デコード します。'deent'を指定した場合、ISO-2022-JPテキストで、'<'のようにエン コードされた実在シンボルは、'<'にデコードされます。これは、Gopher ゲート ウェイする時のPROXYとともに使用すると役立ちます。'enent'を指定した場合、 ISO-2022-JPテキスト以外の実在シンボルをエンコードします。 これは、NNTP-DeleGateをWWWクライアント用に動かしている時、役立ちます。 空リストを指定した場合、コンバートしません。 -------- URICONV convList:attrList (default: URICONV=dump により参照できます。) URICONV defelem:+,elemnameList URICONV defattr:+,attrnameList URIリライティングのいずれかを指定すると、HTMLドキュメント中のタグによって、 拡張されます。convList には、以下のアイテムを指定します。 mount -- MOUNT による書き換え normal -- "../"が含まれる、異常なマウントされたURLを正常化します。 partial -- 可能な場合、(マウントされた)URLを部分的なURLとして表現します。 full -- URLを完全なURLに変換します。 特別な convList URICONV="+" は、デフォルトのURICONV構成を読込みます。 (このケースで、今のところ、attrList はありません。) attrList は そろぞれに要素名をポストフィックスすることができる、 属性名のリストです。特別な属性名``+''は、デフォルトセットを意味します。 ``-'' がプリフィックスされる場合、セットから除外されます。 例 : URICONV=mount,normal,partial:+ -- Ver.6 以降のデフォルトです。 URICONV=full:+,-HREF/BASE -- HREF/BASEを除くすべてを書き換えます。 URICONV=dump -- 現在の URICONV 設定を見ます。 URICONV=+ URICONV=mount:-SRC/IMG URICONV=full:SRC/IMG -- のマウントに適用しない。 -------- MIMECONV thru,charcode (default: all) NNTP/POP/SMTP DeleGateで、MIMEエンコード/デコードの制御をする。 MIMECONV=thru は、MIMEエンコード/デコードを使用不能にし、 MIMECONV=charcode は、キャラクタコード変換のみを有効にします。 -------- *DELAY what:seconds 'what'で指定した動作をする前の遅延時間(秒)を指定します。 reject -- 自分や、マウントしたサーバからの継続した、Reject応答 [60] unknown -- 自分や、マウントしたサーバからの継続した、Unknown応答 [60] reject_p -- サーバからの継続した、Reject応答 [0] unknown_p -- サーバからの継続した、Unknown応答 [0] それぞれの値は、最大値遅延時間を指定し、遅延時間は、エラーカウントの増加 によって、増えます。 -------- *TIMEOUT what:seconds,... (default: dns:60,acc:30,con:30,lin:30) タイムアウト(デフォルトでは‘秒’)を設定します。'what'は、以下の中から 選択します。 dns -- DNS参照 [60] acc -- クライアントからの承諾 (FTPデータ接続を含む) [30] con -- サーバへの接続 [30] lin -- 出力用LINGER [30] ident -- Identサーバへの接続 [10] io -- 一般的な入出力 [600] hello -- MASTERとのHELLO ネゴシエーション [30] login -- 代理telnet/ftpサーバへのログイン [60] ftpcc -- FTP接続キャッシュのキープアライブ [900] nntpcc -- NNTP接続キャッシュのキープアライブ [300] daemon -- delegated [unlimited] restart -- 指定した時限での再起動 [unlimited] (1d, 1h, 1m のように、時間指定単位を変更できます) standby -- 次のクライアントのための、delegated待機時間 [30] http-cka -- クライアントとの接続有効時間 [5] (タイムアウトは、それぞれのクライアントホストからの接続を 早くするため、十倍長くなっています。) takeover -- クライアントのダウンロード切断後、ダウンロードから キャッシュに切り替えるまで。[0] タイムアウト時間に、0を指定すると、タイムアウトなし(リミットなし)を意 味します。 -------- *MAXIMA what:number,... (default: listen:20,ftpcc:2) 指定したサーバの最大起動数を指定します。 listen -- サーバキューサイズ [20] delegated -- delegated同時起動数 [64] ftpcc -- ホストへのFTP接続キャッシュサーバ数 [16] nntpcc -- ホストへのNNTP接続キャッシュプロセス数 [16] service -- delegatedプロセス単位のサービス数 [unlimited] mailsplit -- メール(分割の一部)の最大サイズ [50000] standby -- 待機プロセスの最大数 [16] http-cka -- 接続キープアライブ [10] (最大値は、それぞれのクライアントホストからの接続を 早くするため、十倍長くなっています。) http-ckapch -- それぞれのクライアントホストに対する、接続の同時キープ アライブ数 [4] conpch -- クライアントホスト単位同時接続数 [unlimited] -------- OVERRIDE master:port:ParamList (default: none) MASTER の制限を無視する。現在、以下のもののみ有効です。 OVERRIDE="*:*:TIMEOUT=timeoutList" OVERRIDE="*:*:CONNECT=cache" -------- *AUTHORIZER authServ:protoList:dstHostList:srcHostList (default: none) サーバホスト・クライアントホスト間で対象プロトコルに対する、認証サーバを 指定(同時に権限を許可する。)します。 authSrvListは認証サーバホスト名か、認証サーバホスト名リストです。 もし、認証ユーザに、権限を与えない必要がある場合、以下の特殊な名前を authServに指定します。 "&" -- クライアントホスト(クライアントホスト上のユーザ名が必要) "*" -- "user@authHost"で、ユーザが、authHostを指定。 例) SERVER=telnet AUTHORIZER="&:::!*.local.domain" (local.domain 外からのホストは認証が必要) SERVER=telnet AUTHORIZER="localhost" RELAIBLE="*" (localhostで認証されたクライアントすべてを許可) -------- *AUTH what:authProto:who (default: none) 'who'に'what'の権限を与える。authProtoに指定したプロトコルでユーザ認証を 行います。クライアントホストがサポートする場合、Identificationプロトコル をベースとして、”クライアントのユーザは誰か”の身元確認をします。このほ か、FTPサーバは、認証サーバとして使用できます。ユーザ名:パスワード (こ こでのユーザは ユーザ@ホスト ともできます。) からなる、認可情報が与えら れる場合、ユーザとパスワードでホストへのログインが成功すると、クライアン トは ユーザ@ホスト で証明されます。現在、3つのカテゴリによる認証がサポ ートされます。 admin:*:user@host 'user@host'に、サーバリスタートとログ制御のリモート管理権限を与 えます。 2番目のフィールドは、現実装では、'*'でなければなりません。  を見てください。 # manager:*:user@host # "admin:*:user@host"の古い型 anonftp:*:password このパラメータは、FTP/HTTPゲートウェイから、参照されます。設定し た場合、delegatedはHTTP認証過程において、匿名ftpユーザのログイン 名として、彼/彼女のE-Mailアドレスを応答します。 'password'フィールドに'*'を指定した場合、どんなパスワードも認め られます。 2番目のフィールドは、現実装では、'*'でなければなりません。 anonftp:smtp-vrfy:* このパラメータは、E-Mailアドレスを匿名ユーザのパスワードとして取 得するチェックをするためFTPプロキシより、参照されます。(FTP/ HTTPゲートウェイでは、E-Mailアドレスをユーザ名として送る必要があ ります。) アドレスが存在して、書式が "ユーザ@ホスト" のような場合、自動的 に "ユーザ@ホスト.ドメイン" のような、FQDN書式に拡張されます。 第三フィールドに"-"を指定した場合("AUTH=anonftp:smtp-vrfy:-@*") "ホスト.ドメイン"の接続のみチェックします。 #第三フィールドは、ドメインレベルで確認されたアドレスとクライアントホストアドレ #スとの比較ができます。 # E-mail:"user@host.d3.d2.d1" and client-host:"hostname@d3.d2.d1" proxy:{ident,auth,pauth} (default: proxy:ident) HTTP代理サーバとしてのdelegatedに対する身元確認/認証のプロ トコルを指定します。 このプロパティは、PERMIT または RELIABLEに指定したユーザのアクセ ス制御をするときのみ、チェックされます。 ident -- 身元確認プロトコル pauth -- 代理認証フィールド `ユーザ@ホスト:パスワード'を使用 auth -- 認証フィールド `ユーザ@ホスト:パスワード'を使用。 例) AUTH=proxy:auth PERMIT="*:*:{*,!?}@*" 彼/彼女を同一視した場合に限り、どんなホストの、どんなユーザも、 許可されます。    メモ:クライアントが代理認証が使用できない場合、認証に`auth'を使用 することを強制します。このようなケースでは、クライアントは、認証 が必要なリソースにはアクセスできません。 forward:{by,for,ver,*} 対象ホストが、dstHostListにあり、ソースホストがsrcHostListに含ま れている場合、HTTPリクエスト中のヘッダフィールド ``Forwarded: by Me (Ver) for Client'' に、ソースホストの認証情報を書き込みます。 現在、指定した場合は、AUTH="forward:*:"と、同様に評価され、第二 フィールドには注意が払われません。 authgen:basic:authString HTTPリクエストヘッダ中に、オリジナル認証フィールドを持たない場合、 ``Authorization: Basic authString''を生成します。 authStringは、"userName:passWord"でなければなりません。 以下は、クライアント属性をあらわす、特殊文字です。 %u -- Ident で取得したユーザ名 %h -- ソケットにより取得した、クライアントのホスト名 %i -- クライアントに対するネットワークインターフェース名 %a -- クライアントのホストアドレス %n -- クライアントのネットワークアドレス %H -- delegatedのホスト名 %M -- delegatedのADMIN %A -- "CMAP=string:authgen:mapSpec"によって生成された文字列    例)ファイアーウォールが2つのネットワークインターフェースを持ち、 内/外のホストアクセスを異なるインターフェースで受ける場合、それ ぞれのインターフェース名で、区別できます。 AUTH="authgen:basic:%i:%h" 他の場合、内部ネットワークは、以下のように、CMAPにより明確に宣言 しなければなりません。 AUTH="authgen:basic:%A" CMAP="{internal:passWord}:authgen:*:*:{IntenalNetList}" CMAP="{external:passWord}:authgen:*:*:*" 生成された、パスワードは、書式 "passWord/%i"となり、そして、そ のような認証フィールドを伴うリクエストは、delegatedで拒否されま す。このように、偽造パスワードは、delegatedのあるホストを通過で きません。 fromgen:fromString 指定した場合、HTTPリクエスト中のオリジナルヘッダがオリジナルの Fromフィールドを持たない場合、"From: fromString"が書き込まれます。 fromStringを省略した場合、デフォルト値は、"%u@%h"となります。 log:remoteHost:Ident:authUser HTTPサーバにおける、共通ログファイル形式のクライアント情報パート を指定します。デフォルト値は、AUTH="log:%h:%u:%U" です。 %F -- From フィールド中のE-Mailアドレス %L -- From: local@domain フィールド中のlocalパート %D -- From: local@domain 中のdomainパート %U -- Authorization: userame:password のusernameパート %P -- Authorization: userame:password のpasswordパート %Q -- Forwarded: フィールド中の 'for FQDN'パート    例) ファイアーウォールdelegatedから、フォワードされた、元クライアン ト情報を内部delegatedに記録する(ファイアーウォールのdelegatedで Fromフィールドが生成され、内部delegatedに記録します。) firewall% delegated AUTH="fromgen:%u@%h" ... internal% delegated AUTH="log:%D/%h:%L/%u:%U" ... ftpサーバベースの認証を使用した場合、認証情報のユーザ名は、 `user@host.domain'のようなE-Mailアドレスが推奨されます。それらは 一般的に、`anonftp' と `proxy' のために使用します。 -------- DGPATH dir1:dir2:... (default: +:.:${HOME}/delegate) FCL filter-command FFROMCL filter-command FTOCL filter-command FSV filter-command FTOSV filter-command FFROMSV filter-command FMD filter-command FFROMMD filter-command delegatedとクライアント間でデータ転送するためのフィルタコマンドを指定し ます。フィルタは、FCL,FSV,FMDを除いて、標準入力から入力を受け取り、標準 出力へ出力を書き込みます。FCL,FSV,FMDのためのフィルタコマンドは、クライ アントのため、ファイルディスクリプタ0の接続を提供します。 以下のような形式で、CMAPを使用し、条件付で、フィルタを利かせることができ ます。 CMAP=filter-command:filter-name:protoList:dstHostList:srcHostList 例として、CMAP="sslway -co:FSV:telnet:hostA:*" は、HostA上のテルネットサ ーバに接続するときのみ、SSLwayフィルタを利かせることができます。 -------- RPORT {tcp,udp} RPORT {tcp,udp}:host このパラメータは、MASTERパラメータとともに使用しなければなりません。 ? 指定した場合、そのMASTER delegatedに対して、MASTER delagetedから、この delegatedへの接続(データ転送応答)は、接続(データ転送要求)を、別々に 確立します。指定された形式の応答接続は、MASTERから、指定したホストの delegatedに送られます。 -------- ?RPASV ((まだ、使えません)) RPORTと同様ですが、接続は、delegatedから、MASTER delegatedに確立されます。 -------- HTTPMAIL server:relay HTTPMAIL server:relay:mailsplit 指定される場合、delegatedは、電子メール経由でリモートHTTPサービスにアク セスします。`server'は、HTTPMAILサーバの電子メールアドレスです、そして、 `relay'がHTTP MAIL クライアントの電子メールアドレスです(delegatedにある かもしれません)、そしてそれは、サーバからの応答受け取り、delegatedへリ レーします。 `mailsplit'は、サーバから応答メッセージの各切り離されたメッセージの妥当 な最大サイズを示します。 -------- FILETYPE suffix:gopher-type:alt:icon:content-type content-typeマッピングにファイル名を指定する。 gopher-type: 0 - text, 1 - directry, 4 - BinHex, 6 - uuencode, 9 - binary, g - gif, I - image, ... alt: テキストオンリーディスプレイ上でのアイコンイメージのため、表示さ れなければならない代替テキスト icon: binary,binhex,compressed,directory,document,ftp,gzip, image, index,index2,movie,sound,tar,telnet,text,unknown,uu (HTTP-DeleGateのhttp://-.-/-/builtin/icons/を見てください) content-type: text/plain, image/gif, ...(RFC1521参照) 例) FILETYPE=".txt:0:TXT:text:text/plain" FILETYPE=".gif:g:GIF:image:image/GIF" -------- *CMAP result:mapname:protoList:dstHostList:srcHostList -------- *NNTPCONF spec-list (default: upact:600/300/60) server:host [ :port ] [ /grouplist ] nntp://*/... や、 news:...などのURLでリクエストされるNNTPサーバを指定。 pathhost:Server/PathHost -- サーバ-ホストのPathHost名を定義してください。 例)NNTPCONF="etlinn.etl.go.jp/etl.go.jp" upact:Invoke/Reload/Posted -- アクティブリストキャッシュの更新をコントロールする。 Invokeと、Reloadで、キャッシュの有効期限を秒数で指定。 delegated経由で記事が投稿された後、キャッシュは、Postedで指定さ れた期限内でも、ユーザによりLISTコマンドでチェックすることによっ て、アップデートされます。 overview.fmt:{FieldList} (default: {Subject,From,Data,Message-ID,References,Bytes,Lines}) XOVERコマンドに与える、応答メッセージの構成。 xover:Number (default: xover:2000) "XOVER range"での、記事の最大数を制限 nice:Number (default: none) 指定した場合、nice値をセットします。 auth:srcHostList クライアントホストが、srcHostListに含まれる場合、NNTPセッション開始時に 認証(AUTHINFOを使用)を強制します。 nntpcc:number (default: 1) "nntpcc:0" とした場合 NNTP "接続キャッシュ" を無効にします。 -------- *CRON cron-spec (default: none) cron-spec中で指定された時間に起因してアクションを起こす。Cron-spec は、Unixシステムの"cron"サーバと互換性を持つ以下の構文で書かれます。 minute hour day month dayofweek action アクションが'/'でプリフィックスされる場合、それはsystem()機能によっ て実行される外部のアクションです。アクションが'-'でプリフィックスさ れる場合、それはDeleGate内蔵の内部アクションです。 -suspend − N 秒静止する -restart − delegatedを再起動する -exit − delegatedを終了する -expire N − "-atime +Nd" で$CACHEDIRのエクスパイアを執行する) -system command − シェルコマンドとして`command'の実行 #-fetch URL #-refresh URL /path/of/com args − "-system/path/of/com args" と同等 -args − "/path/of/delegated args" と同等 -Ffunc args − "/path/of/delegated -Ffunc args"と同等 例題: CRON="0 0 * * * -restart" CRON="0 3 * * * -expire 3"(これは、以下に同等です) CRON="0 3 * * * -Fexpire /path/of/cache -rm -atime +3 -sum" CRON="0 3 * * * /path/of/delegated -Fexpire /path/of/cache -rm -atime +3 -sum" *INETD server-conf (default: none) リクエストが指定したポートにきた時、指定した設定で、新しいDeleGateプロセ スを起動します。設定の書式は、Unixシステムのinetd.conf(5)と似ています。 [host:]port stream/dgram tcp/udp nowait/wait user exec-path arg-list 特殊な exec-path "-"は、arg-listで、delegatedの子プロセスを開始すること を意味します。delegatedの親プロセスの設定は、子プロセスに継承されます。 例として、delegated ADMIN=foo EXPIRE=1 INETD="conf1" INETD="conf2"で、呼 び出された、delegated親プロセスはのADMINとEXPIREは、"conf1" と "conf2"に 指定されたdelegatedに継承されます。 メモ:"what"ステートは現在のバージョンではサポートされません。 例) INETD="8080 stream tcp nowait nobody - SERVER=http" INETD="8080 - - - nobody - SERVER=http" (equivalent to the above) INETD="8119 - - - - - SERVER=nntp://nntpserver/" INETD="8888 - - - - /bin/date date" (equivalent to the following) INETD='8888 - - - - - SERVER=exec XCMD="/bin/date date"' INETD="8888 dgram udp - - /bin/date date" INETD="localhost:8888 - - - - - /bin/sh sh" INETD=+=/path/of/inetd.conf (ファイルから設定を読込む) -------- *ICP icpServers *ICP icpServers:icpOptions:proxyPort:icpPort *ICP icpServers:icpOptions:proxyPort:icpPort:dstProtos:dstHosts:srcHosts CONNECTシーケンスに"icp"が含まれる場合に参照される、ICPクライアント設定 icpServersは、カンマで区切られた、icpサーバのリストで、それぞれ以下のよ うに表現します。 icpHost/icpType/proxyPort/icpPort icpHost ICP サーバのIPアドレスまたは、ホスト名 [localhost] icpType "s" -- ICP サーバは、 "sibling"(兄弟) [default] "p" -- ICP サーバは、 "parent" (親) "w" -- ICP サーバは、応答しない "listener"(聞き手) "n" -- ICP サーバは ナビゲーションプロキシ "o" -- HIT_OBJ 応答を要求 "H" -- 目的サーバは、 HTTP プロキシ [default] "D" -- 目的サーバは、 MASTER DeleGate "O" -- 目的サーバは、元サーバ #### "P" -- 目的サーバは、元プロトコルの、プロキシ proxyPort 目的サーバに相当するポート番号 [8080]. icpPort ICP プロトコルのポート番号 [3130]. icpOptions: timeout/N -- ICP クライアントとしての応答待ち時間 [2.0](seconds) parent -- icpServers のデフォルトタイプを "parent"としてマーク listener -- icpServers のデフォルトタイプを "listener"としてマーク hitobj -- デフォルトとして、HIT_OBJ をすべての icpServers に許可 Origin -- 目的サーバは、元サーバ DeleGate -- 目的サーバは、DeleGate 例) ICP=icphost (これは、ICP="icphost/sH/8080/3130:timeout/2.0:8080:3130:*:*:*"   の省略形である、簡単な使い方です) ) ICP="host0" ICP="host0//8080/3130" ICP="host0::8080:3130" ICP="host1:timeout/1.0:::http,ftp:!*.my.domain:*.my.domain" ICP="host1,host2/O/80/13130:timeout/2.0:8080:3130" -------- *ICPCONF {para:N,hitage:N,hitobjage:N,hitobjsize:N,timeout:N} ## *ICPCONF icpOptions:dstProtos:dstHosts:srcHosts DeleGateがSERVER="icp"で、ICPサーバとして動作しているときのICPコンフィギ ュレーション para:N -- 並列 ICP-DeleGate サーバの数 [2] hitage:N -- HITとして通知する、キャッシュデータの有効期間 [1d] hitobjage:N -- HIT_OBJとして送信する、キャッシュデータの有効期間 [1h] hitobjsize:N -- 最大値。HIT_OBJでのキャッシュデータ [1024](bytes) timeout:N -- 待ち応答のデフォルトタイムアウト [2.0](seconds) ## nofetch -- MISSのためにNOFETCHを返す (off) debug:N -- デバッグ用ログレベル [0] -------- *DNSCONF DNS-DeleGateサーバ(SERVER=dns)の設定を指定 para:N -- the number of paralles server process [2] domain:FQDN -- [domain of the host of DeleGate] origin:FQDH -- [host of the host of DeleGate] admin:Email -- the mail address of the administrator [ADMIN] serial:N -- serial number [%Y%m%d%h of configuration change] refresh:N -- refresh interval [3600] retry:N -- retry interval [600] expire:N -- expire period [3600*24] minttl:N -- minimum ttl [3600] 例) SERVER=dns RESOLV=cache,file,nis DNSCONF=domain:my.domain -------- VSAP vsap-host:port (default:none) クライアントから/への接続に使用するVSAPサーバを指定する。VSAPは、サーバ ーがリモートホスト経由TCP接続を受ける事を可能(リモートホストを通して接 続するのと同様)とする、リモートソケットマッピングサーバです。 例) firewall% delegated -P8000 SERVER=vsap PORT=8080-8090 -- VSAPサーバ internal% delegated -P8080@firewall:8000 ... -- VSAP経由で許可する、外部のクライアントのための内部サーバ internal% delegated -P8080 CONNECT="{vsap/firewall:8000}" ... -- VSAP経由で接続する、内部クライアントのための代理サーバ internal% delegated -P8080 VSAP=firewall:8000 ... -- VSAPサーバ経由で接続/許可 -------- *HTTPCONF conf-script (default: welcome:welcome.html,welcome.cgi, index.html,index.cgi,-dir.html) welcome:listOfWelcomeFiles インデックスファイルのリストあるいはCGIスクリプト。これは、"/path/"の ように"/"で終わるディレクトリのURLなければなりません。これは、候補となる ファイル名の表です。リストは、内蔵インデックスジェネレーターを意味する、 "-dir.html"で終わる事ができます。リストが空の場合、空データがインデック スデータに代用されます。 search:pathOfSearchScript (default: none) "/path?search"のようなサーチパートをもつURLを処理するためのCGIスクリプ トのパス。これは、全てのURLのために適用されたグロ―バルな仕様です。 同様に、各マウントポイントのために MOUNT="/path2/* /root/of/path2/* search:srcipt2" のようなローカルサーチスクリプトを指定することができます。このローカル仕 様は、グロ―バルものに優先します。特別なローカル仕様"search:-"は、マウン トポイントのため、グロ―バル仕様を無視するために使用できます。 例) HTTPCONF=search:/path/of/searchScript MOUNT="/* file:/path/of/data/*" MOONT="/bin/* cgi:/path/of/cgi-bin/* search:-" -------- SMTPGATE config-dir(default:${ETCDIR}/smtpgate) SMTP の{SMTP,NNTP,FTP}ゲートウェイ用コンフィギュレーションディレクトリ を指定。 -------------------------------------------------------------------------------- ProtoList [!]protocol,... ProtoListは、','で切り離されたプロトコル名のリストです。 予約名`*'は、すべてのプロトコルを意味します。`!'が前に置かれる場合、その プロトコルはプロトコルリストから除外されます。 特別なプロトコル名'tcprelay'と'udprelay'は、TCPとUDP上のアプリ ケーションプロトコル用の共通全二重通信路を提供します。 -------- HostList [!]host,host/mask,... HostListは、ホスト名とIP-addressのリストで、オプションとして、マスク値、 または、IPアドレス範囲指定が続きます。このリストは、リスト中ににホスト名 あるいはIPアドレスが含まれるかどうか突き合わせて調べる際に使用されます。 `*.ac.jp'または`*.etl.go.jp'のように、ホスト名にワイルドカードキャラクタ ー`*'をポスト/プリフィックスできます。IPアドレス範囲を、192.168.[0-255]、 192.168.1.[32-64]ように、指定できます。これらの範囲は、192.168.0.0/16 お よび、 192.168.1.32/27とも書けます。 これらの特別なホスト名は、実行時に実際のホスト名で代用されます。 "." -- delegated が動作しているホスト "-" -- ホストがユニークなIPアドレス(ネットワークインターフェ ース)を持つ場合、"." と同じです。複数のIPアドレスを持つ場合、 それは、クライアントがdelegatedに接続したIPアドレスとなります。 ".o" -- ホストがユニークなIPアドレスを持つ場合、"."と同じです。 複数のネットワークインターフェースを持つ場合、出力ネットワークイ ンターフェースです。 ".localnet" -- "localhost,./@,-/@,.o/@" をあらわします。 "-C" -- クライアントホスト。クライアントからクライアント(ネットワーク)の みへのアクセス制限に役立ちます。 "?" -- レゾルバの知らない名前/アドレス(RESOLV に列挙)`unknown hosts' にマッチします。 ホスト名(またはIP アドレス)が"-hostname"("-192.168.1.1") のように、 "-" で始まる場合、ホスト名(IP アドレス)に対する名前解決(逆引き)を行い ません。これは、解決できないホスト名(IPアドレス)に対する解決時間の浪費を 避けます。 マスク値を指定すると、部分的なアドレス(通常ネットワークアドレス)チェッ クをすることができます。 マスク値は、4つの書式の一つの中で指定することができます; 16進、ドット表記のインターネットアドレス、'@'、または'@A'、'@B'と'@C' のうちの1つ。'@'は、ホストのIPアドレスをマスクするため、デフォルトネッ トワークマスクを意味します。@A、@B、@Cはそれぞれ255.0.0.0、255.255.0.0、 255.255.255.0を意味します。'@X'表記は、サブネットのため、ビット数を続け ることができます;例えば、`@B4'は16のサブネットに分割されたクラスBネット ワークを意味します。 '!'がホストの前に置かれる場合、ホストがリストから除外されることを意味し ます。リストの中の要素の全ては、最初のものから最後のものまでスキャンされ ます。したがって、一度含まれた(除外された)名前が、リストから除外される (含まれる)かもしれません。 HostListはソースホストに関して、ユーザー名(UserList)リストは、 {user1,user2,...}@hostのようにプリフィックスしたホスト名とすることができ ます。否定シンボル'!'は、HostListの中でも同じ意味を持ちます。 !user@hostが{!user}@hostと異なる点に関して;前者は、user@hostを除外し ますが、{*,!user}@hostを意味しますので、*@host(user@host)を含めます。 特別なユーザー名`?'は、identdによって名前が識別されないユーザーを突き合 わせます。未知のホストあるいは未知のユーザーからのアクセスを "RELIABLE={!?,!?@*}"で禁止することができます。 "-H"が頭にある、擬似ホスト名パターンにより、アクセス可能な時間帯を指定します。 "-H.timePeriod" -- 現時刻が、timePeriod 内であれば、マッチ。 例) PERMIT="*:-H.9-16:hostList1" PERMIT="*:-H.17-8:hostList2" "hostList1"は、終業時間中使用可。"hostList2" は、終業時間外使用可。 COMPOSIT operators "|" -- OR 演算子のように使用 ("A,|,B") Aが真となる場合、Bの評価にかかわらず、 真になる。その他、完全な真となるには、Bは真でなければならない。 "&" -- AND 演算子のように使用( "A,&,B") Aが偽となる場合、Bの評価にかかわらず、 偽になる。その他、完全な真となるには、Bは真でなければならない。 "!" -- NOT 演算子のように使用("A,!,B")Aの表か結果は反転され、続いてBが存在すれば、 評価する。 例) PERMIT="*:*:-H.9-16,&,hostList1" PERMIT="*:*:-H.17-8,&,hostList2" 前例と同様の意味。 -------------------------------------------------------------------------------- 代用 オプションと値は、外部の‘代用リソース’からロードすることができます。 '+=file'のようなオプションは、`file'という名前をつけられたリソース中に 列挙されたオプションリストにより代用されます。 'name=+=file'のようなオプションは、'name=value'のリストで代用されます。 'value'は'file'中で列挙されます。 置換えは、再帰的にすることができます。この場合、相対リソース名は、DGPATH の中で探索されます。デフォルトで、DGPATH="+:.:${HOME}/delegate"の、'+'は、 'caller'リソースの存在場所をあらわします。 例えば、`+=file2'がファイル`/usr/etc/file1'から参照されル場合、`file2'は、 最初に`/usr/etc/file2'として探索されます。 リソース名は、`+={http://host/file}'のようなURL中で指定することができま す。 置換えリソースは、オプションリスト(あるいは値)で、各ラインはオプション (あるいは値)をあらわします。各ラインで、シャープキャラクター(#)の後 の文字列は、コメントとして無視されます。各ラインの始まりと終りの空白文字 (SPACE, TAB, LF and CR)は、無視されます。一重引用符(')と二重引用符(") は、取り除かれます。バックスラッシュキャラクター(\)に続くキャラクターは、 そのまま使われます。 delegatedがSIGHUPシグナルを受け取ったとき、代用リソースは再ロードされま す。 他の代用は、ローカルファイルシステム(ACTDIR)の一時ファイルにURLコンテ ンツ "name=-=URL" として、読込まれます。その時、パラメータは、 "name=/path/of/temporary-file"に、書換えられます。 これは、リモートリソースをCGIやCFIプログラムに、 "-eCONFIGDATA=-=http://server/configdata"のように渡す時役立ちます。その とき、それらプログラムは環境変数CONFIGDATA(値は、内容を含む一時ファイル 名"http://server/configdata")を得ます。 URL書換規則 プロトコルURLの一般的書換規則は、以下のように、HTTPプロキシによって、ゲ ートウェイされます。 元 書き直されたURL --------------- ---------------------------------- P://OH:OP/F -> http://DH:DP/-_-P://OH:OP/F DHとDPはそれぞれdelegatedのホストとポートを意味します。 リダイレクトされたURLは、3つの部分から成ります: プロキシパート : http://DH:DP/ デリミタ : -_- 元 URL : P://OH:OP/F PがHTTPの場合は、省略できます。この書換規則は、Gopherを除いた、他のプロ トコルのプロキシのために適用します。Gopherプロキシでの書換えは、次のよう でなければなりません: 元 書き直されたURL --------------- ---------------------------------- gopher://H:P/GS -> gopher://DH:DP/G-_-gopher://H:P/GS ここでの、'G'と'S'は、それぞれ、'gtype'と'selector'を意味します。実在デ ィレクトリの書換規則はURLのそれとコンパチブルです。 G User_Name Tab S Tab Host Tab Port -> G User_Name Tab -_-gopher://Host/Port/GS Tab DH Tab DP -- DELEGATE スイッチングテーブル -- Delegatedは、すでにリダイレクトされた要求に書換規則を適用しません。した がって、HTML中にdelegateスイッチテーブルを書き込むことができます。互いに 異なるネットワークに接続された二つのファイアウォールホストを持つと仮定し ます: firewall1 -> NTT firewall2 -> NTT 10080と20080の上のHTTP SPECIALIST delegatedが存在し、それらは、例として、 firewall1とfirewall2の上でそれぞれProxy_httpdに接続しています。 -- 修飾句 -- -_- マークの後、任意の`/Modifier/'書式は、次のように挿入できます: http://delegate/-_-/Modifier/URL 修飾句は、カンマ(,)で区切られた複数の修飾句リストにできます。 cc -- ``cc.OutCode.InCode''として指定されたクライアントの文字コード F -- は、``=flags=''拡張(古い表記)と互換性を持つフラグキャラク タのリストです。 # 古くなった修飾句 # #(URL中のエンコードステート) # # -_-マークの後、任意の`=flags='書式は、次のように挿入することができます。 # # -_-=JN=gopher:H:P=G # #delegatedに向けられた要求に含まれるフラグは、URLあるいはDirEnt中に応答の中でコ #ピーされます。このように、フラグは、HTTPとGopherのようなステートレスなプロトコ #ルのいくつかの`state'に相当します。現在サポートされたフラグは: # # N DELEGATE指定を無視して、インターネットアドレス番号を使用します # E CHARCODE変数を無視して、EUC出力を強制します # S CHARCODE変数を無視して、SJIS出力を強制します # J CHARCODE変数を無視して、JIS(ISO-2022-JP)出力を強制します # I II出力を強制します # c 日本語JIS変換にCN(中国語BIG5,GB,HZ)入力を強制します # C キャッシュを無効にします。 # #これら書換えは、ユーザが実在のクライアントから呼び出された場合、スクリプトコマ #ンドによって実現できます。 #DeleGate配布ファイルディレクトリ中の bin/に、`go-far' スクリプトがあります。 -- 短所 -- この書換メカニズムは、クライアントのユーザーに、DeleGateを使用している事 を意識することが強制されます。URLのようなロケーターを指定することによっ て、直接何かを開く場合、ユーザは、DeleGateを使用するための、URLの特別な エンコード書式を知っていなければなりません。DeleGate経由で得られたHTMLテ キストを保存するとき、含まれるURLをオリジナルの書式に書き直さなければな りません。しかし、PROXY_HTTP機能をもつクライアントがあれば、DeleGateはユ ーザーから見えない存在になり、これらの欠点はキャンセルされます。それらの クライアントはProxy_httpdのためにDeleGateを使用する、あるいは、JISコード 変換のためだけにDeleGateを使用することができます。 -------------------------------------------------------------------------------- DeleGate-トンネル -Pオプションが指定されない場合、標準入出力はクライアントに対する固定され た通信回線として使用されます。この場合、通信回線は、`DeleGate-TUNNEL'と して呼ばれます。そして、接続は、通信回線上でDeleGateプロトコルに修正され ます。トンネルは、delegatedがinetdから起動される場合や、シリアルラインの ようなnon-IP通信回線で接続されるとき、あるいは、プロトコル-フィルターを かけたルーターを使用して許可されたプロトコルを使用しなければならない場合 に使用します。 -------------------------------------------------------------------------------- -- HTTP-DeleGate -- 簡単なdelegatedの使用法として、HTTPクライアントに対し'firewall'ホスト上 でProxy-HTTPサーバとして実行するには、以下のようにします。 firewall% delegated -P8080 SERVER=http://-/-/ RELIABLE=internal この時、'internal'ホストからで使用するには: internal% setenv http_proxy http://firewall:8080/ internal% setenv ftp_proxy http://firewall:8080/ internal% setenv gopher_proxy http://firewall:8080/ internal% setenv wais_proxy http://firewall:8080/ internal% mosaic http://info.cern.ch/ ホスト`firewall'上のProxy_httpdがポート8080で有効な場合、`internal'ホス トで、以下のように、利用することができます。 internal% delegated -P10080 PROXY=firewall:8080 \ SERVER=http://www.ntt.jp:80 他の場合で、GENERALIST DeleGateをファイアウォール上で実行する必要がある 場合で、`internal'ホスト上のSPECIALISTが'firewall'のGENERALISTを使用する 場合。 firewall% delegated -P19999 RELIABLE=internal internal% delegated -P10080 MASTER=firewall:19999 \ SERVER=http://www.ntt.jp:80 delegatedを起動後、以下のように、使用してみてください。 もし、WWWクライアントが、プロキシを使用可能なら: localhost% setenv http_proxy http://internal:10080/ localhost% mosaic localhost% mosaic http://info.cern.ch/ それ以外: localhost% w3client http://internal:10080/ localhost% w3client http://internal:10080/-_-://info.cern.ch/ 最初の例の各ケース中で、mosaic(w3client)が接続するデフォルトサーバは、 delegatedのコマンドライン(この場合、www.ntt.jp)で指定されたものです。 第二例題の中で、コマンドライン(info.cern.ch)中で指定したサーバに、接続 します。 -- DeleGate を HTTP 元サーバとして使う -- host# delegated -P80 SERVER=http REMITTABLE=file,cgi \ MOUNT="/* /path/of/root/*" ".cgi"の拡張子をもつファイルは、CGIスクリプトとみなされます。 同様に、指定されたディレクトリで、以下のように、CGIスクリプトに任意の名 前を使用することができます MOUNT="/xxx/* cgi:/path/of/cgi-bin/*" -- DeleGate を CGI プログラムとして使う -- HTTPサーバからCGIプログラムとしてDeleGateを使用することができます。 例)``httpd.conf''中で次のようにHTTP server(A)のファイルを指定してくださ い。 Exec /other/* /path/of/cgi-delegate そのとき、次のようにファイルの内容、/path/of/cgi-delegateを書き込んでく ださい: #!/bin/sh delegated -Fcgi MOUNT="/-* =" \ MOUNT="/www2/* http://www-server2/*" \ MOUNT="/news/* nntp://nntp-server/*" これは、HTTPサーバ``www-server2''の内容である/other/www2/とnntpサーバ ``news-server''の内容である/other/news/を含むserver(A)の上で、疑似下位ツ リー``/other/''を加えます。 -- Gopher-DeleGate -- firewall% delegated -P19999 RELIABLE=internal internal% delegated -P10070 MASTER=firewall:19999 CHARCODE=JIS \ SERVER=gopher://gopher.ncc.go.jp:70 localhost% gopher internal 10070 localhost% gopher -p -_-gopher://gopher.tc.umn.edu internal 10070 localhost% gopher -p -_-=E=gopher://gopher.tc.umn.edu internal 10070 `-_-'マークの後の`=E='含むクライアント呼出しの第三例題では、EUCへのコー ド変換がサーバでサーバのCHARCODE値を無視して行わなければならないことを示 します。 メモ:GENERALIST delegatedは、HTTP、Gopherや、他のSPECIALIST delegatedの 間で共有することができます。 -- FTP-DeleGate -- SOCKS化しないノーマルFTPクライアントで、ファイアウォールを通過させること ができます。`FTP-Proxy'として次のよにdelegatedを実行します: filewall% delegated -P8021 SERVER=ftp RELIABLE=internal これで、外部のFTPサーバにFTP-Proxy経由で接続することができます。 擬似ディレクトリ`//server'に移動することによりFTPサーバに接続されます。 internal% ftp ftp> open firewall 8021 220-- firewall PROXY-FTP server (DeleGate2.3.0) ready. 220-- @ @ 220-- ( - ) { DeleGate2.3.0 by ysato@etl.go.jp } 220- You can connect to a SERVER by `cd' command as: 220- ftp> cd //SERVER 220 Name (ysato:ysato):ftp 331 Guest login ok, enter your E-mail addre ss as password. Password: ysato@etl.go.jp 230- Guest login ok, your E-mail address is 230-Now you can select a FTP SERVER by cd //SERVER 230 ftp> cd //host1.domain1/ 220 host1.domain2 FTP server ready. ftp> cd //host2.domain2/ 220 host2.domain2 FTP server ready. ftp> メモ:UNIX上のメジャーなFTPクライアントは、コマンドラインでFTPのポート番 号を以下のように指定することができます。 internal% ftp firewall 8021 - FTP-Proxy のカスケード - firewall# delegated -P21 SERVER=ftp PERMIT="ftp:*:internal" internal# delegated -P21 SERVER=ftp PROXY=firewall:21 同様に、Wu-ftpdはプロキシとして指定されることができます。 - FTP MOUNT - フィルタリング、マージ、エイリアシング filewall# delegated -P21 SERVER=ftp://serv1/ \ MOUNT="/pub2/* ftp://serv2/pub/*" \ MOUNT="/pub3/* ftp://serv3/pub/*" このdelegatedは、主にserv1の中継をしますが、/pub2/*をserv2のそれと取り替 えます。 - FTP to LPR (Line Printer Daemon Protocol) ゲートウェイ MOUNT="/* lpr://printer0/qname0/*" MOUNT="/pr1/* lpr://printer1/qname1/*" MOUNT="/pr2/* lpr://printer2/qname2/*" -- DeleGate を FTP 元サーバとして使用する -- host# delegated -P21 SERVER=ftp MOUNT="/* /path/of/root/*" この場合、STOR (ファイル書きこみ) は、デフォルトで許可されません。 MOUNTポイントを、書きこみ可能にしなければならない場合、 MOUNT="/xxx/* /yyy/* rw"の様に、マウントオプションに"rw"を指定する必要が あります。 -- Telnet-DeleGate -- firewall% delegated -P8023 SERVER=telnet RELIABLE=internal internal% telnet firewall 8023 -- @ @ PROXY-TELNET server on DeleGate2.3.0 by ysato@etl.go.jp -- ( - ) { Enter empty host name if you won't continue. } Host name: ysato SunOS UNIX (ysato) login: -- POP-DeleGate -- firewall# delegated -P110 SERVER=pop external% telnet firewall pop +OK Proxy-POP server (DeleGate2.4.4) at firewall starting. USER username@servername ... 同様に、ユーザー名`username%servername'も使用できます。 −POP マウント− ``user@server'は、内部的に``//server/user''に相当します。 以下のようにMOUNTでコントロールできます: MOUNT="//* =" ... ユーザーがサーバを指定するばあい再書込みしません MOUNT="*pop://defaulthost/*" ... デフォルトPOPサーバを指定します MOUNT="user1 pop://host/*" ... pophostをuser1のサーバにします MOUNT="//pop1/* pop://host1/*" ... ホスト名host1を隠します - POP NNTP ゲートウェイ SERVER=pop REMITTABLE=nntp MOUNT="* nntp://nntpserver/*" MOUNT="ns2-* nntp://nntpserver1/* apop=password" MOUNT="ns3-* nntp://nntpserver2/* pass=password" クライアントは、ニュースグループ名をユーザ名として送信することを期待しま す。 -- POP/HTTP ゲートウェイ DeleGate -- firewall# delegated -P80 MOUNT="/mail/* pop://mailHost/*" このdelegatedは、POPサーバ(デフォルトmailHostの)のメールボックスをHTTPク ライアントに供給します。クライアントが"http://firewall/mail/"にアクセスする 時、mailHostのPOPサーバに対して、HTTP認証情報として、ユーザ名とパスワードが、 要求されます。 ユーザ名が "user@mailHost2"形式の場合、mailHostではありません が、mailHost2は、POPサーバとしてアクセスされます。 ホストサーバ上の、それぞれのユーザメールボックスは、 "http://firewall/mail/+pop.User.Host" のように指定でき、このようにして、直接 的にユーザとホストをURL中に指定できます。 -- NNTP-DeleGate -- フィルタリング firewall# delegated -P119 SERVER=nntp://news-server/group. `group.*'の名前パターンを持つニュースグループだけリレーします。 グループのリストは、`nntp://news-server/group1.,group2.,...'のようにニュ ースサーバーのために指定することができます マージ firewall# delegated -P119 SERVER=nntp \ MOUNT="= nntp://server1/" \ MOUNT="= nntp://server2/" 2つのnntpサーバ上のニュースグループをマージする。 エイリアシング MOUNT="= nntp://server1/group." オリジナル名にgroup.*を持つグループのマウント。 MOUNT="alias-group. nntp://server1/group." グループ group.* をエイリアス名`alias-group.*'としてマウント POPからNNTPへのリレー MOUNT="= pop://user:pass@host/" メールスプールに、`+pop.user.host.'という名前のニュースグループをマウン ト -- NNTP/HTTP ゲートウェイの DeleGate -- firewall# delegated -P80 MOUNT="/net/news/* nntp://nntp-server/*" -- DeleGate を NNTP 元サーバとして使用する -- % delegated -P119 SERVER=nntp://-.-/ 新規のニュースグループを``NewsGroup''という名前で作成 → 空ファイル${ETCDIR}/news/groups/NewsGroupを作成 現行の``/MH/folder''を``NewsGroup''としてリレーします →コンテンツをもつ${ETCDIR}/news/groups/NewsGroupのファイルを 0 0 0 0 /MH/folder のように作成します。 (4つのゼロの後にMH-folderのパス名が続きます) -- SMTP-DeleGate -- エイリアシングとフィルタリング firewall# delegated -P25 SERVER=smtp://mail-server/ \ MOUNT="foo@bar smtp://foo2@bar2" \ MOUNT="* smtp://-" (バグ:ターゲットは、mailto:user2@bar2でなければなりません...) -- mail経由の HTTP -- HTTPMAILサーバ メールをから"|delegated FUNC=hmserver"に転送 するようにセットアップします。 HTTPMAILクライアント メールをから"|delegated FUNC=hmrelay"に転送する ようにセットアップします。。 HostA% delegated -P8080 \ HTTPMAIL=hmserver@serverhost.domain:hmrelay@yourhost.domain HostAは、yourhost.domainのメールサーバーからIP接続可能でなければなりませ ん。典型的に、HostAはyourhost.domainをもつ同じホストです。テストのために、 サーバとして`hmserver@wall.etl.go.jp'を使用できます。 -- LDAP-DeleGate -- firewall# delegated -P389 SERVER=ldap これを指定することで、DeleGateサーバはクライアントのLDAPサーバとなり、 また、ルートディレクトリ名の後に、"@host.of.ldap-server" を付け加えます。 (サーチのためのbaseObject名など) -- Whois-DeleGate -- firewall% delegated -P19999 RELIABLE=INTERNAL INTERNAL# delegated -P43 SERVER=whois MASTER=firewall:19999 internal% whois -h INTERNAL whois://whois.nic.ad.jp/help -- CU-SeeMe/DeleGate -- firewall% delegated -P7648 SERVER=cuseeme://Reflector/ RELIABLE=INTERNAL INTERNAL# delegated -P7648 SERVER=cuseeme://firewall/ internal% {use firewall or INTERNAL as a proxy-reflecter for Reflector} -------------------------------------------------------------------------------- 予約名 特殊名`-'と`-.-'は、URLの`host:port'部分の中で使用されるとき、その delegate自体のホストとポートを意味します。そして、URL `http://-.-/-/'は、 delegatedのコントロールページのエントリーポイントのために予約されていま す。 ファイル ${DGROOT}/etc -- 主としてコンフィグレーション用持続的ファイル ${DGROOT}/log -- 増加する、ログファイル ${DGROOT}/work -- コアダンプ用 ${DGROOT}/cache -- キャッシュデータ用 ${DGROOT}/act -- アクティブなDeleGateプロセスの制御情報 ${DGROOT}/tmp -- シャットダウン時削除される揮発性ファイル 記述の詳細は、DGROOTパラメータを見てください。 著者 Yutaka Sato Electrotechnical Laboratory (AIST,MITI), Tsukuba, Ibaraki 305, JAPAN 配布 DeleGateの最新バージョンは、tar+gzipフォーマットのファイル``delegate*. tar.gz''として、 にあります。 訳者 Suzuki Hiroshi Columbia Information System., inc. Kawasaki, minato-cho 5-1, JAPAN リリース 6.0 最終更新: October 29, 1999