20100908221216

匿?メール

ひょんなことから匿名メールを送る仕組みを急造する。

準備物:
  • Sendmail相当 (Postfix) SMTPサーバ
  • Procmail
  • Procmail同梱のFormail

.forward
"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #[username]"
Sendmail/Postfixのユーザ環境での転送処理。ここでとりあえずProcmailに転送します。ちなみに余談で、Procmailへ渡すのは"| /usr/bin/procmail" で良いのだけれど、こう書く一昔前の慣わしだそうです。玉虫色に染まれ!さん:procmail用の.forward設定の源流を探るにて詳しい説明が。とりあえず一昔前のSMTPサーバが同じ内容の.forwardを誤解しないようにとのこと。

.procmail
PATH=$HOME/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$MAILDIR/procmail.lock
SENDMAIL=/usr/sbin/sendmail

FROM=anonymous@example.com
FORWARD=target@example.com
MASK=[MASK]

:0
* ^Subject: Anonymous
| formail -A "X-Loop: $FROM"\
 -I "From: $FROM"\
 -I "Return-Path: $FROM"\
 -I "Reply-To: $FROM"\
 -I "To: $FORWARD"\
 -I "Received: $MASK"\
 -I "User-Agent: $MASK" \
| $SENDMAIL -i $FORWARD
条件: "Subject: Anonymous"で始まるものについて、X-Loop:ループ検知用ヘッダ追加 (-A) 後、送り主情報 (From:) を用意したアドレスへ塗り替え (-I) 、User-Agent:、Received:等、送り主を特定できる情報を可能な限りダミーで塗り替える。(-I) そしてその結果を登録された送り先へ送るといった内容。至極単純。Procmailインストール時に入るFormailですが、これが非常にお手軽なうえ強力で・・・便利です。

ところで、Procmailのレシピ中パイプ通した時に\の改行を加えると挙動が変わって配送されなかったり。それに故実際は1行で繋いでいる訳なのだがー 何故だろう。

Posted by uso8000k | Categories: Tech | [ツィート(笑)] | [2010/09/08/T22_12_16/]