2010年2月15日

[postfix-jp: 3728] Re:ヘッダーの From のみ書き換えられない

碇です

少し試してみました

sender_canonical_mapsで書き換えられないか試してみたのですが
sender_canonical_classes = header_sender
とすると全く書き換えが行われず
sender_canonical_classes = envelope_sender,header_sender

sender_canonical_classes = envelope_sender
などenvelope_senderがないと書き換えられないようです

masquerade_classes
も同様のようです

filterを書けば動作するかテストしてみました
http://www.postfix-jp.info/trans-2.1/jhtml/FILTER_README.html

手順
filter ユーザーを追加
/var/spool/filter ディレクトリを作成しfilterユーザーだけrwにします

master.cfを以下のように変更
smtp inet n - - - - smtpd
-o content_filter=filter:dummy
(snip)
filter unix - n n - 10 pipe
flags=Rq user=filter argv=/usr/local/bin/filter -f ${sender} -- ${recipient}


grepとsedのところを必要に応じて変更すれば動作すると思います。

大体の手順は上記の通りです
動作するか試してみただけですので十分テストしてから運用してみてください


/usr/local/bin/filter
-----------------------------------------
#!/bin/bash

# Simple shell-based filter. It is meant to be invoked as follows:
# /path/to/script -f sender recipients...

# Localize these. The -G option does nothing before Postfix 2.3.
INSPECT_DIR=/var/spool/filter
SENDMAIL="/usr/sbin/sendmail -i " # NEVER NEVER NEVER use "-t" here.

# Exit codes from <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
ARGV="$@"
shift $#

UNIQ_ID="`date +%s`_$$"
TMP_FILE="${UNIQ_ID}.mail"
REWRITE_FILE="${UNIQ_ID}.rewrite"

cd $INSPECT_DIR || {
echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }

test -e $TMP_FILE && rm -rf $TMP_FILE > /dev/null 2>&1
test -e $REWRITE_FILE && rm -rf $REWRITE_FILE > /dev/null 2>&1

# Clean up when done or when aborting.
trap "rm -f $TMP_FILE ; rm -f $REWRITE_FILE" 0 1 2 3 15

# Start processing.

cat >$TMP_FILE || {
echo Cannot save mail to file; exit $EX_TEMPFAIL; }

# Specify your content filter here.
# filter <in.$$ || {
# echo Message content rejected; exit $EX_UNAVAILABLE; }
OLD_IFS=$IFS
IFS=""
FLAG_REWRITE=FALSE
while read LINE;do
if [ $FLAG_REWRITE = FALSE ];then
echo $LINE | grep '^From:.*@hostname.example.co.jp' > /dev/null 2>&1
if [ $? -eq 0 ];then

echo $LINE | sed -e 's/From:\(.*\)@\(.*\)/From:\1@xxxxx/'
FLAG_REWRITE=TRUE
else
echo $LINE
fi
else
echo $LINE
fi
done <$TMP_FILE> $REWRITE_FILE
IFS=$OLD_IFS

$SENDMAIL $ARGV <$REWRITE_FILE

exit $?

-----------------------------------------


On Thu, 4 Feb 2010 23:11:54 +0900 (JST)
村瀬 亨 <bocya0001@xxxxx> 様wrote:

> ぼちゃ と申します。
> お世話になります。
>
> 表題の件についてご教示いただきたくメールしました。
> 実現したいことは、
> hostname.xxxx.xx.jpのローカルからmailコマンドを使った
> 送信メールについて、
>
> エンベロープのFrom user@xxxxx
> ヘッダーのFrom user@xxxxx
>
> としたいのですが、うまくいかず原因もつかめません。
> 何かわかることがありましたらご教示いただければと思います
> 。

--
碇 永志
<ikari-ml@xxxxx>

_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list


投稿者 xml-rpc : 2010年2月15日 00:34
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/93334
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。