メインロゴ
未登録 | ゲスト1c765f6b79e9c3023b284acc0509c00f | 無制限 | 登録 |  pinky 
[ お知らせとかそれっぽい何か ]

お知らせ: サーバー復旧しました。
2009年 9月15日(火)

2009年 8月28日(金)のルーター入替直後にサーバー電源を入れるとHDDがクラッシュしデータが飛んでいきました。
奇跡的にDBの消失はなく、torrentファイルが2つ無くなっただけでしたが、サーバー自体もそろそろ変え時かと思っていたのでこの際、交換することにしました。

新規サーバーが納品されるまでに1週間かかる予定だったので11日あたりの復旧を転送先サイトにてアナウンスしていたのですが、
メールサーバーの設定に予想以上に悩まされ、無駄に3日をを費やしたあげくに結局ルーターのconfigを保存し忘れてたのが原因という落ちで
(つまりメールサーバーの設定には問題なし)今日という日を迎えたわけであります。

さらに、Webサーバーを稼動させると、今度はPHP経由でのsendmailが利用できないことが発覚。
これの解決にさらに数時間かかり、本日朝、何とか復旧したかなという感じです。

ユーザーの方や、ミラーを依頼してくださるメーカーの方、ご迷惑おかけして申し訳ありませんでした。

また、個人相手に対応してくれた日本HPの営業担当の方、ありがとうございます。
あと、部品交換してくれた沖電気の人もありがとう。
当日発注の部品を名古屋から数時間で届けてくれるとは思ってませんでした。


ceena.netはHPのサーバーと保守を担当してくれるパートナー会社及び各種ソフトウェアを無料で提供してくれる世界中の有能なエンジニアの方々、
そしてユーザーの皆様によって支えられております。
そんな全ての人たちに心からありがとう。

ceemな人はただただ無力ですが、脳の密度が少しでも増すようにGoogle先生にお世話になりながら日々知能レベルの上昇に努めますので、
今後ともよろしくお願い致します。

---------------------------------------

さて、今回ハマったPHPからのメール送信ができない場合の対象方法を後世の人のため(主に後の自分のため)にひとつ。

まずは環境と状況。

Ubuntu 9.04(amd64) + aptでインストールしたXmailの置換えsendmailをPHP.iniで指定しても送信できない。
XmailはWindowsでは結構使われているようだが、Linux系ではあまり使われていないようで、情報が少ないのでとりあえずメモ。

以前はWindowsで運用していたため、その時使っていたXmailの設定をLinux環境でも引き継ぐためにXmailを選んだというわけ。
クラッシュ前の環境ではaptではなく、ソースから入れたのでこの時はすんなりPHPから呼び出せた。
(しかし、どうやったかは覚えていない。。。)

apt諦めてソース取ってきて入れるのは悔しいのでとりあえず解決策を探ってみた。

結論から言うと初期状態ではアクセス権がないってことだと思う。
詳しくないから言い切れないけど。。。


sudo aptitude install xmail

こいつでインストールすると、sendmail関連は以下に配置される。
/usr/sbin/sendmail
/usr/lib/sendmail

しかしこいつらは
/var/lib/xmail/sendmail/xsendmail
というシェルスクリプトへのリンクである。

上記は環境変数DEFAULT_DOMEINとMAIL_ROOTを使って、
以下のsendmail本体を実行する
/var/lib/xmail/sendmail/sendmail

php.iniにて、sendmail_path = /usr/sbin/sendmail -t -i -f
これで実行すると、mail()は無反応。。。。
どうやらアクセスできないご様子。

なので、脳みその少ない私は、じゃぁ、/usr/sbin/に直接sendmailおいて、sh経由で実行すればいいんじゃねって結論に至ったわけであります。

元の/usr/sbin/sendmailを適当にリネームして
mv /usr/sbin/sendmail /usr/sbin/sendmail-old

sendmail本体をsendmail.xmailとして/usr/sbin/にコピー
cp /var/lib/xmail/sendmail/sendmail /usr/sbin/sendmail.xmail

所有者として実行させるためにidをセットする。
chmod a+s /usr/sbin/sendmail.xmail

/var/lib/xmail/sendmail/xsendmailを元に/usr/sbin/にxsendmailというスクリプトを以下の内容で作る
----------------------------------------------
#! /bin/sh
#modified for debian xmail package

export DEFAULT_DOMAIN=`cat /etc/xmail/default_domain`

if [ -z $MAIL_ROOT ]; then
export MAIL_ROOT=/var/lib/xmail
fi

/usr/sbin/sendmail.xmail $*
----------------------------------------------

そして、php.iniを変更するのめんどかったので、sendmailとしてシンボリックリンクを。
ln -s /usr/sbin/xsendmail /usr/sbin/sendmail

これでsendmail_path = /usr/sbin/sendmail -t -i -fのままで実行できるようになりましたとさ。
なお、mail()、mb_send_mail()を使うときは第五引数に送信元アドレスをセットしておく。

最初からそういうふうにインストールしてほしいものです。。。。
まぁ、この程度のことでテンパってしまうのは私だけでしょうけど。。。
投稿日: 2009-09-15 18:56:03  表示: 1404

コメントはありません(エリアを非表示にする)

コメント

コメントはありません