[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[postfix-jp: 4029] Re: 複数RCPTコマンド時の挙動について
- Subject: [postfix-jp: 4029] Re: 複数RCPTコマンド時の挙動について
- From: Mitsuru Ogino <ogino@xxxxxxxxxx>
- Date: Mon, 19 Dec 2011 23:43:01 +0900
荻野です。
石原 said the following on 11/12/19 10:52:
> destination_recipient_limit = 1
> とすることにより複数RCPT TOがある場合、1つの宛先につき1メールずつ送信することは出来ました。
これは送信するときに1メールずつ送信することになります。
> しかし、1メール毎にRCPT TOのアドレスをToヘッダに設定することが出来ずに苦戦しています。
> 前提として、受け取るメールにはToヘッダは設定されてきておりません。
>
> main.cfに
> smtpd_recipient_restrictions = check_recipient_access
> regexp:/etc/postfix/prepend_rcpt_to
> ,permit_mynetworks
> ,reject_unauth_destination
>
> prepend_rcpt_toに
> /(.*)/ PREPEND To: $1
>
> のように設定すれば、RCPT TOのアドレスをToヘッダに設定することが出来るのですが、
> 全てのメールに全てのRCPT TOのアドレスがToヘッダに設定されてしまいます。
これは smtpd の設定なので受信するときの設定です。受信時に To: ヘッダを付
けてしまえば、その後で一通ずつ送信してもみんなおんなじになってしまいます。
しかし、Postfix で置換などを行えるのは smtpd_xxxx_restrictions など受信
時しかないと思いますので、結論としては単独の Postfix ではできないと思わ
れます。
> 解決法やヒントになるものでも構いませんので、
> ご存知の方がいらっしゃいましたらご教授願えますでしょうか。
Postfix をポート番号などで分けて2段構えにし、最初の Postfix では
destination_recipient_limit で1通ずつとして relay_host で2段目の
Postfix に渡し、2段目の Postfix で prepend_rcpt_to でヘッダを追加しては
どうでしょうか。
別案としては master.cf の smtp に -o content_filter=rcptto2header:dummy
をつけて smtp 経由で受信したものを全部 rcptto2header に送り込み、
rcptto2header は書き換えを行ったものを sendmail コマンドで配送依頼すると
いう手があります。今回のお話は prepend_rcpt_to で書き換えられる範囲(例
えば To: は最初は存在しないなど)ですが、配送と書き換えを分離したり、書
き換えに柔軟性を持たせようとすれば、こちらがすっきりするように思います。
(もし何らかのスクリプトが書ければ、ですが)
こちらについては、
http://www.postfix-jp.info/trans-2.3/jhtml/FILTER_README.html
等を参照してください。
準備:書き換えを実行するユーザ XXX を作成しておきます。
master.cf: smtp ポートの標準の smtpd に設定する例
smtp inet n - - - - smtpd
-o content_filter=rcptto2header:dummy
rcptto2header unix - n n - 10 pipe
flags=q user=XXX
argv=/usr/local/sbin/rcptto2header ${sender} ${recipient}
master.cf: 別に 10025 ポートに立てる例
10025 inet n - - - - smtpd
-o content_filter=rcptto2header:dummy
-o smtpd_client_restrictions=permit_mynetworks,reject
rcptto2header unix - n n - 10 pipe
flags=q user=XXX
argv=/usr/local/sbin/rcptto2header ${sender} ${recipient}
main.cf: rcptto2header に渡すときに宛先毎にメールを分ける(これはスクリ
プトが手抜きだからで、スクリプト側で複数の宛先を処理することもできるかも
しれませんが、こちらの方がシンプルかと。
rcptto2header_destination_recipient_limit=1
/usr/local/sbin/rcptto2header の例:なるべく単純に、特に中間ファイルを作
成しないように書いた方が無難です。To: が無いのが確実なら awk の部分は
cat だけでもうまくいくかも知れません。
このスクリプトは手抜きなので、To: が付いていて、かつ複数行に渡っていると
きはうまく動きません。
#!/bin/sh
# Usage: rcptto2header sender recipient
sender="$1"; recipient="$2"
{
# To: ヘッダを出力
echo "To: $recipient"
# 元のメールの To: ヘッダ以外を出力
awk '
BEGIN { inheader=1 }
inheader==1 && $1 !~ /^[Tt][Oo]:/ { print }
/^$/ { inheader=0 }
inheader==0 { print }
'
} | /usr/sbin/sendmail -G -i -f "$sender" -- "$recipient"
exit $?
--
荻野 充 (おぎの みつる) ... 「萩(はぎ)」にあらず
Key fingerprint = 7F26 5414 1805 F31B 1617 10B7 C117 07AE 1691 9BD1
_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list
- Follow-Ups
-
- [postfix-jp: 4030] Re: 複数RCPTコマンド時の挙動について, 石原
- References
-
- [postfix-jp: 4023] 複数RCPTコマンド時の挙動について, 聡石原
- [postfix-jp: 4024] Re: 複数RCPTコマンド時の挙動について, Kimiya Kitani
- [postfix-jp: 4027] Re: 複数RCPTコマンド時の挙動について, 石原
[検索ページ]
[Postfix-JP ML Home]