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

[postfix-jp:02669] mailbox_command の expansion



関根@SDRIと申します。

調べてるのはpostfixの 1.1.11 ですが、2.0.7 でも確認してます。

local(8)が参照する mailbox_command(_maps) ですが、
man ページには
  mailbox_command
    External  command  to use for mailbox delivery. The
    command  executes  with  the  recipient  privileges
    (exception:  root).  The string is subject to $name
    expansions.
と "$name expansion"、すなわち foward_path のところで述べられている展
開が行われるように書いてあります。

しかし、実際には「EXTERNAL COMMAND DELIVERY」のところに書いてある、環
境変数による export がおこなわれると思うんですが、いかがでしょうか?

ソースをざっと追ったところ、mailbox_command(_maps)の方は

  delivery_mailbox() in local/mailbox.c:
  ...
  } else if (*var_mailbox_command) {
      status = deliver_command(state, usr_attr, var_mailbox_command);
  ...

となっています。よって、実際のコマンドは deliver_command() 以下で起動
されます。また、.forward/aliasの場合においても

  deliver_token in local/token.c:
  ...
  } else if (*STR(addr_buf) == '|') {
      if ((local_cmd_deliver_mask & state.msg_attr.exp_type) == 0)
	  status = bounce_append(BOUNCE_FLAG_KEEP,
				 BOUNCE_ATTR(state.msg_attr),
				 "mail to command is restricted");
      else
	  status = deliver_command(state, usr_attr, STR(addr_buf) + 1);
  ...

となっており、deliver_command() によって配送されています。
当然、deliver_command の中では "$name expansion" ではなく環境変数の 
export が行われています。

--
SEKINE Tatsuo:
 http://www.sdri.co.jp/~tsekine/
 tsekine@xxxxxxxxxx(business)	System Design & Research Institute Co.,Ltd.
 tsekine@xxxxxxxx(private)	Yokohama Linux Users Group


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