ダイレクト LDAP を使用してアドレスリバースを実行するには、まず、USE_REVERSE_DATABASE の値を 4 に設定します。これによってリバースデータベースの使用が無効になります。その後、前述したルーティング機能を使用します。以前のバージョンでは、次の形式のリバース URL の指定からアドレスリバースが開始されました。
REVERSE_URL=ldap:///$V?mail?sub?$Q
$V メタキャラクタについては、すでにエイリアス URL の関連で説明したとおりです。ただし、$Q メタキャラクタは、エイリアス URL で使用される $R メタキャラクタと非常によく似ていますが、アドレスリバース専用に使用されます。$R とは異なり、$Q では、アドレスリバースの候補であるアドレスを含んでいる属性を検索するフィルタが生成されます。検索対象になる属性のリストは、MTA オプション LDAP_MAIL_REVERSES で指定します。このオプションが設定されていない場合は、local.imta.schematag configutil パラメータが調べられ、その値に応じて適切なデフォルト属性のセットが選択されます。
表 9–10 に、local.imta.schematag の値と選択されるデフォルト属性を示します。
表 9–10 local.imta.schematag の値と属性
スキーマタグ値 |
属性 |
---|---|
sims40 |
mail,rfc822mailalias |
nms41 |
mail,mailAlternateAddress |
ims50 |
mail,mailAlternateAddress |
ただし、$Q の使用は、現在は不適切になっています。メッセージの取得やその他の機能を正しく実行するために、アドレスリバースの機能は向上されており、一致があるという事実に加えて、一致した属性に注意を払うようになっています。つまり、$Q の代わりに $R を使用してフィルタを指定する必要があります。また、$N メタキャラクタが追加されていますが、これはアドレスリバース対象の属性のリストを返します。結果のオプション値は、次のとおりです。
REVERSE_URL=ldap:///$V?$N?sub?$R
local.imta.schematag はコンマ区切りのリストにできます。複数のスキーマがサポートされている場合は、組み合わせて重複を削除した属性のリストが使用されます。
また、フィルタは、最初に指定されたアドレスを検索するだけではなく、同じローカル部分を持ちながらドメインツリーで実際に見つかったドメインを含むアドレスも検索します。このドメインは 「書き換えルールの機能」の手順 2 で保存されたものです。ドメインツリー検索の反復性は、この 2 つのアドレスが異なる可能性があることを意味します。
たとえば、ドメイン siroe.com がドメインツリーに存在し、MTA によって次のアドレスが認識されたと仮定します。
u@host1.siroe.com
$R および ims50 スキーマタグの展開の結果から得られるフィルタは、次のようになります。
(|(mail=u@siroe.com) (mail=u@host1.siroe.com) (mailAlternateAddress=u@siroe.com) (mailAlternateAddress=u@host1.siroe.com) (mailEquivalentAddress=u@siroe.com) (mailEquivalentAddress=u@host1.siroe.com)) |
リバース URL によって、正規化されたアドレスを含んでいる属性が明示的に指定されています。これは通常、メール属性です。
URL が構築された後、LDAP 検索が実行されます。検索が成功した場合、最初に返された属性値によって元のアドレスが置き換えられます。検索が失敗した場合、またはエラーが発生した場合は、元のアドレスは変更されません。
アドレスリバース処理が実行される頻度、特にメッセージヘッダーに表示されるアドレスの数および必要なディレクトリ照会による負担を考慮すると、否定的な結果と肯定的な結果の両方をキャッシュする必要があります。これは、開鎖型の、動的に拡張されたメモリ内ハッシュテーブルを使用して実装します。キャッシュの最大サイズは REVERSE_ADDRESS_CACHE_SIZE MTA オプションで設定します (デフォルトは 100000)。キャッシュ内のエントリのタイムアウトは REVERSE_ADDRESS_CACHE_TIMEOUT MTA オプションで設定します (デフォルトは 600 秒)。実際は、キャッシュにはアドレス自体が保存され、LDAP URL や LDAP 結果は保存されません。