cakephp1.2でWEBコンテンツを制作しています。


cakephpでメールを送りたいと考えていますが、
プログラムでmail()を使用すると、
画面が真っ白になりエラーの詳細もわかりません。

ですのでTeraTerm上で、本環境のphp.iniのsendmail_pathと同じディレクトリ
「/usr/sbin/sendmail -t -i」にアクセスしてみたところ


WARNING: RunAsUser for MSP ignored, check group ids (egid=500, want=51)
can not chdir(/var/spool/clientmqueue/): Permission denied
Program mode requires special privileges, e.g., root or TrustedUser.


上記にある3つのエラーが出まして、
エラー文で調べたところ、パーミッションの設定で改善されると知り、


chmod 2755 /usr/sbin/sendmail.sendmail


上記をTeraTerm上でたたきパーミッションを変更しました。


WARNING: RunAsUser for MSP ignored, check group ids (egid=500, want=51)


しかし、まだエラー文が出て、
最初のエラー文だけ残っていました。

また、cakephpにあるコンポーネント「EmailComponent」を使用しましたが、
mail()と同じように送信することはできませんでした。

もし原因がお分かりになる方が居ましたら、
ご教授お願い致します。

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2010/03/30 21:48:11
  • 終了:2010/04/06 21:50:02

ベストアンサー

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752010/03/31 00:16:17

ポイント60pt

コメント欄が閉じているのでこちらに失礼します。

まずは、CakePHPとかそれ以前にメールサーバの設定がうまくないようですね。なので、mail()だろうと、EMailComponentだろうと関係なく問題は残るでしょう。

ご自分で、

chmod 2755 /usr/sbin/sendmail.sendmail

が解決策じゃないかと試されたそうですが、この意味は理解された上で行っていますか?

既に読んでいるとは思いますが、問題となっている原因と解決については、

http://fixunix.com/security/17668-sendmail-upgrade-problem.html

を見てもらうと、一通り分かると思いますし、そのためのチェック内容も分かると思います。

全く同じ状況という保証はないですが、各関連ファイルの所有権とパーミッションを再度確認してみては如何でしょうか?

コメント欄を開けてもらえると、もう少しコメントできるかもです。

id:yoshikun22

回答ありがとうございます。

Linax初心者で原因が見当も付かなかったので、

http://questionbox.jp.msn.com/qa4038173.html

を参考にパーミッションの変更を試した次第です。


教えていただいたサイトを見まして、

パーミッションの確認をしてみました。

■サイト例

  • r-xr-sr-x root smmsp ... /PATH/TO/sendmail(どの場所にあるかわかりませんでした)

drwxrwx--- smmsp smmsp ... /var/spool/clientmqueue

drwx------ root wheel ... /var/spool/mqueue

  • r--r--r-- root wheel ... /etc/mail/sendmail.cf
  • r--r--r-- root wheel ... /etc/mail/submit.cf

■現状

drwxrwx--- 2 smmsp smmsp clientmqueue

drwx------ 2 root mail mqueue

  • rw-r--r-- 1 root root sendmail.cf
  • rw-r--r-- 1 root root submit.cf


パーミッションの設定上では大きな問題はないと思っていますが、

理解不足のため参考サイトを把握しきれていません。

また、コメント欄を開放しましたので、

どうぞよろしくお願いします。

2010/03/31 11:51:36
  • id:tobeoscontinue
    http://oshiete1.goo.ne.jp/qa172245.html
    グループの設定が異なっているのではないでしょうか

    http://soudan1.biglobe.ne.jp/qa4038173.html
    ls -la /usr/sbin/sendmail.sendmail
    で確認してみて下さい。オーナーがroot、グループがsmmsp(51)のようです。
  • id:yoshikun22
    回答ありがとうございます。

    ご指摘の通りグループ設定が異なっていました。
    オーナー:root グループ:rootとなっていました。

    それをオーナー:「root」 グループ:「smmsp」とやってみたところエラーが起こりまして、
    root以外の選択肢で「user」があったので試しにグループを変更してみました。

    しかし、まだmail()が使えない現状にあります。
  • id:tdoi
    グループはsmmspじゃなきゃ行けないような気がするんですが、どのようなエラーがでましたか?
    また、/var/spool/clientmqueue/のパーミッションはどうなっていますか?
  • id:yoshikun22
    回答ありがとうございます。
    また、返信が遅れまして申し訳ございません。

    エラーに付きましては。
    WARNING: RunAsUser for MSP ignored, check group ids (egid=511, want=51) というエラー文で、
    最初からあるエラー内容と同じです。

    /var/spool/clientmqueue/のパーミッションに関しましては、
    オーナー:「smmsp] グループ:「root」となっています。
  • id:tdoi
    /var/spool/clientmqueue/のパーミッションが原因と思われます。

    メールは/usr/sbin/sendmail.sendmailというプログラムが処理をしますが、このプログラムにsetguidがついているので、実行者に関わらず、groupがsmmspグループの権限を持ちます。そして、このプログラムがメールキューにファイルを書きだそうとする場所が、/var/spool/clientmqueue/ディレクトリになります。
    本来であれば、このディレクトリのgroupがsmmspであり、プログラムがgroup=smmspという権限で動作しており、groupに対して書き込み権限があるのでメールキューに投入することができるのですが、yashikun22さんの環境では、このディレクトリのグループがrootになっているため、smmspグループ権限を持っていても書き込みができないという状況になっているのだと思います。

    なので、

    chown root:smmsp /usr/sbin/sendmail.sendmail

    とでもしてあげた上で、

    chown root:smmsp /var/spool/clientmqueue

    とすると、動くのではないでしょうか?
  • id:yoshikun22
    お早い回答とご丁寧に説明して下さり
    ありがとうございます。

    chown root:smmsp /usr/sbin/sendmail.sendmail
    chown root:smmsp /var/spool/clientmqueue

    上記を打ち、パーミッションの変更を確認しましたが、
    mail()は使用できませんでした。
  • id:tdoi
    使用できませんでしたというのは、どの時点でどのようなエラーが発生したのでしょうか?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません