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

[postfix-jp: 2364] Re: (再)mailman導入時にpostfixの設定



岩本といいます。

On Tue, 10 Oct 2006 07:11:02 +0900
Kentaro Hashimoto <mlist@xxxxxxxxxx> wrote:

> 「ここまでの理解」
> postfixはenvelopeのみを書き換えるとのことなので、実際にmessage toは
> そのまま書き換わらない。

virtual_alias_mapsではエンベロープのみを書き換えるという事であっています。
今回は関係有りませんが、canonical_maps等はヘッダも書き換えます。

> main.cfで定義されているものは、全てenvelopeが対象となる。

配送に関しては、通常はエンベロープのみを対象としていると考えてOKです。
これまた今回は関係有りませんが、header_checksのようにヘッダを対象とした
設定もあります。

> mailman(推定)はenvelopeは見ない。

mailmanが実際どのような動作をするかは詳しくは知りませんが、今回の場合は
Postfixがmailmanにメールを渡せていないので、とりあえずはmailmanがどのような
動作を考えずに、まずはPostfixがmailmanにメールを渡すように設定する事を
考えた方がいいとおもいます。

> 私の現在の設定では、example.com宛以外は全てvirtualで処理される。

これはちょっと違うと思います。virtual_mailbox_domainsで設定されている、
/etc/postfix/virtual_domains_mapsにはexample.comとvirtual.comが記述
されているので、基本的には両方ともvirtualで処理されます。
また、mydestinationにはなにも指定していないので、local配送するドメインは
存在しません。
# ドメインではないですが、user@[10.1.1.1] のようにIPアドレス形式で来た場合、
# そのIPアドレスが$inet_interfacesか$proxy_interfacesに含まれているならば
# そのメールをlocal配送します

> どこかで強制的にlocalに落とさなければいけない。

virtual_alias_mapsやvirtual_mailbox_mapsではプログラムを起動する事は
出来ませんので、aliasを使ってプログラムを起動する為には、対象のメールを
localに渡す必要があります。

> >ヒント1. postfix によって envelove from が test@example.com に書き換
> >    えられた後、vertual トランスポートを使うのはなぜですか?
> >    example.com は $mydomain に含まれているので、放っておけば local 
> >    トランスポートが使われますよね

$mydomainに含まれていても、それだけではlocalトランスポートは使われません。
localトランスポートが使われるのは、$mydestinationに含まれるドメインに
対してです。

どのトランスポートが使われるかについては、ADDRESS_CLASS_READMEが参考に
なると思います。
# http://www.kobitosan.net/postfix/trans-2.3/jhtml/ADDRESS_CLASS_README.html

> これまでの流れで行くと、transport_maps.cfにたどり着く前にはenvelopeの
> アドレスは書き換わっていると思われます。

はい、その通りです。
外部から来たメールは、Postfix内部で以下の順番で渡されていきます。

smtpd -> cleanup -> qmgr -> virtual/local

virtual_alias_mapsはcleanupが処理します。
それに対して、transport_mapsはqmgr(から呼ばれたtrivial_rewrite)が参照します。

この辺りについては、OVERVIEWが参考になると思います。
# http://www.kobitosan.net/postfix/trans-2.3/jhtml/OVERVIEW.html

> transport_maps.cf内でlocalへ落とすためには、本来
> test@xxxxxxxxxxx	local
> となっている部分を
> test@example.com	local
> とするべきなのでしょうか?(これは以前動かなかった)

そういう事になります。
以前試して動かなかったというのは、別の要因があったからです(後述)。

> というより、上記の説明でいくとexample.comは自動でlocalになるので、無意味
> ですよね?

example.comは$virtual_mailbox_domainsに含まれるので、デフォルトではvirtual
配送されます。
local配送させる為には、transportでの記述が必要です。


On Thu, 12 Oct 2006 00:38:55 +0900
Kentaro Hashimoto <mlist@xxxxxxxxxx> wrote:

> ここの一番下にあるところの注意事項をよく読み直してみた結果
> transportはvirtual_mailbox_mapsに登録されているアドレスのみ
> 対象となるようで、これはmysql(postfixadmin)自身にMLのアドレス
> が無いため、いくらtransportで書いてもunkown userとなっていた
> ようです。

Postfixでは、アカウントが存在するかのチェックを行うタイミングが2度あります。
一つはsmtpdが外部からメールを受け入れる時で、もう一つはlocalやvirtualが
実際に配送する時です。

"Recipient address rejected: User unknown in virtual mailbox table"という
エラーが出る時は、smtpdでのアカウントの存在チェックでエラーになっています。

virtual配送されるドメインに対してのsmtpdのアカウント存在チェックは、
$virtual_alias_mapsと$virtual_mailbox_mapsのどちらかにでも登録されて
いるかというチェックを行っています。
このチェックを通過する方法としては、一つは

> 試しに、test@xxxxxxxxxxxのアカウントをpostfixadminにて追加して
> みたら、見事にmailmanに配送されるようになりました。

というようにvirtualユーザとして登録してしまうという方法があります。

今回状況が複雑化している要因として、AMaViSを使用しているという事も
挙げられると思います。

AMaViSを使用している場合、以下のようにメールは流れます。

smtpd[1] -> cleanup[1] -> qmgr[1] -> smtp -> AMaViS
  -> smtpd[2] -> cleanup[2] -> qmgr[2] -> virtual/local

transportで"test@example.com  local"にしてもうまく動かなかったというのは、
おそらく以下のような動作になっていたからだと思います。

1. 外部のMTA/MUAがsmtpd[1]に対してtest@xxxxxxxxxxx宛のメールを渡そうとする。
2. smtpd[1]はtest@xxxxxxxxxxxの存在をチェックし、$virtual_alias_mapsで指定
   されているvirtual_mailmanにtest@xxxxxxxxxxxのエントリが見つかるので、
   メールを受け付けてcleanup[1]に渡す。
3. cleanup[1]は、virtual_mailmanのエントリに従い、test@xxxxxxxxxxx を
   test@example.comに書き換えてキューに入れる。
4. qmgr[1]はキューからメールを取り出し、content_filterが設定されているので
   smtpを使ってAMaViSにメールを渡す。
5. AMaViSはウィルスチェックを行った後、smtpd[2]にメールを渡そうとする。
6. smtpd[2]はtest@example.comの存在をチェックし、virtual_alias_mapsにも
   virtual_mailbox_mapsにも存在しないのでメールの受付を拒否する。

> 試しに、test@xxxxxxxxxxxのアカウントをpostfixadminにて追加して
> みたら、見事にmailmanに配送されるようになりました。
> 
> 今回は、いくつかあるバーチャルドメインのうち1つだけMLを複数
> 立ち上げるので、ユーザ自身が新たにMLを作成できないことには、
> 毎回手動で管理者がtransportを作成してpostfixadminにてアドレス
> を追加すれば対応可能ですので、これでもいいのですが、もう少し
> 何か良い対処法はありませんでしょうか?

[postfix-jp: 2298]にある設定の状態の場合、test@xxxxxxxxxxxのアカウントを
作成してもsmtpd[2]でのアカウントの存在チェックを通らないと思うのですが、
なにか他にも設定を変更しませんでしたか?
現在の設定がわかればもう少し助言が出来ると思います。

-- 
いわもと こういち(sue@xxxxxxxx/sue@xxxxxxxxx/sue@xxxxxxxxxx)
# なるようになれ、明日もイケイケ♪
_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list

References
[postfix-jp: 2328] Re: (再)mailman導入時にpostfixの設定, Nakane Ryuji
[postfix-jp: 2330] Re: (再)mailman導入時にpostfixの設定, Kentaro Hashimoto
[postfix-jp: 2331] Re: (再)mailman導入時にpostfixの設定, Nakane Ryuji
[postfix-jp: 2332] Re: (再)mailman導入時にpostfixの設定, Kentaro Hashimoto
[postfix-jp: 2335] Re: (再)mailman導入時にpostfixの設定, Kentaro Hashimoto

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