[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[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@example.jp/'
                        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@xxxxxxxxxxx> 様wrote:

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

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

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

References
[postfix-jp: 3726] ヘッダーの From のみ書き換えられない, 村瀬 亨

[検索ページ] [Postfix-JP ML Home]