きっかけはgeno_squidsでsetuidを諦めたことだった。 ところが、fmlは特別な権限設定も無しに、fmlユーザーでMLディレクトリ配下のvar, spool に書けている。なぜ・・・? 違いは、以下のように ":include:" を経由しているか、いないかだった。 ・geno_squidsの(今までの)記法 alias: "|/xxx/geno_squids.pl ..." ・fmlの記法 alias: :include:/var/spool/ml/hogeml/include →/var/spool/ml/hogeml/include の中身: "|/xxx/fml.pl /var/spool/ml/hogeml" そう。fmlの場合、:include:を経由しているのだ。 試しに簡単なスクリプトを組んで、上記有無を適当なaliasを設定し試したところ、見事に上記の差異が再現できた。 どうも、:include: 経由だと、続くファイルの所有者・グループでもって、ファイルの中のパイプリダイレクトが動作するらしい。これがため、fmlはfmlのowneruid/gidでもってファイルを操作できていた。 では、:include: なしの、直接パイプリダイレクト(従来のgeno_squids)だとどうしても他のユーザでは動かせないのか? sendmailの場合は不明だが、postfixの場合、回避策はある。main.cf で default_privs に、動作させたいユーザ名を設定する。 http://www.postfix-jp.info/trans-2.3/conf/main.cf.jp これにより、以下のように制御できる。 :include:経由→従来通り、includeファイルのowneruid/gidで動作 直接パイプリダイレクト→default_privsで設定したユーザで動作