Lookups |
Lookupは、外部ソースにあるオブジェクトおよびその値を参照するためのコモンインターフェースです。値はカンマで区切られます。lookupの種類を定義する特別なプレフィックスを値の前に置くことが出来ます。 [prefix1:]value1, [prefix2:]value2, ... プレフィックスが指定されていない場合、値はそのまま使用されます。使用可能なプレフィックスは以下のとおりです。
[param1=val1|param2=val2|...|] ldap_url ldap_urlはLDAPクエリのURLで、param1、param2などは、そのlookupに対するDr.Web MailD設定ファイル[LDAP]セクションからのローカルパラメータです。このセクションからは、使用可能であると明示的に述べられているパラメータのみ指定することが可能です。 LDAP URL は以下のようになります。 ldap://hostport/dn[?attrs[?scope[?filter[?exts]]]]
例: ldap://ldap.example.net/dc=example,dc=net?cn,sn?sub?(cn=*) フィルタ名には特別な記号のセットを指定することが出来ます。この値はクエリがLDAPサーバへ送られる前に、必要なエレメントに変更されます。
LDAPを使用する場合、OpenLDAP v. 2.0以降のライブラリが必要です。
[param1=val1|param2=val2|...|] sql_request param1、param2 などは、ODBC lookupおよびOracle lookupに対するDr.Web MailD設定ファイルのそれぞれ[ODBC]、[Oracle] セクションからのローカルパラメータです。このセクションからは、使用可能であると明示的に述べられているパラメータのみ指定することが可能です。ldap lookupと同じ特別な記号を使用することが出来ます。 新しいDSN設定が適用されるのはソフトウェアを再起動した後になります(SIGHUPシグナルの送出では既存の接続が再初期化されないことに注意してください)。 ODBCを使用する場合、ODBC version 3.0以降をサポートするODBCライブラリが必要です。このライブラリはスレッド対応でコンパイルされていなければなりません。UnixODBC 2.0以降の使用を推奨します。 Oracleを使用する場合、OTLv8以降をサポートするOracleクライアント付属のlibclntshが必要です。 Oracleに接続する際にユーザ名、パスワード、およびConnectionStringパラメータの値としての接続名(ConnectionString = user/password@connectionname)を指定しなくてはならない場合があります。 接続名の設定には2つの方法があります。
例: tnsnames.ora ファイル: CONNECTIONNAME = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = CONNECTIONNAME) ) ) そこで、 user/password@ CONNECTIONNAME または user/pasword@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = CONNECTIONNAME))) を接続ストリングとして指定することが出来ます。
テーブルからのエントリを読むには以下のコマンドを使用します。 select * from table.cdb where key='123' select * from table.cdb where key='$' CDBデータベースはSQLクエリ入力言語をサポートしていないため、 ドライバはlookupと動作する為にシングルコマンドをSQLにエミュレートします。 select * from @tablename where key='@string' @tablenameはDr.Web MailD設定ファイルの[CDB]セクション内でソースアイテムとして指定されたいずれかのファイル名に変更してください。cdb lookupではldap lookupと同じ特別な記号を使用することが出来ます。 例: cdb:skipdomains=regex:^inbox|select * from my_file where key='$s'
Host=somehost #somehost:3050 Host=somehost/1234 #somehost:1234
SQLiteは、プログラムが書き込みをする間ファイルがロックされる仕様になっています。そのため、複数のプログラムで1つのSQLiteデータベースを使用している場合、データベースへの排他的なアクセスが出来ない時間(Dr.Web MailD設定ファイル[SQLite]セクションのBusyTimeoutパラメータで指定された時間)が生じる可能性があります。その場合、エラーメッセージ"Database is locked"を出して書き込み処理は中断されます。 GUIを持つツールは予備のデータベースをロックすることがあるため、そのようなツールは使用しないようにしてください。第三者プロセスがデータベースを長時間ロックした場合、またはDr.Web MailDそのものが1つのファイルに対して異なるタイプの統計情報を短いタイムアウト時間で出力するようにセットアップされている場合、統計情報のエクスポート中にエラーが発生することがあります。 sqlite lookupではldap lookupと同じ特別な記号を使用することが出来ます。 いくつかのパラメータに対する値が保存されたSQLiteデータベースが一定の時間使用できなかったが、その後接続が復元された場合、SQLiteとの接続を再初期化するためにHUPシグナルがdrweb-maildモジュールに送信される必要があります。
プレフィックスの後に、それぞれのlookupに対して任意のローカルパラメータのリストを以下の書式で指定することが出来ます。 NAME1 = VALUE1 | NAME2 = VALUE2 | ... |
使用可能なローカルパラメータは以下のとおりです。
デフォルトでは"ignore" が使用され、エラーは無視され情報がログに出力されます。 "exception" 値は、共通のエラーとして処理される(例えばProcessingErrorパラメータを使用して)例外を作るよう指示します。企業が対応するセーフティポリシーを取り入れている場合に使用され、それぞれのメッセージはその他のコンポーネント内(lookupが使用しているデータベース内など)で起こりうる全てのエラーに関係なく処理される必要があります。 OnErrorパラメータは全てのlookupセクション(LDAP、ODBC、...)内で指定することができ、それらのlookupの処理中に生じたエラーに対して該当するアクションが適用されます。 OnErrorパラメータを使用したこのエラー処理は、パラメータ値の検索が実行されたときのみ使用することができ、Dr.Web MailDが起動された時には使用できません。そのためスタートアップ時に正常に処理されなかったlookupがあった場合、それらのlookupに対するOnErrorパラメータ値に関係なく、そのようなエラーは致命的とみなされます。 |