- PR -

alias 空メールの設定について教えて下さい。

投稿者投稿内容
WARA2
会議室デビュー日: 2008/10/05
投稿数: 8
投稿日時: 2008-10-13 16:02
こんにちは。Linux超初級ですが、宜しくお願いします。
空メールに挑戦しているのですが、上手くいきません。
SSHで接続して.qmail-infoを作り、|"/home/webmaster/public_html/mail.php"と
書き込むまでは出来ました。
パスも調べ、これで間違いありません。
mail.phpについては、直接アクセスしてメールが送信できることを確認しています。
mail.phpの中身は、動作確認のため、指定のメール宛に送信するだけにしています。
あと、確認すべきところ等がありましたら、恐縮ですが教えていただけないでしょうか?
aliasesの場合は、設定の反映が必要なようですが、qmail-aliasの場合も
必要なのでしょうか?
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2008-10-14 22:08
何がどう「上手くいかない」のでしょうか?
「直接アクセスしてメールが送信できること」ってどうやりました?
シェルから起動できるスクリプトなんですか?
シェルから起動できなければパイプ処理できません。
aliasesの件は何のことかわかりません。
WARA2
会議室デビュー日: 2008/10/05
投稿数: 8
投稿日時: 2008-10-14 23:07
こんばんは。言葉足らずで申し訳ありません。
空メールを送信しても、返信が来ません。
「直接アクセスしてメールが送信できること」は、問題を切り分けるために
メール送信部分が動作するかどうかをチェックしたもので、
送信先メールアドレスをPHP内に指定した上でPHPだけで
メール送信テストをしました。

PHPの内容は以下のようになっています。
#!/usr/bin/php -q
<?php
//メールソースを標準入力から読み込み
$source = file_get_contents("php://stdin");
if(!$source){
echo "標準入力に失敗\\\\n";
exit(0);
}
// Fromを抽出する
ereg('From: .+@[0-9a-zA-Z_\\\\.\\\\-]+',$source,$fromlist);
ereg('[0-9a-zA-Z_\\\\.\\\\-]+@[0-9a-zA-Z_\\\\.\\\\-]+',$fromlist[0],$from);
$to = $from[0];
$sub = "PHPからの空メール送信テスト";
// 送信専用メールアドレス
$header = "From: $to";
$Return = $to;
// メール本文組み立て
$body = "
PHPからの空メール送信テスト
$to
";
mb_language("ja");
mb_internal_encoding("UTF-8");
if (!mb_send_mail($to, "$sub", $body, $header, "-f $Return")) {
echo "メール送信失敗\\\\n";
exit ();
}
?>

それでaliasesですが、調べたところsendmailの場合はaliasesに
パイプ処理の記述をして設定を反映させる必要があるということでした。
qmailの場合は、.qmail-(アカウント)に記述するということまではわかったのですが、
aliasesのように設定の反映の必要があるかどうかわからず、
質問させていただきました。
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2008-10-15 08:52
#qmailは詳しくないので、はずしているかもしれません。

「.qmail-(アカウント)」というのはどこに説明がありますか?
ローカル配送された後のメールの処理は .qmail に書くようですが、
これとは違うものですか?
http://www.qmail.org/man/man5/dot-qmail.html

PHPのプログラムはシェルから起動して確認しているといるのですね?
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2008-10-15 09:29
こんにちは。

.qmail- はメールボックスを用意せずにアドレス受け皿を作成する用なので、
アカウント内の .qmail と一部同様の使い方ができます。
心配であれば、単純に .qmail- 内に転送先アドレスの記述をして、受け皿の
設定が正常であるか確認してはどうでしょうか。

で。問題の切り分けですが。
単体(シェル起動)での動作(標準出力で擬似メールデータを渡しての送信?返信?)は、
正常動作することを確認されている、ということで良いでしょうか。

標準入力の受けに file_get_contents を利用するのが正なのかわかりませんが、
まずはメールデータを受け取れる/書き出せる、というところから確認してはどうでしょうか?

[サンプルのような参考サイト]
http://www.asahi-net.or.jp/~aa4t-nngk/qmail4.html#filterbuild

#追記
単純にパーミッションの問題とかは・・・ありますか?

[ メッセージ編集済み 編集者: あるかな 編集日時 2008-10-15 09:32 ]
WARA2
会議室デビュー日: 2008/10/05
投稿数: 8
投稿日時: 2008-10-15 14:56
お返事が遅くなって申し訳ありません。

「.qmail-(アカウント)」については以下サイトを参考にしました。
http://kimura.conv.jp/de/369/1683/
http://blog.c-production.com/archives/2007/04/post_288.html

PHPは単体で動くことを確認しております。
それで、スクリプトに関してパイプ処理後にログを記録するようにと
アドバイスがあり、そのようにしましたら記録されませんでした。
> まずはメールデータを受け取れる/書き出せる、というところから確認してはどうでしょうか?
ということで、まさにご指摘の通りでした。
もう少し調べてみます。
WARA2
会議室デビュー日: 2008/10/05
投稿数: 8
投稿日時: 2008-10-15 23:42
こんばんは、WARA2です。

利用しているサーバー会社に問い合わせましたら、ご指摘のようにメールアカウントを作ると
/home/以下にアカウント名のディレクトリが作られ、その中にある
.qmailにパイプ処理の記述をする方がいいとの事でした。
それで、いろいろと試してみましたが、変わらずPHPが動作しません。
.qmailにメールアドレスを記述した場合は送信されますので、それは問題ないようです。

以下、mail.phpです。
<?php
file_put_contents('log.txt', date("Y-m-d h:i:s -> ") . "書き込み" ,FILE_APPEND);
exit ();
?>
単純にlog.txtに書き出すだけになっていて、直接アクセスして動作を確認しています。

.qmailですが、アカウント作成直後は以下のようになっていました。
|/usr/bin/spamfilter
./Maildir/
|test -s $HOME/Maildir/autoresponse/message.txt && qmail-autoresponder -n 10 -t 60 $HOME/Maildir/autoresponse || /bin/true

ここに、
|/usr/bin/php -q
|/home/webmaster/public_html/mail.php
もしくは
|/home/webmaster/public_html/mail.php
だけを場所を変えたりして記述してみましたが、どうにも動きません。
また、パーミッション等については特に必要ないはずとの事でした。

お手数ですが、記述についてアドバイスをいただけないでしょうか?
宜しくお願いします。

[ メッセージ編集済み 編集者: WARA2 編集日時 2008-10-15 23:45 ]
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2008-10-16 08:39
.qmailの記述が2行になっているのはなぜですか?
また、今回のスクリプトもシェルから起動を確認していますか?
(#!/usr/bin/php がないのが気になります。)

パーミッションは関係ないわけではないです。
apacheから起動する場合は必要ないです。シェルから起動する場合には必要です。
public_html のディレクトリに置いているために誤解されているのでしょう。
ほかの場所に置いたほうがいいですよ。

スキルアップ/キャリアアップ(JOB@IT)