amavisd-newは、spamassassinとclamav向けのかなり普及した手渡しの製品です。 それにもかかわらず、カスタマイズオプションのいくつかは明らかに十分にカバーされていません。 少なくとも、作者は、Amavis :: Customフックコードに偶然出会うまで、自分のパッチを書くことを考えていました。
それはすべて、amavisdのすべてのチェックをスキップする必要があったという事実から始まりました。 これは、既知の送信者または受信者を使用して、またはポートベースの銀行分割によって簡単に実行できます。 信号が、電子メッセージをチェックするためにすでに受け入れられているヘッダーである場合、タスクはそれほど重要ではなくなります。 Amavis :: Customが登場する場所(および他の多くの場合)
サンプルファイルのドキュメントから判断すると、カスタム洗濯はさみ(?)はバージョンamavisd-new-2.5.0から入手でき、次の手順で実装できます。
メッセージ処理シーケンス
#手紙を受け取り、分解し、基本情報を収集した
#*カスタムフック:新規()-初期データの表示、バンクのロード、パラメーターの設定が可能
#手紙の確認、評価の割り当て
#*カスタムフック:チェック()-スパムとウイルスのチェックの後、ただし手紙の運命を決定する前に呼び出されます。 ここでは、成績で遊ぶことができます
#手紙の運命に関する決定(* _lovers、thresholds、...で検索)
#検疫
#通知の配布(管理者、受信者へ)
#*カスタムフック:before_send()-独自の通知の送信、検疫の整理、メッセージの変更、メールの変更ができます
#転送(ブロックされていない場合)
#*カスタムフック:after_send()-DSNを抑制してレポートを送信できます
#DSNの送信(必要な場合)
#ロギング、統計
#*カスタムフック:mail_done()-結果を検査することがあります(要点を把握できませんでした)
完全な例は、意識を拡張するための重要なコードを提供します。 一方、著者は完全に黙っていました。 いくつかの考えの結果、次の文字がamavisd-custom.confに分類されました。
#すでにスパムとしてマークされている場合、チェックをスキップしよう
パッケージ Amavis :: Custom ;
strictを使用し ます。
sub new {
my ( $ class 、 $ conn 、 $ msginfo ) = @_ ;
my ( $ self ) = bless { } 、 $ class ;
私の $ curr_head ( @ { $ msginfo- > orig_header } ) {
if ( $ curr_head =〜 / ^ X-SpamTest-Status:spam / i ) {
私の $ r ( @ { $ msginfo- > per_recip_data } ) {
$ r- > bypass_spam_checks ( 1 ) ;
$ r- > bypass_banned_checks ( 1 ) ;
}
}
}
$ self ;
}