#contents
 ----
 *sendmail の smrsh 制限を手軽に取り除く方法 [#i020b3c3]
 
  Fedora Core 付属の sendmail では、smrsh 制限というものがかかっています。これはメールがサーバに配送されるとき .forward でプログラムに引き渡す際に制限をかけるための仕組みです。登録されていないスクリプトの実行を阻止することが目的です。
 
  許可されていないスクリプトが実行されようとすると、sendmail は以下のようなエラーを出し処理を許可しません。
 
     ----- Transcript of session follows -----
  smrsh: "xxx.pl" not available for sendmail programs (stat failed)
  554 5.0.0 Service unavailable
 
  セキュリティ面を考えると非常に有り難いのですが、大人数でサーバを共用している場合など、ちょっと面倒な場合もあるかと思います。セキュリティ的にリスクを負うことになりますが、設定を単純にさせる方法を紹介します(自己責任でお願いします)。
 
 ** 方法1:シェルスクリプトに置き換える [#rd12169f]
 
  smrsh の実体は /usr/sbin/smrsh です。
 
  smrsh はフィルタの役割(安全なプログラムかどうか判断します)なので、これを簡単に置き換える方法としては、何もフィルタしない方法です。この方法のメリットは sendmail.cf の再構築を必要としません。また、必要があれば、ファイルを戻すことで、すぐに制限をかけなおすことも可能です。
 
  # mv /usr/sbin/smrsh /usr/sbin/smrsh.org
  # ln -s /bin/sh /usr/sbin/smrsh
 
 
 ** 方法2:sendmail.mc の編集(こちらが正攻法) [#f96c03cb]
 
  sendmail.mc で smrsh を無効にする設定を行い、sendmail.cf を再構築する方法を紹介します。
 
  まずはエディタなどで /etc/mail/sendmail.mc を開きます。初期状態では 73 行目が対象となっている箇所です。
 
  FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
  この行を無効にするために、コメント(dnl を先頭につける)をします
  dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
  ファイルを保存後、sendmail.cf を再構築します。
  # m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
  最後に sendmail のプロセスを再起動して設定は完了します。
  # /sbin/service sendmail restart
  sendmail を停止中:                                         [  OK  ]
  sm-client を停止中:                                        [  OK  ]
  sendmail を起動中:                                         [  OK  ]
  sm-client を起動中:                                        [  OK  ]
  これで smrsh の制限は無くなりました。
 
  再び制限をかけたいときは sendmail.mc を編集して dnl を消して有効な行にして、sendmail.cf の再構築後、sendmail の再起動を行うことで有効になります。
 
 
 
 
 

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS