#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 の再起動を行うことで有効になります。