電子メールへの応答として自動的に生成される返信 (自動返信)、特に不在メッセージを処理するために、MTA では MDN (Message Disposition Notification) および Sieve スクリプト言語が使用されます。MDN は、MTA によって差出人またはポストマスター (あるいはその両方) に送信される電子メールメッセージであり、メッセージの配信状態について報告するものです。MDN は、開封確認、確認通知、受信通知、配信確認とも呼ばれます。Sieve は、メールフィルタの作成に使用される簡単なスクリプト言語です。Messaging Server 5.x と異なり、使われる文字セットは ISO-2022-JP ではなく UTF-8 です。
この章では、不在返信メッセージの自動返信のメカニズムについて説明します。ほとんどの場合、デフォルト設定を変更する必要はありませんが、不在処理がバックエンドメッセージストアではなく MTA リレーマシンで実行されるようにシステムを設定することもできます。
この章には、次の節があります。
不在処理の Sieve スクリプトは、さまざまな LDAP Vacation 属性から自動的に生成されます (「不在返信メッセージの自動返信の属性」を参照)。Sieve スクリプトを明示的に指定して柔軟性を高めることもできます。不在メッセージ追跡の基本手段は、目的の受取人ごとに 1 つあるファイルの集合です。このファイルには、各差出人に返信が送信された時間が記録されます。
不在通知メッセージの文字セットは UTF-8 に変更されました。
デフォルトでは、MTA はバックエンドストアシステムで不在メッセージを評価します。MTA リレーはバックエンドストアほど多くの処理を実行しないため、パフォーマンスを考慮して、バックエンドストアではなくメールリレーマシンで MTA が不在メッセージを評価するように設定することもできます。ただし、この設定を行うと、さまざまなリレーがさまざまなメッセージを処理するため、不在メッセージが意図したよりも頻繁に送信される可能性があります。意図したよりも頻繁に不在メッセージが送信されることを防ぐには、リレー間でファイルの記録を共有します。この方法も容認できない場合は、常にバックエンドストアシステムで不在メッセージを評価してください。
配信アドレスは 1 組のパターンによって生成されます。使用されるパターンは、mailDeliveryOption 属性に定義されている値によって異なります。配信アドレスは、有効な mailDeliveryOption ごとに生成されます。パターンは MTA オプションの DELIVERY_OPTIONS によって定義されます。このオプションは option.dat ファイルで定義されます。option.dat ファイルにある DELIVERY_OPTIONS のデフォルトの自動返信ルールは、次のとおりです。
*^!autoreply=$M+$D@bitbucket
MTA は、自動返信 DELIVERY_OPTION MTA オプションにある「^」を認識します。これによって、MTA は不在の日付をチェックします。現在の日付が不在期間内である場合、処理は続行され、MTA は自動返信 DELIVERY_OPTION にある「!」を認識します。次に MTA は、ユーザーエントリのさまざまな自動返信 LDAP 属性に基づいて自動返信 Sieve スクリプトを作成します。自動返信ルールには、プレフィックス文字「!」、「#」、「^」、および「*」を付けることができます。
たとえば、メール配信オプションに「!」フラグを付けることができます。このフラグによって、自動返信スクリプトの生成が無条件で有効になります。ただし、自動返信機能を別の配信オプションで有効化し、自動返信機能がさらに「^」フラグによって制御されるようにするのは理にかなっています。この段階で日付をチェックしたほうが Sieve のロジックを使用するよりも効率的です。
表 16–1 に、自動返信ルールで使用されるプレフィックス文字 (1 列目) とその定義 (2 列目) を示します。
表 16–1 DELIVERY_OPTIONS の自動返信ルールで使用されるプレフィックス文字
プレフィックス文字 |
定義 |
---|---|
! |
自動返信 Sieve スクリプトの生成を有効にします。 |
# |
処理がリレーで実行されることを許可します。 |
^ |
評価する必要があると不在の日付から判明した場合にのみ、オプションを評価します。 |
* |
ルールは、ユーザーにのみ適用可能です。 |
自動返信ルール自体は、bitbucket チャネル宛のアドレスを指定します。自動返信が生成されると、メールはこのメソッドによって配信されると見なされますが、MTA 機能には配信アドレスが必要です。bitbucket チャネルに配信された内容はすべて破棄されます。
DELIVERY_OPTIONS のデフォルトの自動返信ルールにより、自動返信はユーザーが使用するメールサーバー上で実行されます。バックエンドストアシステムで不在メッセージの評価を実行する場合は、設定を変更する必要はありません。これがデフォルトの動作です。
パフォーマンスを向上するために、バックエンドストアシステムではなくリレーで不在メッセージの評価を実行する場合は、option.dat ファイルを編集し、文字 # を DELIVERY_OPTIONS の自動返信ルールの先頭に追加します。
an エディタを使用して option.dat ファイルを開きます。
自動返信ルールが次に示すようになるように、DELIVERY_OPTIONS オプションに追加または変更を行います。
#*^!autoreply=$M+$D@bitbucket
デフォルトの DELIVERY_OPTIONS オプションは次のようになっています。
DELIVERY_OPTIONS=*mailbox=$M%$\$2I$_+$2S@ims-ms-daemon, \ &members=*, \ *native=$M@native-daemon, \ /hold=@hold-daemon:$A, \ *unix=$M@native-daemon, \ &file=+$F@native-daemon, \ &@members_offline=* \ ,program=$M%$P@pipe-daemon, \ #forward=**, \ *^!autoreply=$M+$D@bitbucket
これによって、処理がリレーで実行されるようになります。リレーで MTA による自動返信を実行する場合、特定の人物が不在メッセージを最近送信しているかどうかを各リレーで個々に記録するか、その情報をリレー間で共有するかのいずれかとなります。送信された不在メッセージの数が非常に多くても問題ではない場合は特に、前者のほうが簡単です。不在メッセージの頻度ルールを厳しく適用する場合は、情報をリレー間で共有する必要があります。リレー間で情報を共有するには、ファイルは NFS 上にある必要があります。
これらのファイルの場所はオプション VACATION_TEMPLATE で制御されます。このオプション (option.dat 内) は、/<path>/%A に設定する必要があります。ここで、<path> は、各リレーマシン間で共有されるディレクトリへのパスです。テンプレートは file:URL である必要があります。ユーザーの名前を置換するには、$U を使用します。デフォルト設定は次のとおりです。
VACATION_TEMPLATE=file:///opt/SUNWmsgsr/data/vacation/$3I/$1U/$2U/$U.vac
メタキャラクタについては、表 9–6 を参照してください。
不在ファイルのテンプレートによる UID へのアクセスが可能になったため、ユーザーの UID に基づいて不在ファイルのパスを構築できるようになりました。また、不在ファイルのパスを決定する際のアドレスとして、以前は現在の受取人アドレスが使用されていましたが、今はユーザーのメール属性に格納されているアドレスが使用されます。
不在処理は、起動されると次のように機能します。
Sun Java System Messaging Server は、不在処理がシステムレベルではなくユーザーレベルの Sieve スクリプトで実行されたことを確認します。不在処理にシステムレベルのスクリプトが使用されている場合は、エラーが発生します。
内部 MTA フラグの「no vacation notice」がチェックされます。このフラグが設定されている場合、処理は終了し、不在通知は送信されません。
メッセージの返信用アドレスがチェックされます。返信用アドレスが空白の場合、処理は終了し、不在通知は送信されません。
MTA は、現在のメッセージの To:、Cc:、Resent-to:、または Resent-cc: の各ヘッダーフィールドにある :addresses タグ付き引数にユーザーのアドレスまたはその他のアドレスが指定されているかどうかをチェックします。いずれのヘッダーフィールドでもアドレスが見つからない場合、処理は終了し、不在通知は送信されません。
Messaging Server は、:subject 引数と理由文字列のハッシュを作成します。この文字列は現在のメッセージの返信用アドレスとともに、ユーザーごとの不在応答の履歴に照らしてチェックされます。応答が :days 引数で許可されている時間内にすでに送信されている場合、処理は終了し、応答は送信されません。
Messaging Server は、:subject 引数、理由文字列、および :mime 引数から不在通知を作成します。この応答メッセージには、次の 2 つの基本的な形式があります。
最初の部分に理由テキストがある、RFC 2298 で指定されている形式の MDN。
単一パートのテキスト返信 。(この形式は、「reply」自動返信モードの属性の設定をサポートするためにのみ使用される。)
不在メッセージが Messenger Express を使用して設定された場合、mailautoreplymode は自動的に reply に設定されます。
MTA フラグの「no vacation notice」は、デフォルトでは設定解除されています。このフラグは、システムレベルの Sieve スクリプトで標準外の novacation アクションを使用して設定できます。novacation Sieve アクションは、システムレベルの Sieve スクリプトでのみ許可されます。ユーザーレベルのスクリプトで使用された場合は、エラーが発生します。このアクションを使用して、不在返信に関してサイト全体に適用する制約を実装できます。たとえば、サブ文字列「MAILER-DAEMON」を含んでいるアドレスへの返信をブロックするなどです。
ユーザーごと、応答ごとの情報は、一連のフラットテキストファイルに保存されます。ファイルは、ローカルユーザーごとに 1 つあります。これらのファイルの場所およびネーミング方式は、VACATION_TEMPLATE MTA オプションで指定します。このオプションは file:URL に設定する必要があります。
これらのファイルの保守は自動的に行われ、VACATION_CLEANUP MTA オプションの設定 (整数) によって制御されます。これらのファイルのいずれかが開かれるたびに、この値を使用して現在時刻の値 (秒単位) が計算されます。結果がゼロである場合、ファイルがスキャンされ、有効期限切れのエントリはすべて削除されます。このオプションのデフォルト値は 200 です。これは、200 分の 1 の確率でクリーンアップパスが実行されることを意味します。
これらのフラットテキストファイルの読み取りと書き込みに使用される機能は、NFS 上で正しく動作するように設計されています。これによって、複数の MTA が単一のファイルセットを共通のファイルシステム上で共有することが可能になっています。
不在処理で使用される LDAP ユーザーディレクトリ属性は、次のとおりです。
エイリアス処理は、この属性で指定された個人名情報を記録し、この情報を使用して、生成された MDN または不在返信の From: フィールドを作成します。個人情報を公開しないように注意して使用してください。
休暇開始日時。値の形式は、YYYYMMDDHHMMSSZ です。この値は GMT を標準にしています。自動返信は、現在時刻がこの属性で指定されている時刻よりもあとの場合にのみ生成される必要があります。この属性がない場合、開始日は適用されません。LDAP_START_DATE MTA オプションを別の属性名に設定すると、この情報を別の属性で参照するように MTA に指示することができます。
この属性は、Sieve スクリプトを生成したコードによって読み取られ、チェックされます。現在時刻が不在開始日より前である場合、不在処理は中止されます。現時点では、Sieve には日付/時刻テスト機能および比較機能がないため、スクリプト自体ではこの属性を操作できません。
休暇終了日時。値の形式は、YYYYMMDDHHMMSSZ です。この値は GMT を標準にしています。自動返信は、現在時刻がこの属性で指定されている時刻よりも前の場合にのみ生成される必要があります。この属性がない場合、終了日は適用されません。LDAP_END_DATE MTA オプションを別の属性名に設定すると、この情報を別の属性で参照するように MTA に指示することができます。
この属性は、Sieve スクリプトを生成したコードによって読み取られ、チェックされます。現在時刻が不在終了日よりあとである場合、不在処理は中止されます。現時点では、Sieve には日付/時刻テスト機能および比較機能がないため、スクリプト自体ではこの属性を操作できません。
ユーザーのメールアカウントに自動返信モードを指定します。この属性の有効な値は、次のとおりです。
echo - 追加された mailAutoReplyText テキストまたは mailAutoReplyTextInternal テキストに加えて、元のメッセージテキストをエコー出力するマルチパートを作成します。
reply - mailAutoReplyText または mailAutoReplyTextInternal のいずれかで指定されているシングルパートの返信を元の差出人に送信します。
これらのモードは、不在処理に渡される標準外の :echo 引数および :reply 引数として Sieve スクリプト内にあります。echo では、返信内容として元のメッセージが含まれた「処理済」の MDN が生成されます。reply では、返信テキストのみの返信が生成されます。不正な値は不在処理に渡される引数として示されません。したがって、元のメッセージのヘッダーのみの MDN が生成されます。自動返信モードとして echo を選択すると、前回の返信が送信された時期にかかわらず、すべてのメッセージに対して自動返信が送信されることにも注意してください。
LDAP_AUTOREPLY_MODE MTA オプションを別の属性名に設定すると、この情報を別の属性で参照するように MTA に指示することができます。
mailAutoReplySubject
自動返信応答で使用する Subject フィールドの内容を指定します。これは UTF-8 文字列である必要があります。この値は、:subject 引数として不在処理に渡されます。LDAP_AUTOREPLY_SUBJECT MTA オプションを別の属性名に設定すると、この情報を別の属性で参照するように MTA に指示することができます。
現時点では、Sieve には特定の置換を実行する機能がないため、$SUBJECT を使用して元のメッセージをヘッダーに挿入することはできません。
受取人のドメイン内のユーザーを除くすべての差出人に送信する自動返信のテキスト。これが指定されていない場合、外部ユーザーは不在メッセージを受信しません。LDAP_AUTOREPLY_TEXT MTA オプションを別の属性名に設定すると、この情報を別の属性で参照するように MTA に指示することができます。
受取人のドメインから送信者に送られる自動返信のテキスト。これが指定されていない場合、内部ユーザーがメールの自動返信テキストのメッセージを受け取ります。 LDAP_AUTOREPLY_TEXT_INT MTA オプションを別の属性名に設定すると、この情報を別の属性で参照するように MTA に指示することができます。
MTA は、mailAutoReplyText または mailAutoReplyTextInternal のいずれかの属性値を理由文字列として不在処理に渡します。
任意の差出人への自動返信の応答に成功するまでの時間間隔 (時間単位)。mailAutoReplyMode=reply の場合にのみ使用されます。値が 0 の場合は、メッセージ受信のたびに応答が送り返されます。この値は、不在処理に渡される標準外の :hours 引数に変換されます 。(通常、Sieve 不在処理では、この目的のために :days 引数のみがサポートされている。また、0 の値は許可されていない。)
この属性がユーザーエントリにない場合、AUTOREPLY_TIMEOUT_DEFAULT MTA オプションからデフォルトのタイムアウトが取得されます。LDAP_AUTOREPLY_TIMEOUT MTA オプションを設定すると、この情報を別の属性で参照するように MTA に指示することができます。