• 締切済み

メール受信時にパイプしてPerlプログラム起動したい(FreeBSD sendmail)

FreeBSDのサーバで、メールを受信した際にその内容をパイプして、標準入力でPerlプログラムにパイプさせてWebサイトに反映させるという処理をしたいと思っております。 ただ、Perl以前の問題でつまずいています。 メール受信時に、/etc/mail/alias を編集し、 アカウント "| /path/proguram.pl" と設定しました。同様の設定でメールの転送はできているので、書式は間違っていないかと思います。 このプログラムを指定したとき、このメールアドレスにメールを送信すると、以下のエラーが出ます。 ----- The following addresses had permanent fatal errors ----- "| /home/****/www/cgi-bin/test.pl" (reason: 126) (expanded from: <****@**.**>) ----- Transcript of session follows ----- /home/****/www/cgi-bin/test.pl: Permission denied 554 5.3.0 unknown mailer error 126 サーバ会社へ問い合わせたところ、プログラムを起動しに行くmailnullというユーザ(?)の権限の問題だそうです。 mailnullというユーザにプログラムを起動するだけの権限を与えるにはどうしたらよいでしょうか? それとも、ほかの方法がありますでしょうか? よろしくお願いします。

みんなの回答

  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.1

/home/****/www/cgi-bin/test.pl のグループ:権限はどうなってますか? mailnullというユーザのグループに同じグループを追加して chgmod g+x /home/****/www/cgi-bin/test.pl にするか もう誰でも実行していいなら chgmod o+x /home/****/www/cgi-bin/test.pl で。

uni-taka
質問者

お礼

お返事ありがとうございます。 mailnullはsendmailのデフォルトのユーザに設定してあり、mailnullグループに属しているようです。 /home/****/​www/cgi-bin/test.plは、その所有者とroot以外は権限を持っていません。 長いこと悩んでいましたが、実はこの質問を投稿した後で自己解決できました。 mailnullをsudoerに登録して、パスワードなしでsudoできるようにし、 パイプする際にsudoをはさんで起動して解決しました。 セキュリティ的にどうなのか? とも思いますが。。。 /etc/mail/aliases や ユーザごとのforwordをいじられない限りは問題ないはずなので、しばらくこの方法で解決しようと思っております。 ありがとうございました!

関連するQ&A

  • メールの受信をトリガーとしてperlを起動させたい

    メールの受信をトリガーとしてperlを起動させたいと考えています。 vine linux 4.0 で MTAはpostfix 2.2.10 のみが入っています。 /etc/postfix/aliases に root: "|/usr/bin/perl /root/test.cgi" と書いて postfix reload した後 root 宛にメールをすると、メール自体は普通に届きますが perlは起動しません。 test.cgi 自体は直接叩いてやると、ちゃんと動いています。 main.cf には alias_maps = hash:/etc/postfix/aliases と記述してあります。 メール受信で perlを起動させるにはどうしたらよいのでしょうか?

  • Postfixでメールを受信したらPerlスクリプトを実行したい

    Solaris10で構築したサーバにて、ユーザー宛のメールを受信したら Perlで記述したスクリプトを実行したい為、下に記載の手順1及び2の 方法で受信メールを渡すパイプを記述したのですがスクリプトが実行されませんでした。 手順1,2共に他のメールアドレスへ転送させた場合、メールの転送は正常に行われました。 メールを受信したらPerlスクリプトを実行するには、どのように設定すればよいのでしょうか? main.cfやmaster.cfに更なる設定の記述が必要なのでしょうか? 主な環境は下記の様になっているのですが不足がありましたら御指摘下さい。 申し訳ありませんがよろしくお願いします。 【手順1】~/.forwardによるスクリプト起動     (1)~/.forwardに、下記の様な記述をしましたがスクリプト起動せず。 (.forwardの記述)        (パターン1) \username,"|/home/username/test.pl"        (パターン2) "|/home/username/test.pl"        (パターン3) |"/home/username/test.pl"        (パターン4) "|/usr/local/bin/perl /home/username/test.pl"        ※下記のような転送は処理されました         \username,username@test.ne.jp 【手順2】main.cf修正によるスクリプト起動     (1)/usr/local/etc/postfix/main.cfに下記行を作成       alias_maps = hash:/usr/local/etc/postfix/aliases,hash:/usr/local/etc/postfix/usr_alias       (usr_aliasの記述) username: :include:/home/username/include       (includeの記述) |"/home/username/test.pl"               他に上記.forwardの記述の4パターンを試しましたが全てスクリプト起動せずでした。 【サーバ環境】 OS:Solaris10(Sparc) MTA:postfix-2.5.3 【test.plの内容】 #!/usr/local/bin/perl open(DATA_FILE, "> test_log.txt"); print DATA_FILE "Test_OK!!!\n"; close(DATA_FILE);     ※備考       ・保存場所:/home/username/test.pl       ・パーミション:test.plと/home/username共に777 (オーナはusername) 【main.cfについて】 念のために allow_mail_to_files = alias,forward,include allow_mail_to_commands = alias,forward,include の記述を追加しています。

  • Perl でメールを受信・・・不可能?

    レンタルをサーバーを借りています。 perl(CGIプログラム) でメールを受信し、その中身から 特定の文字を抜き出したり、加工したりしたいのですが、 それは可能でしょうか? 何冊かの書籍をみると、メールの送信のサンプルはある のですが、受信できる例がたまたま本がそうなのか、 どうか、見あたりません。 こんなサンプルのってるよ、なんて情報でも結構です。 やむにやまれず、CGIプログラムをはじめなければなら なくなりました。ご存知の方、どうかよろしくお願い します。

    • ベストアンサー
    • Perl
  • FreeBSDのperl

    自分のPCでCGIが動かずに苦戦しているのですが 環境はpc9821にFTPでインストールしてUSER環境を 選択しています。この環境でperlへのパスをCGIを使うためのファイルを/usr/bin/perlに指定していたとおもうのですがperlはきちんとうごいているのでしょうか? USER環境にはperlははいっていないということはありませんでしょうか?よろしくおねがいします。

  • 受信メールからプログラムへのパイプについて

    今「1strentalserver(ファーストレンタルサーバー)」と言うサーバー会社のサーバー上で 運用をしているのですが、メール受信からパイプを利用してPHPのプログラムを起動させる ようにしているのですがうまく行きません。 プログラムのパーミッションを 755 にする事で一応?は動作するようになった様なのですが やっぱりエラーメールが返ってきます。 (動いた確認は、ファイルに仮出力する事で確認済) 状況は以下の通りです。 ---------------------------------------------------------- 【設定】 通常のメールアカウントは登録せずに、メール転送設定用アカウントを登録 パイプ先 : /home/xxxxx/public_html/work/mail_test.php アカウント : macc@xxxxxxx.com ※因みに「1strentalserver(ファーストレンタルサーバー)」は、cPanelと言うツールで  設定するようになっています。 【返ってきたエラーメール】 > ---<エラーメール>------------------------------------------------ > This message was created automatically by mail delivery software. > > A message that you sent could not be delivered to one or more of its > recipients. This is a permanent error. The following address(es) failed: > > pipe to |/home/xxxxx/public_html/work/mail_test.php > generated by macc@xxxxxxx.com > local delivery failed > ---------------------------------------------------------------- 【最終の確認ソース】 // 以下のように空っぽ(4行のみ)にしてもエラーになります。 #!/usr/bin/php <?php // ?> ---------------------------------------------------------- どなたか、ご経験のある方がいらっしゃいましたら よろしくお願いします。

  • perlによる外部プログラムの実行

    perlにてCGIを作成しています。 ブラウザでCGIにアクセスしたとき、gpgというコマンドプロンプトの プログラムを実行したいと考えており以下のようなプログラムを作成しました。 test.batを単体で実行したときにはうまく動作するのですが、CGIを介して 実行するとうまくいきません。 CGIのプログラム (WriteCmd.cgi) **********************************  #!c:/Perl/bin/perl  print "Content-type: text/html\n\n";  print "test.batの実行\n<br>";  system("test.bat");  exit; ********************************** test.bat **********************************  gpg --batch --gen-key sample.txt ********************************** またtest.batの内容を **********************************  mkdir test ********************************** としてみるとディレクトリがちゃんと作成できるので WebサーバやPerlのパスの問題ではないと考えております。 よい解決方法がありましたら教えていただけると助かります。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • sendmail使用し、メールが送られた時にPerl実行するようにaliasesファイルを修正したが・・・

    こんにちは。 特定のアカウントにメールが送られた時に Perlが実行されるような実装をしていますが、うまく処理されていないようです。 aliases ファイルに、 aaa: "|/usr/local/bin/test.pl" と加えました。 test.plには、ファイルに文字列を記述するだけの処理になってます。 aaaにメールを送ったのですが、test.plが処理されてません。 perl test.pl とプロンプトで実行すると、正しく処理されているので test.plの記述が悪いわけではなさそうです。 aliasesファイルの記述が悪いのかと思いましたが、 仮に記述ミスしたtest.plにしてから aaaにメールを送ってみると メールデーモンが返ってきて、記述ミスした部分をエラー表示してくれます。 test.plは正しく呼び出されているようなのです。 これ以上、何が悪くて、どうすればこれ以上原因を判明することができるのか まったくわかりません。 どなたか心当たりのある方、ぜひともご教授ください。 よろしくお願い致します。

  • .forwardから呼び出すperlプログラムに引数を付ける事は可能ですか?

    はじめまして。Perlの初心者ものです。 よろしくお願い致します。 .forwardから呼び出すperlプログラムに引数をつけて プログラム内で引数とメール内容を処理に使用したいので すが、出来るのでしょうか? 例えば.forwardの中身を |/XXX/test.pl p1 と、記入して、 test1.pl内で引数によって、メールの内容を違ったファイルに保存したいです。 よろしくお願い致します。

  • Perl メールフォーム複数のアドレスに。

    メールを複数のアドレスに配置したいのですがPGをどう変更すれば よろしいでしょうか? 参考ソース #!/usr/bin/perl # フォームメール #jcode.plの場所を設定 require "./jcode.pl"; # sendmailの場所を設定 $sendmail = '/usr/lib/sendmail'; # サンプルのタイトル $mail_title = "メール送信サンプル"; # ページの背景色 $bgcolor = "#FFFFFF"; # ページの文字色 $text = "#000000"; # 戻り先のURL $back_url = '***@aaa.co.jp'; # CGIプログラムの設置場所 $cgi_url = "./mail.cgi"; # 受信メールアドレス(送信先) $mailto = '***@aaa.jp';

    • ベストアンサー
    • Perl
  • sendmailでメールが送信されない。

    こんにちは。 自動応答メールフォームのCGI「ThemeResMail」というのを 使っているのですが、うまく動作しません。 このcgiをアップしたのは以下のレンタルサーバーです。 http://www.dot5hosting.com/dot5/ 使用しているcgiはこれです。 http://apps.cside.com/theme/tmresmail/ メール送信完了画面は出るのですが、 送信者、あて先共にメールが届きません。 同じ設定で他のサーバー(xrea)ではうまくいきました。 sendmailとperlのパスは調べた所、間違いないようです。 ■dot5でのパス sendmail /usr/sbin/sendmail Perl /usr/bin/perl 何が原因なのかどんな事でも結構ですのでコメント頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • Perl