グループの機能

グループ、グループ管理者、および権限はすべてデータベースで定義されますが、グループのメンバーは /opt/pmx/members-per-group ディレクトリのサブディレクトリ保存されるグループメンバーのリストで定義されます。たとえば、Group1 および Group2 のメンバーリストは以下のように表示されます。

/opt/pmx/etc/members-per-group/g/r/group1
/opt/pmx/etc/members-per-group/o/t/othergroup

グループのリストは、グループ名の最初の 2文字に基づく名前が付けられて自動的に生成されるサブフォルダ内に置かれることにご注意ください。これによって、非常に大きなシステムにおいて 1つのフォルダに含まれるファイル数を制限することになります。

リストの内容は、以下の 3つの書式のいずれかになるメールアドレスの内容の一部です。

  • 完全一致: ie/ user@sub.domain.com
  • ユーザー一致: ie/ user@
  • ドメイン一致:- ie/@sub.domain.com

members-per-group ディレクトリが、グローバル管理者によつて現在手動で入力されているデフォルトのリソースです。これは pmx-list コマンドを実行するか、リストを直接編集するか、または pmx-ldap-sync やその他のツールを使用して外部ソースからリストへ値を入力することで実行されます。グローバル管理者は pmx-profile sync-to-db および pmx-makemap --grouplist -g コマンドを使用して、members-per-group ディレクトリへの変更とデータベースを手動で同期させる必要があります。

PureMessage は pmx-profile および pmx-makemap --grouplist -g を使用してデータを定期的にエッジサーバーと同期させます。これらのジョブが PureMessage Manager の「Local Services」(ローカルサービス) タブから有効に設定されている場合は、これらのコマンドを手動で実行する必要はありません。

Recipient-to-Group マッピング

pmx-makemap --grouplist -g コマンドによって members-per-group ディレクトリ内の内容を、受信者をグループにマッピングする単一のフラットな CDB マップに変換します。たとえば、以下のようになります。

  • joe@domain.com: group1
  • @domain.com: group2
  • postmaster@: group3
  • frank@sub.domain.com: group4

members-per-group ディレクトリ内のすべての受信者エントリは、CDB マップ内に対応するエントリを持ち、右側の列にはグループメンバーとなっているグループ名が省略されて表示されます。CDB マップは PureMessage ポリシーによって使用される recipient-to-group マッピングを定義します。

ポリシーがメッセージを処理する場合、マッピングが適用され、受信者/グループの関係に関連するデータが message_log および隔離 minfo ログに書き込まれます。メッセージがポリシーによって処理された後は、このデータを以前の状態に戻したり、変更することはできません。

メッセージの recipient-to-group マッピングを適切に設定するには、トラフィックの方向と優先順位の 2つが重要です。

トラフィックの方向

マッピングは、メッセージが送信である場合には送信者 (ENVELOPE FROM アドレス) についてのみ評価され、メッセージが受信の場合はすべての受信者 (ENVELOPE TO アドレス) について評価されます。トラフィックの方向は「internal-hosts」リストに基づいて決定されるため、メッセージが内部ホストリストにあるリレーから来ている場合は、メッセージは送信であると考えられます。それ以外の場合は、受信であると考えられます。

ENVELOPE TO アドレスが recipient-aliases マップにある別のアドレスにマッピングされる場合、グループを決定する上では元の ENVELOPE_TO アドレスではなくマップされたアドレスが使用されます。

優先順位

recipient-to-group マッピングは一意である必要があるため、グループの決定には優先順位が使用されます。以下の順で一致内容が確認されます。

  1. 完全一致:(例: joe@domain.com)
  2. ユーザー一致:(例: user@)
  3. サブドメイン一致:(例: @sub.domain.com) 下記の例ではサブドメインに使用される優先順位が示されています。
  4. ドメイン一致:(例: @domain.com)

たとえば、joe@a.b.c.domain.com がメッセージの宛先である場合、以下の項目が一致しているかどうかが確認され、最初に一致したものが返されます。

  • joe@a.b.c.domain.com
  • joe@
  • @a.b.c.domain.com
  • @c.domain.com
  • @domain.com
  • NO MATCH

以降のグループ情報は message_log および隔離 minfo (確認したアドレスに対してマッピングが存在する場合) に書き込まれます。この情報はシステム内の他のスケジュールされたジョブ (pmx-qmeta-index および pmx-reports-consume-message-log など) によって使用された後、たとえば、グループに個別のレポートおよび隔離で使用されます。