• 締切済み

qmailでパイプ処理。空メール自動返信がうまくいきません・・・

qmailでパイプ処理。空メール自動返信がうまくいきません・・・ PHP4.xxです。 初心者です。 携帯から空メールを送ってサーバーサイドでパイプ処理して自動返信を行いたいのですが うまくいきません。 サーバーはlinux系 自作サーバーで qmailです。 ネットで色々調べてSSHでサーバに入り、メールアカウントの.qmailの中に 実行するPHPのスクリプトのフルパスを記載。 viで内容を確認すると ------------------------------------------------------------ | /home/httpd/vhosts/domain.com/httpdocs/mail/touroku.php | true ./Maildir/ ------------------------------------------------------------ と3行記載されています。 これでいけますよね・・・? で実行ファイル(touroku.php)の中身はテストとして ------------------------------------------------------------ #!/usr/bin/php -q <?php $to = "送信したいメールアドレス"; $from = "とりあえず送信者アドレス"; $title = "WEBテスト"; $naiyou = "テスト内容"; base64_encode(mb_send_mail($to, $title, $naiyou, "From:$from")); exit(99); ?> ------------------------------------------------------------ 上記のファイルはそのままブラウザで実行すると確かにメールが来ました。 正常に作動しています。 またこのファイルtouroku.phpは属性は755にしてあります。 冒頭の#!/usr/bin/php -q はどこかのサイトで書かれていたのでつけてみました。 はずしても結果は同じです。 また最後の「 -q」はあっても無くても同じ結果でした。 最後のexit(99);はこちらのサイトに書かれてたのでつけて見ました。 http://www.asahi-net.or.jp/~aa4t-nngk/qmail4.html#filterbuild PHPのファイルは正常に作動している・・・となると qmailのパイプ処理がうまくいっていないということですよね・・・? 上記の以外の箇所で何か設定等を変更しないといけないのでしょうか? それとも、パイプとして処理できるphp実行ファイルを置くフォルダが決まっているのでしょうか? 経験者の方お知恵を拝借できましたら幸いです!!

みんなの回答

回答No.2

過去に同じことをしましたが、わたくしの場合は、 空メールの宛先ユーザーをabcとすると、 /home/abc/.qmail の中身を | /usr/bin/php /var/www/data/autoreply/doit.php としました。 そして、/var/www/data/autoreply/ のパスに doit.php という名のスクリプトを置きました。 パーミッションは留意する必要あると思いますが、ファイルの中身に関してはこれでちゃんと稼動しています。 参考にならなかったらすみません。

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.1

ファイルのパーミッションと所有権はどうなっていますか? /usr/bin/php /home/httpd/vhosts/domain.com/httpdocs/mail/touroku.php を実行した場合の結果はどうなりますか?

noguri999
質問者

補足

ファイルのパーミッションは 755です 所有権は domain作成時のIDです。(アパッチではなく、自分です。) /usr/bin/php /home/httpd/vhosts/domain.com/httpdocs/mail/touroku.php をブラウザで実行した場合確実に実行されました。メールがきました。 どうぞよろしくお願い致します。 アドバイス頂けましたら幸いです。

関連するQ&A

  • qmailでプログラムへの転送が許可されていない環境での空メール登録処理

    質問します。 ホスティング予算的な理由により、とあるホスティング業者でサーバーをレンタルしており、メールサーバーもかねているのでメールアカウントの管理は管理ツールから行っています。 メールサーバOSはqmailなのですが、ホスティング業者によるqmailの転送設定制御でプログラムへの転送が許可されていない(パイプ"|"が弾かれてしまう)のです。 でも、何とか空メールからDBへのメールアドレス登録を実装したいのです。 転送先プログラムはqmailからの転送(リダイレクト)さえ上手くいけば処理するようには作成済みです。 何か方法はありますでしょうか? DBへの登録処理&自動返信処理プログラムはphpで書いているのでこの場所に質問させていただきます。

    • 締切済み
    • PHP
  • 空メールでPHPを起動

    CentOS 4.5、Apache 2.0.53、PHP 5.2.4+qmailで空メールのシステムを開発中ですが、Could_not_open_input_fileのエラーが出てPHPのプログラムが起動されません。 システムとしてはから空メール宛先用のユーザー321を追加し、/home/321/の.qmailを | /usr/local/bin/php -q /usr/local/apache2/htdocs_test/htdocs/mail_action2.php としてパーミションを600、所有者を321、stickyビットを立てています。ディレクトリー321も321所有で権限は700です。 呼ばれるmail_action2.phpはテスト用に #!/usr/local/bin/php -q <?php $fp = @fopen("/tmp/test.txt", "w"); $size = fwrite($fp, "xxx"); fclose($fp); ?> としています。所有者は321、権限は604、これもstickyビットを立てました。ディレクトリhtdocsは開発者所有、705の権限です。 これで321に空メールを送ると何も返答がなく、maillog上に greylist[31334]: IP nnn.nnn.nnn.nnn OK - accepting ... qmail: 1xx6.8xx4 delivery 1949: deferral: Could_not_open_input_file:_/usr/local/apache2/htdocs_test/htdocs/mail_action2.php_/ qmail: 1xx6.8xx5 status: local 0/10 remote 0/20 qmail: 1xx3.8xx0 starting delivery 1950: msg 1xx9 to local 321@abc.com qmail: 1xx3.8xx9 status: local 1/10 remote 0/20 qmail: 1xx3.8xx9 delivery 1950: deferral: Could_not_open_input_file:_/usr/local/apache2/htdocs_test/htdocs/mail_action2.php_/ qmail: 1xx3.8xx9 status: local 0/10 remote 0/20 と出ます。(文字数の関係からかなり省略しています。) mail_action2.phpは実行されず、/tmp/test.txtは作成されません。 ひとつ気になるのがSPAM対策としてgreylistを使っているのですが、多分このせいでCould_not_open_input_fileが2回出ていることです。これが影響しているのかもしれません。 どなたか他の方法でも結構ですからお知恵をお貸しください。

    • ベストアンサー
    • PHP
  • .qmail(dot-qmail)での処理について

    .qmail(dot-qmail)の設定において、正規表現か何かを使って、 受け取ったメールの処理を分岐させたりすることは出来ますでしょうか? 具体的には、たとえば test12345@example.com などのように、「test」で始まって後は数字が続くアドレス(test数字@example.comの形式)宛てにメールが来た場合はパイプでスクリプトを起動し、それ以外のアドレス(たとえばinfo@example.com)宛てに届いたメールはそのまま普通にメールボックスに配送するようにしたいと思っています。(testの後ろが数字じゃない場合、たとえば「testabc@example.com」等だったら普通のアドレスとして認識する) すなわち、「test数字@example.comの形式」になっているかどうかを判定する処理を.qmail内で実現できるのかどうかが一点。 もう一点は、それがもし不可能ならば、代替手段はどのようにすべきかをお伺いしたく質問させていただきました。 ちなみに.qmail内で処理する方法についてはいろいろググってみましたが見つけられませんでした・・・。

  • qmailによるメールの受信について

    質問場所がこちらでいいのか迷ったのですが、もしお分かりの方が見ていられましたらご解答頂ければ幸いです。 現在qmailにより2個の受信設定をしております。 一個はキャッチオール的な形でアカウントが存在しない物を ファイル名 .qmail-default 中身 | /home/vpopmail/bin/vdelivermail '' cach@acount.net ファイル名 .qmail-cach 中身 |/usr/home/acount/www/root/getimg.php と言う設定で画像ファイルを受信するスクリプトを組んでおります。 その同じメールサーバー内で ファイル名 .qmail-gup 中身 |/usr/home/acount/www/link/pop.php でgup@acount.net宛に届く物をpop.phpに渡す設定を作りました。 そうしました所、スクリプト内に両方とも正しくデータが渡り処理がされるのですが、 gup@acount.net宛のものに関しては一度送るとその後何も送らない状態でもメールが来たと判断されるのか、何秒か置きに常にスクリプトが起動している様子になってしまいました。 サーバー屋にも問合せをしたのですが原因が分からないと言う形の解答が来ました。 エラーが出る場合は常にメールサーバーにPHPのスクリプトエラーが出ていましたが、エラー部分は解消した為エラーは出なくなり、問題がなさげな形なのですが、一度エラーがあるスクリプトをアップすればまた数秒おきに常に出ている感じなってしまいます。 そう考えると何か無限ループ的な物に陥り常にサーバーにも負荷を掛け続けてるのではないかと不安になっております。 何が原因か分からない物でこれを見て分かる方がいらっしゃいましたら、何卒良きアドバイスとご解答を頂ければと思います。 皆様ご多忙中とは思いますがよろしくお願い致します。

    • 締切済み
    • PHP
  • 空メール処理について

    仮にentry@hoge.com宛へ空メールを送ると送信元アドレスをテキストファイルに書き込みたいのですが、どのようにしたらいいのでしょうか? MATがqmailで.qmailにてcgiなどに渡す方法はいくらか調べたのですが、今回はレンタルサーバで行いたいのでサーバの設定を変更することなくcgiファイルだけで行うことができるのでしょうか? ちなみに下記URLをみるとMATの設定をするようなことが見当たらなかったので可能なのかなぁと思っているのですがどうなのでしょうか? http://souppot.jp/article212.php よろしくお願いします。

    • ベストアンサー
    • Perl
  • 空メールが携帯に届きません・・・

    空メールプログラムについて質問なのですが、 PHPで空メールシステムを作成した所、PCとソフトバンク(携帯)では問題なく返信されるのですが、AU(携帯)、DoCoMo(携帯)には返信されず、エラーも帰って来ませんでした。ログを見る限りでは、AUやDoCoMoのメールサーバーまで行っているのではなく、スクリプトの段階で失敗に終わっているようなのです。 色々、調べては見たものの解決できず、皆さんの力を貸してもらえればと思って投稿しました。 使用しているサーバーとスクリプトは以下になります。宜しくお願いします! 使用しているサーバー(さくらインターネット) →メール受信のタイミングでtest.phpに転送 PC ○ AU × DoCoMo × Softbank ○ [test.php] #!/usr/local/bin/php -q <?php { $stdin = fopen("php://stdin", "r"); if (!$stdin) { exit(); } $email = NULL; while ($line = fgets($stdin)) { $line = trim($line); if (!$line || $email){ break; } if (eregi("^from:", $line)){ $email = getEmail($line); } } if (!$email){ exit(); } $subject = "test_sub"; $body = "test_body"; mb_language("Japanese"); mb_internal_encoding("EUC-JP"); mb_detect_order("ASCII,JIS,UTF-8,EUC-JP,SJIS"); mb_send_mail($email, $subject, $body, "From: test@test.jp"); } function getEmail($line) { if (eregi("(.*)\<(.*)\>", $line, $tmp)){ $from = $tmp[2]; } return strtolower(trim($from)); } ?>

    • 締切済み
    • PHP
  • PHP+sendmailによるメール自動返信

    お世話になります PHPとsendmailを使ってメール自動返信(空メール登録)の仕組みを作っています いろいろ試行錯誤しながら、エラーメールが帰ってこないところまでは何とかいけたのですが、PHPが動いているそぶりが無いので困っております 本来は自動的にメールを返信するものですが、動作確認のためにこのようなログを吐き出すPHPをキックしています PHPにエラーがある場合はエラー内容がfatalerrorでメールが帰ってきます 以下のようにPermission deniedも帰ってくるので、PHP自体にはアクセスできていると思うのですがそこから先がわかりません ----- The following addresses had permanent fatal errors ----- |/var/www/html/log_test.php (reason: 126) (expanded from: <user@hoge.jp>) ----- Transcript of session follows ----- sh: |/var/www/html/log_test.php: Permission denied 554 5.3.0 unknown mailer error 126 ■/etc/aliasesの記述 user: |/var/www/html/log_test.php ■log_test.phpの内容 #!/usr/bin/php -q <?php require_once 'Log.php'; $conf = array('mode' => 0777, 'timeFormat' => '%X %x'); $file = &Log::factory('file', '/var/www/html/out.log', 'TEST', $conf); $file->log('ログ内容'); ?> 以下のコマンドも実行しています # cd /etc/smrsh # ls -la # ln -s /usr/bin/php ./php こちらを参考にしました↓ メール受信時にperlを実行(sendmail) http://lab302.blog65.fc2.com/blog-entry-96.html

    • 締切済み
    • PHP
  • 【携帯サイト】空メールの機能について・・・qmail/php

    携帯サイトでよく見かける 空メールを送信して自動で登録して返信してくれる機能を作りたいのですが、どうすればいいのかわかりません。。。 qmailでメールを受信した時に自動でphpを実行するようなことはできるのでしょうか? メールアドレスを保存するため「eregi("From: ・・・」で取得しようと思っているのですが。。。 おすすめの方法がございましたらよろしくお願い致します。

    • 締切済み
    • PHP
  • sendmailで空メール処理は・・・!?(゜~゜;)

    あ、どうもはじめまして!!お世話になっております。 qmail FORWARD を使わない空メール処理(自動返信)は出来ますか…。 色々見てもpmail関連のものでした!! 共有サーバーではやはり厳しいでしょうかヾ(・ε・。)ォィォィ ちなみにBASHファイルとsendmailのダブルブッキングからの空メールはダメですか(・o・)ゞ了解!

    • ベストアンサー
    • PHP
  • qmail+vpopmail メールキューが溜まります

    いつもお世話になります。 FreeBSD6.2 qmail+vpopmailでメールサーバをたててます。 ある日を境に急にメールキューが溜まるようになり、 メール送信に遅延をきたすようになりました。 http://www.atmarkit.co.jp/flinux/rensai/qmail03/qmail03c.html を参考にキューを削除しましたが、すぐにまた溜まってしまって根本的な解決にはなりません。 285614 (0, R)  Return-path:  From: MAILER-DAEMON@xxx.domain.jp  To: mens_companion_ex_info@domain.xx  Subject: failure notice  Date: 1 Apr 2008 08:11:50 +0900  Size: 3353 bytes このように溜まってます。 そもそも、qmail自体、 /usr/local/etc/rc.d/qmail.sh stop でストップしませんし、kill idでもkillできません。 ストップしないということはqmailの構築自体が間違っているのでしょうか? 何か解決策はありますでしょうか? よろしくお願いします。