							-*- Indented-text -*-
# CML Documents.
# Copyright 1993-1998 (C) SAITOH-Ely-Yasuhiro.
# All rights reserved.



自動で作成される File Permission の問題
***************************************
　sendmail が /etc/aliases の内容により、直接プログラムを起動すると、基本的
に daemon の権限でプログラムが実行されます。ただし，メールがプログラムの動
作するホスト上で発信された場合は、発信者の権限でプログラムが実行されます。
　cmas は送られてきたメールをプロシジャで直接処理し、自動的に処理するため、
この機能をそのまま用いると、メンバーファイルなどが、daemon の所属で作成され
てしまうため、管理者と daemon が異なる group に属している場合、手動でエディ
トできないという問題が発生します。だからといって、permission を -rw-rw-rw- 
にするのはセキュリティ上あまり好ましくありません。
　ところが、sendmail は /etc/aliases の中から :include: で指定されたファイ
ルでプログラムの起動をおこなう設定をした場合は、:include: で指定されている
ファイルの持ち主の権限でプログラムを起動させます。cmas はこの機能を利用して
File Permission の問題をクリアしています(*1)。

*1
++
　従って、今までにいくつかのメイリングリストを管理した経験を持っている方に
とっては、起動形式が多少複雑に感じられるかも知れません。


新しい sendmail を使っている方へ
********************************
◎おそらく、バージョン 8.10.0 以降の sendmail を使用している方は以下の注意
　が必要になります。

　このバージョンから default での aliases のありかが /etc から、/etc/mail
　に変りました。ご注意下さい。

◎おそらく、バージョン 8.9.0 以降の sendmail を使用している方は、以下の注意
　が必要になります。

  このバージョンから、/ からCMLが用いる起動されるスクリプトが格納されている
  ~cml/exeまでのすべてのディレクトリにおいて、permission が 755 もしくは、
  それよりも厳しいものになっていないとスクリプトが起動されなくなりました。

◎おそらく、バージョン 8.8.8 以降の sendmail を使用している方は、以下の注意
  が必要になります。

  このバージョンから / から、CMLがインストールされている ~cml/ までのすべて
  のディレクトリにおいて、permission が 755 もしくは、それよりも厳しいもの
  になっていないとスクリプトが起動されなくなりました。

  このことは、もしかすると、１つの CML パッケージ群を複数の管理者で共有する
  場合に問題が発生するかもしれない可能性が高いことを示しています。

◎おそらく、バージョン 8.8.6 以降の sendmail を使用している方は以下の注意が
  必要です。このバージョンから、実行ファイルが NFS の先にあると、実行されな
  いようになっているようですので、CML の実行部分を NFS に置かないようにする
  必要があるようです。

◎おそらく、バージョン 8.6.10 以降の sendmail を使用している環境では、以下
  の点に注意が必要です。

  aliases の中で、 `:include:' で参照されるファイルの中にフィルタを定義して
  いる場合、これまでの sendmail では、ファイルの持ち主の権限でそれが実行さ
  れてきましたが、場合によっては、デーモン(daemon)／エージェント(agent)の権
  限でそれが実効されてしまうようです。

  CML のように、この機能を利用して File Permission の問題がクリアされている
  場合、 sendmail 8.6.10 以降の sendmail が動く環境での使用に影響が出て来る
  と思われます。

　解決方法は、以下、NetNews での記事ですが、
----------------------------------------------------------------------------
From: yamane@dumpty.nal.go.jp (Takashi YAMANE)
Newsgroups: fj.mail,fj.sys.sgi
Subject: Re: sendmail 8.6.9 on IRIX 5.3
Date: 9 May 1995 09:27:08 JST
Organization: National Aerospace Laboratory
Lines: 114
Message-ID: <3omcss$363@asuka.nal.go.jp>
References: <3mhor1$jd6@asuka.nal.go.jp>
NNTP-Posting-Host: dumpty.nal.go.jp
X-Newsreader: mnews [version 1.18PL3] 1994-08/01(Mon)
Xref: i.nal.go.jp fj.mail:945 fj.sys.sgi:408

航技研の山根です。 fj.mail と fj.sys.sgi のクロスポストです。

しばらく前に、以下のような質問をしました。expire されているサイトも
多いと思いますので、引用します。

> Indigo2 Extreme の OS を IRIX 5.3 にバージョンアップしたところ、
> sendmail が 8.6.9 になったとともに、以下の様な状態になりました。
> 

> aliases に、
>    hogehoge-mail: :include:/usr/people/userA/exefile
> 

> としておき、exefile の中身は、
>    |"/usr/people/userA/program option"
> となっているとします。
> 

> 以前はこの "program" というプログラムは、exefile の所有者(userA)の
> 権限で実行されていました。しかしバージョンアップしてからは
> daemon が実行します。
> 

> これまで "program" が利用するファイルやディレクトリはすべて
> userA のみに write 権がありましたが、このままでは o+w にしないと
> エラーになってしまいます。

このポストについて、IRIX 5.2 でもソースからコンパイルした sendmail 8.6.9
ではうまくいかず、しかも、
  /usr/people/userA/exefile is unsafe for mailing to program 

とかいうメッセージが出る、という情報が寄せられました。私も試したところ、
確かに、IRIX 5.2 or 5.3 で sendmail 8.6.9 or 8.6.10 を付属の Makefile.IRIX 

で make したところ上記のメッセージが出てしまい、IRIX 5.3 付属 sendmail
（以下、sgi 版 sendmail と表記）ならばともかく実行はしてくれた処理すら
できない状態になりました。

結局、sendmail 8.6.10 のソースを眺めた結果、以下の様な措置でこの問題を
解決できると考えるに至ったので報告します。

まず、sendmail 自体については、sendmail 8.6.10 の場合、
src/Makefile.IRIX の CFLAGS に
         -D_POSIX_CHOWN_RESTRICTED 

を追加して make するだけで O.K. です。

しかしこれを付けることが、セキュリティー上 IRIX では許されるかというと
そうではないようです。src/recipient.c の中に以下のようなコメントがあります。

**	Security Note:
**		If you have restricted chown (that is, you can't
**		give a file away), it is reasonable to allow programs
**		and files called from this :include: file to be to be
**		run as the owner of the :include: file.  This is bogus
**		if there is any chance of someone giving away a file.
**		We assume that pre-POSIX systems can give away files.

また、これに関連して src/conf.c の中で chownsafe という関数が定義されており、
以下のような説明があります。

**  CHOWNSAFE -- tell if chown is "safe" (executable only by root)
**
**	Parameters:
**		fd -- the file descriptor to check.
**
**	Returns:
**		TRUE -- if only root can chown the file to an arbitrary
**			user.
**		FALSE -- if an arbitrary user can give away a file.

つまり上記の -D_POSIX_CHOWN_RESTRICTED は chownsafe の戻り値を常に 

TRUE にしてしまうものですが、デフォルトでは、BSD 系の unix では TRUE、
それ以外の多くは FALSE を返すようになっています。IRIX でも restricted chown 

を持たない場合は、-D_POSIX_CHOWN_RESTRICTED としてはいけないようで、
実際に、IRIX 5.3 ではデフォルトでは restricted chown ではありません。

しかし、これは以下のようにして変更できます。

/var/sysgen/mtune/kernel の

* name			default      	minimum		maximum
restricted_chown 	0
                     を 1 に変更

あとは、/unix を適当にバックアップして、（/unix.save が普通らしい）、
  % /etc/autoconfig -f 

で、 /unix.install ができるので、reboot すれば O.K.

これで目的通りの動作をする sendmail をセキュリティー上の不安なく
作成して使うことができることになると思われます。

もちろん、これは素人が自分なりに調べて見つけた方法なので、なにか誤りが
あるかもしれません。もしお気づきの点がありましたら、ぜび御指摘下さい。

ちょっと補足しますと、上記の症状は CML というメーリングリスト支援
プログラムを使っていてでくわしました。CML は :include: されるファイルの
中のスクリプトがその file の owner 権限で実行されることを前提に
つくられています。ところが、sgi 版 sendmail では無条件に daemon が
実行しましたが、推定するところ、どうやら、

hogehoge-mail: :include:/usr/people/userA/exefile
       exefile の中身 =  |"/usr/people/userA/program option"
が、
hogehoge-mail: |"/usr/people/userA/program option"
と直接記述されているかのように処理するように sgi 版 sendmail はなっている
のではないかと思われます。この場合、daemon （正確には sendmail.cf で
設定された uid,gid）で実行されて当然です。

このような動作でもかまわないのなら、sgi 版 sendmail を捨てる必要は
必ずしもないと考えます。なお、他の記事でも話題になっていますが、
IRIX 5.3 の sendmail は 8.6.9 で、8.6.10 をベースにしたパッチが
出ていますので入れ換えた方がいいでしょう。

蛇足ながら、sgi 版 sendmail では、sendmail.cf の中で Ot オプションを
つけなくてもローカルな時間になりますが、ソースからコンパイルした sendmail 

では付けておかないと世界標準時になってしまいます。(^^)
----------------------------------------------------------------------------

  ということで、このような場合は、-D_POSIX_CHOWN_RESTRICTED をつけて 
  sendmail を make し直すなどの工夫が必要なようです。

  sendmail の動作がおかしいな？と思ったら、まずこの点を調べてみて下さい。


X-Authentication-Warning ヘッダ
*******************************
　CML を用いてMLを運用する場合に、sendmail のバージョンによっては、
X-Authentication-Warning: というヘッダが付加される場合があります。

　これは、CML がメールの送信者として、envelop from につけるアドレスが、
sendmail.cf で trusted users に定義されていない場合に付加される警告メッセー
ジです。

　この、X-Authentication-Warning: ヘッダを付加されないようにするには、マシ
ンの管理者に CML を設置する User を Trusted に設定してもらうえばOKです。


sh: cmld not available for sendmail programs というエラー
*********************************************************
　お使いのシステムでは、sendmail から実行できるプログラムが smrsh (SendMail
RestrictedShell) を通じて制御されており、cmld が smrsh で許可されていないの
が原因と考えられます。

　cmld/cmas 等を srmsh で実行を許可する方法は、許可するプログラムを決まった
ディレクトリにシンボリックリンクすることにより実施します。このディレクトリ
は、システムによって多少違います。/usr/libexec/sm.bin/ であったり、
/etc/smrsh/ であったりします。詳しくは、man srmsh してみてください。
