SecurityGateway Sieve 拡張

SecurityGatewayのカスタムSieve拡張を使用するには、使用したいスクリプトの前に、requireコマンドを以下のように指定します:

require “SecurityGateway”;

テストコマンド

ip

ipテストは、(例えばメールイベント中などの)SMTP処理中に実行することができます。

cidr2つ目の引数は、クライアント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

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

portテストは、いつでも実行することができます。クライアントが実際に接続したポート番号と比較するポート番号です。

サンプルコード: if port 25 { greylist; }

auth

authテストが呼び出すことができる場合、最初の引数に依存します:

succeeded — 認証が成功している場合、trueです。これが最初の引数で存在する場合、authテストはAUTHイベントまたはイベント後に実行することができます。

match 認証が成功しMAIL FROMアドレスが認証されたアカウントと一致する場合、trueです。これが最初の引数で存在する場合、authテストはMAILイベントまたはイベント後に実行することができます。

verify

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

dkimテストはDomainKeys Identified Mail (DKIM)検証に対してチェックし、DATAイベントで実行することができます。

pass
メッセージがDKIMで署名され、署名が検証をパスする場合、trueを返します。

fail
DKIM処理がhard failを返す場合、trueを返します(SSPオプションが必要)。

error
DKIM処理におけるエラーがある場合、trueを返します。

cbv

ccbvテストは、MAILイベントまたはイベント後に実行することができます。引数なしで、MAIL FROMアドレスがコールバック検証をパスする場合、trueを返します。

error—CBV処理のエラーがある場合、trueを返します。

spamtotal

spamtotalテストはメッセージスコアに対してチェックして、実行することができます。しかしながら、ほとんどの場合、他の全てのフィルタがメッセージスコアへの寄与をすることができるように、DATAイベントの最後のフィルタで実行されます。

spamtotalテストは、単一の引数を持ちます:threshold値。メッセージスコアがthreshold以上である場合、true(それ以外はfalse)を返します。

OutbreakProtection

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を返します。

whitelisted  

このテストは、免除されたalias:を持ちます(後方互換性のため)。このテストが実行されることができる時は、最初の引数に依存します。

all
引数はありません;クライアントがホワイトリストにある場合、trueを返します。これはいずれにしても呼び出すことができて、利用可能な情報を使用するだけです。例えば、IPイベント(最初のイベント)で呼び出される場合、PTRレコードに一致するホワイトリストにあるIPおよびホストだけが比較されます。

ip
クライアントがIPホワイトリストに示された場合、trueを返します。いずれにしても実行することができます。

host
クライアントがホストホワイトリストで示される場合、trueを返します。候補は、HELO引数またはPTRホストにすることができます。HELOイベントまたはイベント後に実行することができます。

mail
MAIL FROMがアドレスホワイトリストで存在する場合、trueを返します。MAILイベントまたはイベント後に実行することができます。

from
From:ヘッダがアドレスホワイトリストで存在する場合、trueを返します。DATAイベントで実行することができます。

blacklisted

このテストは、エイリアスを持ちます:blocklist(後方互換性のため)。引数および機能はホワイトリストテストで同一です。ただし、比較はブラックリストです。

vbr

vbr(すなわちメッセージ証明書)テストは、1つ引数を持ちます:

信用された証人のカンマ区切りのリスト
メッセージが保証される場合、trueを返します。デフォルトリストは、“vbr.emailcertification.org”です。

error
メッセージ証明書にエラーがある場合、trueを返します。

アクションコマンド

error

errorコマンドはRFC 3028に記載のrejectコマンドと同一です、ただし、2つの引数を持ちます。最初の引数がSMTPエラーコードで存在し、第2の引数がテキストメッセージで存在します。両方とも、現在のクライアントコマンドに応答して送信されます。

disconnect

disconnectコマンドは“error”コマンドと同一です。ただし、TCP/IPソケットを閉じます。これは、MDでシャットダウンオプションに類似しています。

greylist

greylistコマンドは、グレーリストを起動させます。

dynamicscreen

dynamicscreenコマンドは、ダイナミックスクリーニングを起動させます。

tarpit

tarpitコマンドは、ターピットを起動させます。

sign

signコマンドは、メッセージに署名ヘッダを追加します。最初の引数は以下の通りです:

dkim
DKIMでメッセージに署名します。第2の引数が使用するセレクタの名前です。

vbr
メッセージでVBR-Info:ヘッダ(メッセージ証明書用)を含みます。第2の引数が、mv= parameterで含む信用された証人です。

throttle

throttleコマンドは、帯域制限を起動させます。最初の引数が1秒ごとの文字単位の帯域幅制限です。

ipshield

ipshieldコマンドは、IPシールドを起動させます。

spamscore

spamscoreコマンドはメッセージの現在のメッセージスコア合計に最初の引数を追加します。spamtotalテストを参照。

tagheader

tagheaderコマンドは、メッセージ中のヘッダにタグを前に付加します。最初の引数が、修正するヘッダです。第2引数がヘッダ値で挿入するテキストです。

addheader

addheaderコマンドは、メッセージに新規のヘッダを追加します。最初の引数が追加するヘッダ、第2引数が値です。

removeheader

removeheaderコマンドは、メッセージからヘッダを削除します。最初の引数が、削除するヘッダです。

alert

alertコマンドは、メモを送信します。単一の引数は、from:, to:, subject:および他のヘッダを含んでいるメール本文です。全体の文字列が、マクロ展開に対するサブジェクトです。