SecurityGatewayのカスタムSieve拡張を使用するには、使用したいスクリプトの前に、requireコマンドを以下のように指定します:
require “SecurityGateway”;
ipテストは、(例えばメールイベント中などの)SMTP処理中に実行することができます。
•cidr—2つ目の引数は、クライアントIPアドレスと比較するIPアドレスやパターンです。完全なIPアドレス、(例えば10.0.0.0/24といった)CIDRを使ったIPアドレスの範囲、?(任意の1文字)、*(任意の文字)、#(1桁の数値)といったワイルドカードを使用できます。
サンプルコード: if not ip :cidr "10.0.0.0/24" { greylist; }
•public—クライアントIPアドレスがRFC-1918のプライベートサブネットでも、ループバックアドレスでも、DHCPによる自動IPアドレスでもない場合はTrueとなり、それ以外はfalseとなります。(127.0.0.0/8、192.168.0.0/16、10.0.0.0/8、172.16.0.0/12、169.254.0.0/16)
サンプルコード: if ip “public” { greylist; }
•private—publicの反対。
•ssl—クライアントがセキュアな(SSL)接続を正常に処理した場合trueです。
•des—クライアントがドメインメールサーバである場合trueです。
lookupテストは最初の引数に応じて呼び出されます:
•ptr—これが最初の引数である時に、ルックアップテストはいつでも実行することができます。第2引数は標準タグ引数か、“resolves”、“resolvestoclient”または“error”です。
例: if lookup "ptr" :matches "*.domain.com" { greylist; }.
•resolves—PTRレコードが存在する場合、trueを返します。
•resolvestoclient—PTRレコードがマッチする、つまりPTRホストのAルックアップが、クライアントのIPアドレスを返す場合、trueを返します。
•error—一時的なDNSクエリエラーがある場合、trueを返します。
•helo—これが最初の引数で存在する場合、ルックアップテストはHELOイベントやHELOイベント後にのみ実行することができます。第2引数は、“resolves”、“resolvestoclient”または“error”です。
•resolves—HELO引数が有効なIPまたはホスト名の場合、trueを返します。
•resolvestoclient – HELO引数がマッチする、すなわちHELO引数のAルックアップがクライアントのIPアドレスを返す場合trueを返します。
•error – 一時的なDNSクエリエラーがある場合、trueを返します。
•mail—これが最初の引数で存在する場合、ルックアップテストはMAILイベントやMAILイベント後にのみ実行することができます。第2引数は、“resolves”、“resolvestoclient”または“error”です。
•resolves—MAIL FROMドメインが有効なドメインで存在する場合、trueを返します。
•resolvestoclient—MAIL FROMドメインがマッチ、すなわち、MAIL FROM DOMAINのAルックアップが、クライアントのIPアドレスを返す場合、Trueを返します。
•error – 一時的なDNSクエリエラーがある場合、trueを返します。
•spf—これが最初の引数で存在する場合、ルックアップテストはMAILイベントやMAILイベント後にのみ実行することができます。第2引数は、“pass”、“fail”または“error”です。
•pass—差出人がSPFを渡す場合、true、ニュートラルまたは失敗結果ではfalseを返します。
•fail—差出人がSPFに失敗する場合、true、ニュートラルまたはパス結果ではfalseを返します。
•error—処理中のエラー(通常DNSクエリエラー)がある場合trueを返します。
•rblip—これが最初の引数で存在する場合、ルックアップテストはいつでも実行することができます。第2引数は、“all”、“any”または“error”です。
•all—クライアントIPアドレスが、すべてのDNSブラックリストをパスした場合、Trueを返します。
•any—クライアントIPアドレスが、DNSブラックリストのどれかをパスした場合、Trueを返します。
•error—処理中のエラー(通常DNSクエリエラー)がある場合trueを返します。
•rblhdr—これが最初の引数で存在する場合、ルックアップテストはDATAイベントだけで実行することができます。第2引数は、“all”、“any”または“error”です。
•all—受信ヘッダが、すべてのDNSブラックリストをパスした場合、Trueを返します。
•any—受信ヘッダが、DNSブラックリストのどれかをパスした場合、Trueを返します。
•error—処理中のエラー(通常DNSクエリエラー)がある場合trueを返します。
portテストは、いつでも実行することができます。クライアントが実際に接続したポート番号と比較するポート番号です。
サンプルコード: if port 25 { greylist; }
authテストが呼び出すことができる場合、最初の引数に依存します:
•succeeded — 認証が成功している場合、trueです。これが最初の引数で存在する場合、authテストはAUTHイベントまたはイベント後に実行することができます。
•match — 認証が成功しMAIL FROMアドレスが認証されたアカウントと一致する場合、trueです。これが最初の引数で存在する場合、authテストはMAILイベントまたはイベント後に実行することができます。
verify testは、アドレスを確認します(参照:ユーザ検証ソース)。他の全てのテストとは異なり、このテストは、sieveフィルタに適用しない場合でも、常に実行されます。すなわち、あらゆるMAIL FROMおよびRCPT TOアドレスは、照合され、結果はキャッシュに入ります。verifyテストが呼び出すことができる場合、最初の引数に依存します。
•from — MAIL FROMアドレスが有効なローカルアドレスで存在する場合、trueです。これが最初の引数で存在する場合、verifyテストはMAILイベントまたはイベント後に実行することができます。
•fromdomain — MAIL FROMアドレスが有効なローカルドメインからの場合、trueです。これが最初の引数で存在する場合、verifyテストはMAILイベント、またはイベント後に実行することができます。
•fail_from — MAIL FROMアドレスを照合中エラーがある場合、trueです。これが最初の引数で存在する場合、verifyテストはMAILイベント、またはイベント後に実行することができます。
•to — RCPT TOアドレスが有効なローカルアドレスで存在する場合、trueです。これが最初の引数で存在する場合、verifyテストはRCPTイベントまたはイベント後に実行することができます。
•todomain — RCPT TOアドレスが有効なローカルドメインに存在する場合、trueです。これが最初の引数で存在する場合、verifyテストはRCPTイベントまたはイベント後に実行することができます。
•fail_to — RCPT TOアドレスを照合中エラーがある場合、trueです。これが最初の引数で存在する場合、verifyテストはRCPTイベントまたはイベント後に実行することができます。
dkimテストはDomainKeys Identified Mail (DKIM)検証に対してチェックし、DATAイベントで実行することができます。
•pass
メッセージがDKIMで署名され、署名が検証をパスする場合、trueを返します。
•fail
DKIM処理がhard failを返す場合、trueを返します(SSPオプションが必要)。
•error
DKIM処理におけるエラーがある場合、trueを返します。
ccbvテストは、MAILイベントまたはイベント後に実行することができます。引数なしで、MAIL FROMアドレスがコールバック検証をパスする場合、trueを返します。
•error—CBV処理のエラーがある場合、trueを返します。
spamtotalテストはメッセージスコアに対してチェックして、実行することができます。しかしながら、ほとんどの場合、他の全てのフィルタがメッセージスコアへの寄与をすることができるように、DATAイベントの最後のフィルタで実行されます。
spamtotalテストは、単一の引数を持ちます:threshold値。メッセージスコアがthreshold以上である場合、true(それ以外はfalse)を返します。
OutbreakProtectionテストは、DATAイベントで実行することができます。引数なしで、Outbreak Protectionがメッセージをスパム、ウィルスまたはバルクメールと分類する場合、trueを返します。
•spam
Outbreak Protectionがメッセージをスパムと分類する場合、trueを返します。
•virus
Outbreak Protectionがウィルスを含んでいるメッセージを分類する場合、trueを返します。
•phish
Outbreak Protectionがメッセージをフィッシングメールと分類する場合、trueを返します。
•suspect
Outbreak Protectionがメッセージを疑わしいスパムと分類する場合、trueを返します。
•bulk
Outbreak Protectionがメッセージをバルクメールと分類する場合、trueを返します。
•error
Outbreak Protection処理におけるエラーがある場合、trueを返します。
このテストは、免除されたalias:を持ちます(後方互換性のため)。このテストが実行されることができる時は、最初の引数に依存します。
•all
引数はありません;クライアントがホワイトリストにある場合、trueを返します。これはいずれにしても呼び出すことができて、利用可能な情報を使用するだけです。例えば、IPイベント(最初のイベント)で呼び出される場合、PTRレコードに一致するホワイトリストにあるIPおよびホストだけが比較されます。
•ip
クライアントがIPホワイトリストに示された場合、trueを返します。いずれにしても実行することができます。
•host
クライアントがホストホワイトリストで示される場合、trueを返します。候補は、HELO引数またはPTRホストにすることができます。HELOイベントまたはイベント後に実行することができます。
•mail
MAIL FROMがアドレスホワイトリストで存在する場合、trueを返します。MAILイベントまたはイベント後に実行することができます。
•from
From:ヘッダがアドレスホワイトリストで存在する場合、trueを返します。DATAイベントで実行することができます。
このテストは、エイリアスを持ちます:blocklist(後方互換性のため)。引数および機能はホワイトリストテストで同一です。ただし、比較はブラックリストです。
vbr(すなわちメッセージ証明書)テストは、1つ引数を持ちます:
•信用された証人のカンマ区切りのリスト
メッセージが保証される場合、trueを返します。デフォルトリストは、“vbr.emailcertification.org”です。
•error
メッセージ証明書にエラーがある場合、trueを返します。
errorコマンドはRFC 3028に記載のrejectコマンドと同一です、ただし、2つの引数を持ちます。最初の引数がSMTPエラーコードで存在し、第2の引数がテキストメッセージで存在します。両方とも、現在のクライアントコマンドに応答して送信されます。
disconnectコマンドは“error”コマンドと同一です。ただし、TCP/IPソケットを閉じます。これは、MDでシャットダウンオプションに類似しています。
greylistコマンドは、グレーリストを起動させます。
dynamicscreenコマンドは、ダイナミックスクリーニングを起動させます。
tarpitコマンドは、ターピットを起動させます。
signコマンドは、メッセージに署名ヘッダを追加します。最初の引数は以下の通りです:
•dkim
DKIMでメッセージに署名します。第2の引数が使用するセレクタの名前です。
•vbr
メッセージでVBR-Info:ヘッダ(メッセージ証明書用)を含みます。第2の引数が、mv= parameterで含む信用された証人です。
throttleコマンドは、帯域制限を起動させます。最初の引数が1秒ごとの文字単位の帯域幅制限です。
ipshieldコマンドは、IPシールドを起動させます。
spamscoreコマンドはメッセージの現在のメッセージスコア合計に最初の引数を追加します。spamtotalテストを参照。
tagheaderコマンドは、メッセージ中のヘッダにタグを前に付加します。最初の引数が、修正するヘッダです。第2引数がヘッダ値で挿入するテキストです。
addheaderコマンドは、メッセージに新規のヘッダを追加します。最初の引数が追加するヘッダ、第2引数が値です。
removeheaderコマンドは、メッセージからヘッダを削除します。最初の引数が、削除するヘッダです。
alertコマンドは、メモを送信します。単一の引数は、from:, to:, subject:および他のヘッダを含んでいるメール本文です。全体の文字列が、マクロ展開に対するサブジェクトです。