受信者を追加する

サイトによっては、特定のメッセージを自動的に既知のアドレスに送信する必要がある場合があります。たとえば、「bug」というキーワードを含むすべてのメッセージをバグ追跡システムに送信させる必要があるような場合です。このポリシーによって、「Subject」(件名) ヘッダに「bug」という文字列が含まれており、受信者が「old-bugs@example.com」であるか、「X-Bug-Id」ヘッダが存在する場合、メッセージ (bugs@example.com) に新しい受信者を追加します。

# attr NAME=add a recipient
# Adds a "bugs@example.com" recipient to the envelope.
if anyof (header :matches "Subject" "*bug*",
         envelope "to" "old-bugs@example.com",
         header :matches "X-Bug-Id" "*") {
    pmx_add_recipient "bugs@example.com";
}

説明:

  • 最初のコマンドは、3つの複合テストで構成される if anyof ステートメントです。ヘッダテストでは、「Subject」(件名) ヘッダが 「bug」に一致した場合、「true」が返されます。envelope テストでは、 メッセージ受信者の「To」(宛先) ヘッダのいずれか (if anyof) が「old-bugs@example.com」に一致した場合、「true」が返されます。2番目のヘッダテストでは、 「X-Bug-Id」ヘッダが一致した場合に「true」を返します。これらの 3つのテストのいずかにおいて「true」が返された場合に、以下のようになります。
    • pmx_add_recipient コマンドによって、メッセージが bugs@example.com に配信されます。また、メッセージはすべての指定された元の受信者にも配信されます。

フィルタの設置場所

「add a recipient」(受信者を追加する) フィルタは「Policy Script 1: Scan and Deliver Internal Messages」(ポリシースクリプト 1: 内部メッセージを検索して配信) のフィルタの前で、pmx_test_mark アクションの直後に設置される必要があります。「add a recipient」(受信者を追加する) フィルタをこの箇所に設置すると以下のことが可能になります。

  • 「add a recipient」(受信者を追加する) フィルタが常に実行される。(別のフィルタのstopコマンドでは discard フィルタは停止されません。)
  • それ以降のスパムおよびウイルス用のフィルタが常に実行される。「add a recipient」(受信者を追加する) フィルタに stop コマンドが含まれている場合には、スパムやウイルス用のフィルタが実行される前にポリシースクリプトが終了してしまうため、免責事項追加のフィルタには stop コマンドが含まれていません。)