Sun Java System Messaging Server 6 2005Q4 管理ガイド

自動メッセージ削除 (有効期限および消去) 機能を設定するには

自動メッセージ削除機能 (有効期限切れおよび消去とも呼ばれる) を使用すると、管理者が定義した一連の条件に基づいて、メッセージストアからメッセージが自動的に削除されます。この機能によって、古いメッセージやサイズの大きいメッセージ、開封済みまたは削除済みメッセージ、特定の Subject: 行を持つメッセージなどを自動的に削除できます。次の削除条件が設定できます。

この機能は、メッセージの消去や消去を行う imexpire ユーティリティーを使用して実行します。メッセージ削除プロセスの詳細については、「メッセージストアによるメッセージの削除方法」を参照してください。


注 –

サーバーによってメッセージは警告なしに削除されます。したがって、自動メッセージ削除ポリシーについてユーザーに知らせておくことは重要です。メッセージが突然削除されると、ユーザーや管理者は大変驚くことになるからです。


imexpire の動作方式

imexpire は、コマンド行から呼び出すか、imsched デーモンを使用して自動的に実行されるようにスケジュールします。管理者は、store.expirerule というファイルに一連の有効期限ルールを指定します。このファイルは、メッセージを削除する条件を指定します。ルールの範囲に関連するディレクトリごとに、複数のファイルが存在する場合があります。つまり、メッセージストア全体にグローバルに適用されるルールはあるディレクトリに置かれ、パーティションに適用されるルールは別のディレクトリ、ユーザーに適用されるルールはさらに別のディレクトリに置かれる、というようになります。


注 –

グローバル有効期限ルールは、コンソールまたは configutil コマンドを使用して指定することもできますが、store.expirerule を使用する方法をお勧めします。コンソールまたは configutil を使用して多数のルールを作成すると、パフォーマンスの問題が発生することがあります。


imexpire は、起動時にすべての有効期限ルールをロードします。デフォルトでは、imexpire はパーティションごとに 1 つのスレッドを作成します。各スレッドは割り当てられたパーティションの下にあるユーザーフォルダのリストを通過し、その間にローカル有効期限ルールをロードします。この有効期限機能により、各フォルダは有効期限ルールに照らしてチェックされ、メッセージは必要に応じて消去されます。メールボックスディレクトリの内に store.exp ファイルが存在し、store.cleanupage 設定パラメータで指定した期間を過ぎていたために消去されたり期限切れになっていたりするメッセージがある場合は、消去機能によってメッセージハッシュディレクトリ内にあるメッセージファイルが完全に削除され、store.exp ファイルから UID のレコードが削除されます。

msg_svr_base/config/ 内の expire_exclude_list と呼ばれるファイルで、1 行に 1 つずつユーザー ID を追加して、指定したユーザーを有効期限ルールから除外することもできます。

自動メッセージ削除機能を配備するには

メッセージの自動削除には 3 つの手順が必要です。

  1. 自動メッセージ削除ポリシーを定義します。どのメッセージを自動的に削除するか、どのユーザー、フォルダ、ドメイン、およびパーティションのメッセージを自動的に削除するか、およびサイズ、メッセージ存続期間、ヘッダーについて特定して削除条件を定義します。削除するメッセージの範囲を定義します。詳細については、「自動メッセージ削除ポリシーを定義するには」を参照してください。

  2. imexpire ルールを指定してこのポリシーを実装します。詳細については、「自動メッセージ削除ポリシーを実装するルールを設定するには」を参照してください。

  3. imexpire スケジュールを指定します。詳細については、「自動メッセージ削除とログレベルをスケジュールするには」を参照してください。

自動メッセージ削除ポリシーを定義するには

削除条件を指定して独自の自動メッセージ削除ポリシーを定義します。imexpire を使用すると、次の条件を使用する削除が可能になります。

メッセージの存続期間: X 日間より存続期間が長いメッセージを自動的に削除します。属性: messagedays

メッセージの件数: X 件を超えたフォルダ内のメッセージを自動的に削除します。属性: messagecount

サイズ超過メッセージの存続期間: X バイトを超えるメッセージを Y 日間の猶予期間後に自動的に削除します。属性: messagesize および messagesizedays

開封済みおよび削除済みメッセージフラグ: 開封済み」または「削除済み」フラグが付いているメッセージを自動的に削除します。これらの条件には、「and」または「or」が設定できます。or に設定した場合、メッセージに開封済みまたは削除済みフラグが付いていると、ほかの条件にかかわらず自動削除されます。and に設定した場合、メッセージに付いている開封済みまたは削除済みフラグは、指定したほかの条件すべてを満たした場合に設定されます。属性: seen および deleted

メッセージのヘッダーフィールド: メッセージを削除する条件としてヘッダーおよび文字列を指定できます。たとえば、「Subject: Work from Home!」というヘッダーがあるメッセージをすべて削除できます。

メッセージのフォルダ: メッセージを削除するフォルダを指定できます。属性: folderpattern


注 –

imexpire を使用して、メッセージが開封されてからの期間に基づいてメッセージを削除または保存することはできません。たとえば、200 日経過しても読まれていないメッセージを削除するという指定はできません。


自動メッセージ削除ポリシーの例

例 1: 1,000 件を超えるメッセージが存在するフォルダ内の、存続期間が 365 日のメッセージをすべて削除します。

例 2: ドメイン siroe.com 内の、存続期間が 180 日を超えるメッセージを削除します。

例 3: 「削除済み」のマークが付いているメッセージをすべて削除します。

例 4: sesta.com 内の 1,000 件を超えるメッセージが存在するフォルダから、「開封済み」マークが付いていて、存続期間が 30 日より長く、サイズが 100K バイトより大きく、X-spam というヘッダーが付いたメッセージを削除します。

自動メッセージ削除ポリシーを実装するルールを設定するには

前の節で定義した自動メッセージ削除ポリシーを実装するには、imexpire ルールを設定する必要があります。ルールを設定するには、ルールを store.expirerule ファイルに追加します。2 つの store.expirerule グローバルルールの例を次に示します。


Rule1.regexp: 1
Rule1.folderpattern: user/.*/trash
Rule1.messagedays: 2
Rule2:regexp: 1
Rule2.folderpattern: user/.*
Rule2.messagedays: 14

            

この例では、Rule 1 でごみ箱フォルダ内のすべてのメッセージが 2 日後に削除されることを指定しています。Rule 2 ではメッセージストアのすべてのメッセージが 14 日後に削除されることを指定しています。

この節には、次の項があります。

有効期間ルールのガイドライン

この節では、store.expirerule ファイルルールのガイドラインを示します。


注 –

以前のリリースの Messaging Server では、有効期限ルールは、configutil パラメータの store.expirerule.attribute で設定できました (『Sun Java System Messaging Server 6 2005Q4 Administration Reference』「configutil Parameters」を参照)。このリリースでもこれは引き続き可能ですが、ヘッダーの制約を使用した有効期限ルール (特定の件名でメッセージの有効期限が切れるなど) はサポートされません。いずれの場合でも、store.expirerule を使用してすべての有効期限ルールを指定することをお勧めします。


表 18–8 imexpire 属性

属性 

説明 (属性値) 

exclusive

ルールが排他的であるかどうかを指定します。exclusive として指定すると、指定したメールボックスにこのルールのみが適用され、これ以外のルールはすべて無視されます。複数の排他的なルールが存在する場合、最後にロードされた排他的なルールが使用されます。たとえば、グローバルな排他的ルールおよびローカルな排他的ルールが指定された場合、ローカルルールが使用されます。グローバルな排他的ルールが複数存在する場合、configutil によって最後にリストされたグローバルルールが使用されます。(1/ 0)

folderpattern

このルールによって影響を受けるフォルダを指定します。形式は user/ で始まる必要があり、これはディレクトリ store_root/partition/*/ を表します。図 18–4 および表 18–9 を参照してください。(POSIX 正規表現)

messagecount

フォルダ内の最大メッセージ数です。この数を超える新しいメッセージが配信されると、もっとも古いメッセージが消去されます。(整数) 

foldersize

新しいメッセージが配信されたときにもっとも古いメッセージが消去される前のフォルダの最大サイズです。(バイトを表す整数) 

messagedays

メッセージが消去されるまでの存続日数です。(整数) 

messagesize

消去のマークが付けられる前のメッセージの最大サイズです。(整数) 

messagesizedays

猶予期間。指定されたサイズを超えたメッセージをフォルダに残さなければならない日数です。(整数) 

メッセージのヘッダーフィールド

メッセージに削除のマークを付けるためのヘッダーフィールドと文字列を指定します。値は大文字と小文字が区別されず、正規表現は認識されません。次に例を示します。 Rule1.Subject: Get Rich Now!

Expires ヘッダーや Expiry-Date ヘッダーについては、これらのヘッダーフィールドで指定された日付の値が messagedays 属性よりも古い場合、imexpire によってそのメッセージは削除されます。有効期限に関するヘッダーフィールドが複数指定された場合、もっとも古い有効期限が使用されます。(文字列)。

regexp

UNIX 正規表現をルール作成において有効にします。(1 または 0)。この属性を指定しないと、IMAP 表現が使用されます。 

seen

seen はメッセージのステータスフラグの 1 つであり、ユーザーがメッセージを開いたときにシステムによって設定されます。seen 属性が and に設定されている場合、メッセージが開封済みであり、かつ、ほかの条件が満たされていればルールは適用されます。seen 属性が or に設定されている場合、メッセージが開封済みであるか、または、もう 1 つの条件が満たされていればルールは適用されます。(and/or)。

deleted

deleted はメッセージのステータスフラグの 1 つであり、ユーザーがメッセージを削除したときにシステムによって設定されます。属性 deletedand に設定されている場合、メッセージが削除済みであり、かつ、もう 1 つの条件が満たされていればルールは適用されます。deleted 属性が or に設定されている場合、メッセージが開封済みであるか、または、もう 1 つの条件が満たされていればルールは適用されます。(and/or)

imexpire ルールをテキストモードで設定する

自動メッセージ削除ルールは、store.expirerule ファイルにルールを指定することによって設定します。store.expirerule ファイルは、1 行につき 1 つの有効期限条件を含みます。グローバルルール設定ファイル (msg_svr_base/data/store/store.expirerule) の有効期限条件は、次の形式になっています。

rule_name.attribute : value

ユーザーまたはメールボックスのルール設定ファイルの有効期限ルールは、次の形式になっています。

attribute: value

例 18–1 に、msg_svr_base /config/store.expirerule の一連のグローバル有効期限ルールを示します。

Rule 1 では、グローバル有効期限ポリシー (すべてのメッセージに適用されるポリシー) を設定しています。設定内容は次のとおりです。

Rule 2 では、ホストしているドメインが siroe.com のユーザーに対して自動メッセージ削除ポリシーを設定しています。メールボックスサイズを 1M バイトに制限し、削除済みメッセージを削除し、存続期間が 14 日より長いメッセージを削除します。

Rule 3 では、ユーザー f.dostoevskiinbox フォルダに対して自動メッセージ削除ポリシーを設定しています。「On-line Casino」という件名行のあるメッセージを削除します。


例 18–1 imexpire ルールの例


Rule1.regexp: 1
Rule1.folderpattern: user/.*
Rule1.messagesize: 100000
Rule1.messagesizedays: 3
Rule1.deleted: or
Rule1.Subject: Vigara Now!
Rule1.Subject: XXX Porn!
Rule1.messagecount: 1000
Rule1.messagedays: 365
Rule2.regexp: 1
Rule2.folderpattern: user/.*@siroe.com/.*Rule2.exclusive: 1
Rule2.deleted: or
Rule2.messagedays: 14
Rule2.messagecount: 1000
Rule3.folderpattern: user/f.dostoevski/inboxRule3.Subject: *On-line Casino*
                  

imexpire フォルダパターンを設定する

フォルダパターンは POSIX 正規表現を使用して指定できます。このためには、imexpire 属性の regex を 1 に設定します。この属性を指定しないと、IMAP 表現が使用されます。この形式は user/ で始まり、そのあとにパターンが続きます。表 18–9 に、各種フォルダのフォルダパターンを示します。

表 18–9 正規表現を使用した imexpire フォルダパターン

フォルダパターン 

適用範囲 

user/userid/.*

userid のすべてのフォルダ内にあるすべてのメッセージに規則を適用します。

user/userid/Sent

userid のフォルダ Sent: 内のメッセージに規則を適用します。

user/.*

メッセージストア全体に規則を適用します。 

user/.*/trash

すべてのユーザーの trash フォルダに規則を適用します。

user/.*@siroe.com/.*

ホストされたドメイン siroe.com: 内のフォルダに規則を適用します。 

user/[^@]*/.*

デフォルトドメイン内のフォルダに規則を適用します。 

Procedureコンソールを使用して自動メッセージ削除グローバルルールを設定するには

グローバル有効期限ルールは、コンソールを使用して設定することもできますが、store.expirerule を使用する方法をお勧めします。コンソールまたは configutil を使用して多数のルールを作成すると、パフォーマンスの問題が発生することがあります。

手順
  1. 次の操作で自動メッセージ削除の GUI を呼び出します。

    メインコンソール -> サーバーグループ -> Messaging Server (開く) -> Messaging Server コンソール -> 設定タブ -> メッセージストア -> 有効期限/消去 -> 追加

    この GUI の略図を図 18–4 に示します。

    図 18–4 自動メッセージ削除 (有効期限または消去) GUI - 略図

    図は、自動メッセージ削除 GUI の略図です。

  2. 新しいルールの名前を入力します。

  3. メッセージを自動的に削除するフォルダを入力します。

    詳細については、前述の 「imexpire フォルダパターンを設定する」を参照してください。

  4. このルールが指定した条件と一致するフォルダに対する排他的なルールである場合は、「排他」ボックスをクリックします。

    このボックスにチェックマークを付けると、このルールが、指定したパターンに一致するほかのすべてのルールに優先します。「排他」チェックボックスの詳細については、表 18–8 を参照してください。

  5. フォルダサイズに基づいてルールを作成するには、次を実行します。

    • 「フォルダサイズの制限」チェックボックスにチェックマークを入れます。「メッセージの件数」フィールドには、もっとも古いメッセージが削除されるまでフォルダ内に保持されるメッセージの最大件数を指定します。「フォルダサイズ」フィールドには、もっとも古いメッセージが削除されるまで保持されるフォルダの最大サイズをバイト単位で指定します。

  6. メッセージの存続期間に基づいてルールを作成するには、「メッセージ存続期間の制約」チェックボックスにチェックマークを付けます。

    「日数」フィールドで、メッセージがフォルダに保持される期間を日数で指定します。

  7. メッセージサイズに基づいてルールを作成するには、以下を実行します。

    • 「メッセージサイズの制約」チェックボックスにチェックマークを入れます。「メッセージサイズの制限」フィールドに、フォルダで許可されるメッセージの最大サイズを入力します。「猶予期間」フィールドに、サイズを超過したメッセージがフォルダ内に保持される (削除されるまでの) 期間を入力します。

  8. 「開封済み」または「削除済み」メッセージフラグが設定されているかどうかに基づいてルールを作成するには、以下を実行します。

    • 「メッセージフラグの制約」チェックボックスにチェックマークを入れます。

    • 「開封済み:」フィールドでは、「および」を選択すると、メッセージが開封済みであり、かつ、もう 1 つの条件を満たしている場合にルールを適用することを指定できます。「または」を選択すると、メッセージが開封済みであるか、または、もう 1 つの条件を満たしている場合にルールを適用することを指定できます。

    • 「削除済み:」フィールドでは、「および」を選択すると、メッセージが削除済みであり、かつ、もう 1 つの条件を満たしている場合にルールを適用することを指定できます。「または」を選択すると、メッセージが削除済みであるか、または、もう 1 つの条件を満たしている場合にルールを適用することを指定できます。

  9. ヘッダーフィールドとその値に基づいてルールを作成するには、以下を実行します。

    • 「ヘッダーの制約」チェックボックスにチェックマークを入れます。

    • ヘッダーと値のリストを次の形式でコンマで区切って入力します。

      header1: value1, header2 : value2

      次に例を示します。Subject: Work at Home!,From: virus@sesta.com

      Expires ヘッダーや Expiry-Date ヘッダーで、日付の値が「メッセージの存続期間の制約」よりも古い場合、メッセージは削除されます。有効期限に関するヘッダーフィールドが複数指定された場合、もっとも古い有効期限が使用されます。(文字列)。

  10. 「了解」をクリックすると、新しいルールが自動メッセージ削除リストに追加されます。

自動メッセージ削除とログレベルをスケジュールするには

自動メッセージ削除は、imsched スケジューリングデーモンによってアクティブになります。デフォルトでは、imsched は毎日 23:00 に imexpire を呼び出し、メッセージは消去および消去されます。このスケジュールは、configutil パラメータの local.schedule.expirelocal.schedule.purge、および store.cleanupage を設定することによってカスタマイズできます。表 18–10 を参照してください。

有効期限および消去は、大きなメッセージストアでは完了するまでに時間のかかることがあるので、これらのプロセスの実行頻度は実験して決定することをお勧めします。たとえば、有効期限および消去の 1 サイクルに 10 時間かかる場合、有効期限および消去のデフォルトスケジュールを 1 日に 1 回とするわけにはいきません。有効期限と消去をスケジュールするには、local.schedule.purge を使用して消去のスケジュールを個別に指定します。local.schedule.purge が設定されていない場合、imexpire は有効期限を実行したあとに消去を実行します。

表 18–10 有効期限および消去 configutil ログおよびスケジュールパラメータ

パラメータ 

説明 

local.schedule.expire

imexpire を実行する間隔です。UNIX の crontab の書式を使用します。分 時 日付 月 曜日

値は空白文字またはタブ文字で区切られ、値の範囲は、分は 0 〜 59、時は 0 〜 23、日付は 1 〜 31、月は 1 〜 12、曜日は 0 〜 6 (0 = 日曜日) となります。各時間フィールドには、アスタリスク (すべての取りうる値)、コンマ区切りの値のリスト、またはハイフンで区切られた 2 つの値による範囲を使用することもできます。日は、「日」と「曜日」の両方で指定できることに注意してください。ただし、このような発生回数は非常に少ないので、通常、両方で指定することはありません。日と曜日の両方で指定した場合、その両方が必須条件になります。たとえば、17 日と火曜日を設定すると、両方の値が真であることが求められます。 

実行間隔の例

1) imexpire を 12:30am、8:30am、4:30pm に実行する場合 30 0,8,16 * * * /opt/SUNWmsgsr/lib/imexpire

2) imexpire を平日の朝 3:15am に実行する場合 15 3 * * 1-5 /opt/SUNWmsgsr/lib/imexpire

3) imexpire を毎週月曜日だけ実行する場合0 0 * * 1 /opt/SUNWmsgsr/lib/imexpire

デフォルト: 0 23 * * * /opt/SUNWmsgsr/lib/imexpire

local.schedule.purge

purge を実行する間隔です。UNIX の crontab の書式を使用します。分 時 日付 月 曜日

デフォルト: 0 0,4,8,12,16,20 * * * /opt/SUNWmsgsr/lib/purge -num=5 (4 時間ごと)  

store.cleanupage

purge で完全に削除するまでの、有効期限が切れた、または消去されたメッセージの存続期間 (時間数) です。

デフォルト: なし 

local.store.expire.loglevel

ログのレベルを指定します。 

1 = expire セッション全体の要約をログに記録します。 

2 = 有効期限が切れたメールボックスごとに 1 メッセージをログに記録します。 

3 = 有効期限が切れたメッセージごとに 1 メッセージをログに記録します。 

デフォルト: 1 

コンソールを使用した場合の imexpire スケジュール

次の操作で自動メッセージ削除の GUI を呼び出します。

メインコンソール -> サーバーグループ -> Messaging Server (開く) -> Messaging Server コンソール -> 設定タブ -> メッセージストア -> 有効期限/消去

このコンソールページでは、有効期限ルールが上部に、有効期限および消去スケジュールが下部に一覧表示されます。有効期限および消去をスケジュールするには、「有効期限/消去スケジュール」のプルダウンメニューを使用して、有効期限と消去の両方の月、日、曜日 (0 =日曜日)、時、分を設定します。


注 –

日の値は、「日」と「曜日」の両方で設定できます。両方で設定した場合、両方が評価されます。水曜日と 17 日を設定した場合、消去および有効期限は、17 日が水曜日にあたった場合にのみ実行されます。


imexpire ログレベルを設定する

imexpire が完了すると、デフォルトのログファイルに要約が記録されます。有効期限をコマンド行から呼び出す場合は、-v (詳細) および -d (デバッグ) の各オプションを使用して、詳細ステータスまたはデバッグメッセージを stderr に記録するように imexpire に指示できます。imsched を使用して imexpire を呼び出す場合は、configutil パラメータの local.store.expire.loglevel を 1、2、または 3 に設定して各ログレベルを選択できます。Loglevel 1 はデフォルトで、有効期限セッション全体の要約が記録されます。Loglevel 2 では、有効期限切れのメールボックスごとに 1 つのメッセージが記録されます。Loglevel 3 では、有効期限切れのメッセージごとに 1 つのメッセージが記録されます。

メッセージの自動削除から指定されたユーザーを除外する

msg_svr_base /config/ 内の expire_exclude_list ファイルで、1 行に 1 つずつユーザー ID を追加して、指定したユーザーを有効期限ルールから除外できます。