#!/usr/bin/perl -- # # Fri,02 Jan,2004 # Mon,20 Dec,2004 # Copyright(C)2004 G-HAL # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # 使用法: # # - 本スクリプトを /usr/local/libexec/testfilter に EUC で保存し、 # 実行権限を付ける。 # # - .mc ファイルに以下の定義を追加し sendmail.cf を再作成する。 # # LOCAL_CONFIG # Ktestfilter program /usr/local/libexec/testfilter # # LOCAL_RULESETS # HReceived: $>+CheckTestFilter # # SCheckTestFilter # R$* $: $(testfilter $1 $) # R$* $@ OK # # 参考: # sendmail による「!広告!」フィルタ # http://www.imasy.or.jp/~ume/adfilter/ # use strict; my $str = $ARGV[0]; # sendmail filter strings I/F test # 以下を有効にしたまま実物の sendmail を動かすとやばいよ。 open( OUT, ">> /tmp/testfilter.output" ); print OUT "$str"; print OUT "\n"; close( OUT ); # 参考にした資料には、 # 空白、タブ、改行は sendmail によって # 空白代替文字に置換されている。 # 空白代替文字は cf では confBLANK_SUB で指定され、 # デフォルトは「.」である。 # って書いてあったけれど、実際に試したら、 # 最初と最後の空白は削除。 # <> () [] 内の文字はそのまま。 # アルファベットや数字の前後以外の空白は削られる。 # 前と後ろの <> も付く。 # だった。 # # ex.1 # sendmail への入力: # Message-Id: <123.456 789.abc@localhost.foo.var.baz.private> # このフィルタへの入力: # <123.456 789.abc@localhost.foo.var.baz.private> # # ex.2 # sendmail への入力: # Received: from moge.hoge.jp (poge.moge.hoge.jp [XXX.XXX.XXX.XXX]) # by baz.var.foo.jp (nkrw/3010290903) with ESMTP id i04HGQq21616 # for ; Mon, 5 Jan 2004 02:16:26 +0900 (JST) # このフィルタへの入力: # from moge.hoge.jp(poge.moge.hoge.jp[XXX.XXX.XXX.XXX])by baz.var.foo.jp(nkrw/3010290903)with ESMTP id i04HGQq21616 for;Mon,5 Jan 2004 02:16:26+0900(JST) # print "$str"; exit 0; __END__ # [ EOF ]