2014年06月05日

さくらインターネットのmailfilterで Toの書換えや件名に定型文を付加する方法

enchanです。

さくらインターネットでは、.mailfilterを使って、スパムの除去や転送メールを行うことが出来ますが、Toアドレスの書き換えや件名の操作に関してはググっても探せれなかったので、もしmailfilterを使って上記のことを行いたかったら参考にしてください。

基本的な構文に関しては『メール < Wiki | さくらのレンタルサーバ非公式FAQ』を参照されるのが良いと思います。


■Toアドレスを書き換える方法

.mailfilterの構文で

 cc "!メールアドレス"
 もしくは
 to "!メールアドレス"

としても、受信者からしたらBccのような形で届きます。
※メールヘッダーのToが受信者のアドレスではなく、転送元のアドレスのままということ。

下のイメージ図のようになると思う。

Bccのような転送

このBccのようなものではなく、Toを書き換えるにはxfilterを使って以下のようにすればできました。
xfilter "sed -e '/To: /d'"
xfilter "reformail -A'To: jirou@yahoo.co.jp'"
cc "!jirou@yahoo.co.jp"


■件名(Subject)に定型文を付加する方法

こちらもxfilterを使って書き換えます。
xfilter "sed -e 's/^Subject: /Subject: hogehogehogehoge/'"
構文の意味としては、メールヘッダー内の『Subject:』文字がある行を以下の文字列(Subject: hogehogehogehoge)を定型文にする、という意味です。
※linuxのsedコマンドを使っています。
なので、sedコマンドで件名を書き換えたり(元の件名を付加しない)もできると思う。
※実際は『hogehogehogehoge+元の件名』が件名になります。




■応用編

Fromアドレスがtarou@yahoo.co.jpならToアドレスを転送先のアドレス『jirou@yahoo.co.jp』に書き換えて、なおかつ、件名(Subject)に『JIROU』を付加する。
それ以外のFromアドレスの場合は通常の転送を行う。

というような条件では以下のようにmailfilterを書きます。
if ( /^From:.*tarou@yahoo\.co\.jp.*/ )
{
    SUBJECT=`formail -c -xSubject:`

    xfilter "sed -e 's/^Subject: /Subject: JIROU/'"
    xfilter "sed -e '/To: /d'"
    xfilter "reformail -A'To: jirou@yahoo.co.jp'"
    cc "!jirou@yahoo.co.jp"

    # 元の件名に戻す
    xfilter "sed -e '/Subject: /d'"
    xfilter "reformail -A'Subject: $SUBJECT'"

    # その他の処理等......


}
else
{
    cc "!jirou@yahoo.co.jp"
}



こんな感じです!



posted by enchan at 17:56 | Comment(2) | TrackBack(0) | IT/プログラム