• 締切済み

.procmailrcのレシピの書き方、教えて下さい

電子メールによって掲示板へ記事の投稿ができるモジュールをWEBで見つけ、設置したいと思うのですが、.procmailrcのレシピの書き方がいまひとつわかりません。 procmail を使って、アドレスを転送する事は出来たので、.forwardは間違っていないと思うのですが・・、 解説には、 .procmailrc :0 Hw * ^[Tt]o: .*(投稿用メールアドレス) |$HOME/(設定パス)/ir-post.pl となっていましたので、 :0 Hw * ^[Tt]o: .*wa-gire@ |$HOME/www/cgi/ir-post.pl にしてみたのですが、動作しません;; logファイルには、 /home/1/./wa-gire/www/cgi/ir-post.pl: 20: Syntax error: "(" unexpected となってしまします。 FTPで接続しますと、自分のホームディレクトリーの上は、1 というディレクトリーがあって、他のユーザーの方の名前が並んでいます。 さらにその上がhomeになっているようです。 /home/1/の次の ./ が無くなれば良いような~??気がするのですが・・ 良いレシピの書き方を教えて下さいませんか。 良きアドバイスをお願いします。。_(_^_)_

  • nui
  • お礼率66% (2/3)

みんなの回答

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.3

気になった点をいくつか・・・ ir-post.plの漢字コードがsjisになってます 通常、UNIXのperlは漢字コードがEUCでないとうまく動かない場合があるので UNIX上のnkfコマンドか、何らかのツールを使ってEUCコードにしてみてください 後、telnetでログインした後、 perl --version と打ってみてください perlのバージョンが表示されると思うのですが、versionは5以上になってますか? あとは・・・ :0 Hw * ^[Tt]o: .*wa-gire@ |$HOME/www/cgi/ir-post.pl この最後の行の部分を |/usr/local/bin/perl $HOME/www/cgi/ir-post.pl としてみてください これでも駄目だったら・・・手元にその環境が無いと、ちょっと私では対処しきれないと思います・・・

nui
質問者

お礼

ほんとうにありがとうございます、 出来たんです~ 昨日もさんざん悩んでいて、でもよくみれば、jcode.plが壊れていたり、mimer.plをダウンロードするときにhtml形式でダウンロードしてたり、初歩的なミスが多かったんですね(へへ;;) 最後はjcode.plのパスをhome/1/wa-gire/www/cgi/jcode.plにしてやったらメールが送られていったので、ぉぉ~っとおもって、まぁこれでいっかぁ~しめしめ~と思っていました。ご報告が遅れてすみませんでした。 またなにかあると恐いので、jcode.plをEUCコードで保存してアップロードしてきました。 本当にありがとうございました。感謝しております。m(_ _)m

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.2

ソースを見てみた所、perl構文としては正しい記述でした もしかして・・・と思いbashにスクリプトとして食わせてみた所、20行目でエラーが出ました ir-post.plの一行目に #!/usr/bin/perl と記述してありますが、その場所にperlコマンドはおいてありますか? 多分無いと思いますので、そこの記述をちゃんとperlコマンドのある場所に書き換えてやる必要があります 設置するサーバにtelnetでログインしてコマンドプロンブトで which perl とするか type perl とすればperlコマンドの場所が表示されますので、その場所に合わせてir-chat.plの一行目を書き換えてください ちなみに行数の数え方ですが、ファイルをエディタ等で開いて最初の行が一行目、その後、改行されるたびに2行目、3行目と増えていくのが論理行(大体はこの数え方です)。もう一つ表示行と言う数え方があって、こちらは表示画面で表示されている行毎に一行ずつ、数えます。

nui
質問者

お礼

度々お返事いただき、ありがとうございます。 まだ設置できずにもやもやしておりますが、 素敵なプログラムなので、なんとか、モノ(笑)にしてみたいと~ いろいろ勉強しながら頑張ってみます。 もしまた、ヒントなどありましたら宜しくお願いします。 本当にありがとうございました。

nui
質問者

補足

ご親切に感謝します。ありがとうございます。 which perlとしてみたところ、/usr/bin/perl でしたが、 お借りしているサーバー(さくらWEB)では、/usr/bin/perl でも/usr/local/bin/perlでもどちらもで、良いような説明でしたので、 他に使っているcgiと合わせて/usr/local/bin/perlにしてみました。 でも、だめです~涙 telnetで/usr/local/bin/perl -c ir-post.plとしてみたら、ir-post.pl syntax OKでした。何が悪いのかさっぱりわからなくなってしまいました~ なにか、ヒント!注意点はないでしょうか? エラーしたときのlogをのこしてゆきます。お暇なときでよろしいですので、宜しくお願いします。 my: not found : not found : not found /home/1/./wa-gire/www/cgi/ir-post.pl: 20: Syntax error: "(" unexpected procmail: Program failure (2) of "/home/1/./wa-gire/www/cgi/ir-post.pl" From katochan@horae.dti.ne.jp Wed Mar 14 10:00:58 2001 Subject: 959 Folder: mailbox

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.1

>logファイルには、 >/home/1/./wa-gire/www/cgi/ir-post.pl: 20: Syntax error: "(" unexpected これってir-post.plの方が間違ってるとログをはいてると思うんですが・・・ ir-post.plの20行目にエラーがあるようですので確認してみてください

nui
質問者

補足

ありがとうございます。一歩前進出来ました。 ir-post.plの20行目の数え方がよくわからない私ですが、(すみません) たぶん自分で設定し直す辺りで・・ 自分で直したところは、$email_from = 'wa-gire@wa-gire.com'; の行だけですが、何か書き足りないでしょうか? # 受信メールの最大バイト数 $email_max = 102400; # From欄 $email_from = 'wa-gire@wa-gire.com'; # Sender欄 $email_sender = ''; # Reply-To欄 $email_replyto = ''; # メールサーバーの妥当性をチェックするか? $check_mail_server = 1; もし良かったら http://www.wa-gire.com/cgi/ir-post.pl チェックして下さいます?

関連するQ&A

  • パスがうまく通らない

    Check.pmが  o:\public_html/post_pervice/cgi/lib にあります。 このモジュールを利用するために以下のようなプログラムを書きました。   #! /usr/bin/perl -w   use CGI::Carp qw(fatalsToBrowser);   unshift @INC, "o:/public_html/post_service/cgi/lib";   print join "\n",@INC;   use Check; この中の  use Check; をコメントで伏せて動かすと、   o:/public_html/post_service/cgi/lib   O:/usr/site/lib   O:/usr/lib のような表示がなされるので、  unshift @INC, "o:/public_html/post_service/cgi/lib"; はちゃんと機能しているようです。 しかし  use Check; のコメントを外して動かすと、   Can't locate Check.pm in @INC (@INC contains: O:/usr/site/lib O:/usr/lib .) at O:\public_html\post_service\cgi\showINC.pl line 8.   BEGIN failed--compilation aborted at O:\public_html\post_service\cgi\showINC.pl line 8. のようなエラーが出てしまいます。 何がいけないのでしょう。

    • ベストアンサー
    • Perl
  • procmailの使い方

    http://www.abe-tatsuya.com/web_prog/perl_cgi/mail2perl.php 届いたメールアドレスに対して、hoge.plスクリプトを実行したいと 思います。 サーバー管理会社より、aliasesは編集できないということでしたが、 procmailは編集できるそうです。 しかし、上記サイトを見てもイマイチprocmailの使い方が わかりません。 届いたメールに対し、hoge.plを実行させるコードの書き方、 編集方法を教えてください。 もしくは、“一定文字数以上を受信拒否する設定方法”、 “オリジナルの自動返信メール送信”設定方法がprocmailで できましたら教えてください。 知識はなくはないのですが、本業プログラマではないため わかりやすくご説明頂けると助かります。

    • ベストアンサー
    • Perl
  • procmailrcでHwオプションやBオプションの意味は?

    RedHat9でprocmail-3.22-9を使用しています。 .procmailrcで VERBOSE=yes PATH=/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin:/pub/bin:$PATH. SHELL=/bin/sh MAILDIR=/home/user01/Maildir DEFAULT=$MAILDIR/new/ LOGFILE=$MAILDIR/.procmail.log :0 * ^mail-followup-to:.*q-beginners .q-beginners/ :0 * ^reply-to:.*FreeBSD-beginners-jp .FreeBSD-beginners-jp/ :0 * ^Subject:" hidesoft..*" [hidesoft]/. :0 B * ^Subject:" [Kuser:.*" [Kuser]/. :0 Hw /home/user01/Maildir/new exit という記述を見かけたのですがこのHwオプションの意味が分かりません。manを見て みたのですが H…ヘッダをegrepして w…フィルタやプログラムが終って、exitcodeを検出するまで待つ(通常無視され る)。 もし、そのフィルタが不成功ならばそのテキストはフィルタされてしまわない。 つまり、届いたメールファイルのヘッダを検出して(Hオプション)、マッチするかの 判定をして exitコードが現れるまで待つ? という事ですかね。うーん、イマイチよく分かりません。 このHwオプションがあるのとないとではどんな違いが起こるのでしょうか? あちこちで検索してみまてもイマイチ「Hw」の意義がわかりません。 「0: B」 の「B」もどういう意味になるのでしょうか? (manを見ては見たのですが)

  • パールスクリプトを呼び出すときのパスの指定について

    わたしはあるインターネットのスクールに通っていたのですが パスについて頭が混乱しています。 CGIのコースのアクセスカウンターの授業で ディレクトリ構造が /usr/home/www/s1000000/cgi-bin/counter.pl となっているパールスクリプトをhtmlファイルのimgタグで呼び出すとき <img src="/usr/home/www/s1000000/cgi-bin/counter.pl?NAME=username&KETA=4">(その1) と記述したらうまく動作せず、 <img src="/~s1000000/cgi-bin/counter.pl?NAME=username&KETA=4">(その2) と訂正され、解決しました。 サーバのローカルルールでホームディレクトリのファイルは/~で呼びだせるように なっているようなのですが、それならば(その1)と(その2)は 同じことだと思うのです。 パスの相対指定はわかるのですが、絶対指定やurl指定がわかりません。 (その1)は絶対指定で(その2)はurl指定ということなのですか? (その1)と(その2)の違いは何ですか? なぜ(その1)では動作しないのですか? パスの根本的なところを知りたいです。 どなたか教えていただければ幸いです。

    • ベストアンサー
    • CGI
  • Fedora Core1サーバーでCGIが利用できません

    Fedora Core1でwebサーバーを立てたのですが、実行しようとすると「500 Internal Server Error」となってCGIが動きません。 perlへのパスやパーミッションの設定も見直しましたが、どこの設定が間違っているか分からないので、設定方法を教えてもらえないでしょうか? 現在の環境は ホスト名:saba.dyndns.org perlのパス:/usr/local/bin/perl CGIを仕えるようにしたいユーザー:guest CGIを設置するディレクトリ:/home/guest/cgi-bin/ Apacheのバージョンは2.0.49 となっています。 また以下はhttpd.confの抜粋です。 Listen *:80 #ScriptAlias /cgi-bin/ "/var/www/html/" ScriptAlias /cgi-bin/ "/home/guest/public_html/cgi-bin/" AddHandler cgi-script .cgi .pl <Directory "/home/guest/public_html/"> Options ExecCGI AllowOverride None Allow from all Order allow,deny </Directory> <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options Includes ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 長文失礼しました。

  • HTMLからのpl実行

    htmlのタグに下記のように記述し(test.html) <FORM METHOD="POST" ACTION="http://192.168.100.100:8080/cgi-bin/test.pl"> cgi-binにあるtest.plを実行したいのですが、 test.plのコードの中身がブラウザに表示されてしまいます。 httpd.confの設定は下記のように設定してあり、 権限もtest.pl,test.htmlともに755で設定しています。 ** ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" <Directory "/usr/local/apache/cgi-bin/"> AllowOverride None Options None Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi .pl .rb

    • ベストアンサー
    • CGI
  • cgi-libを使って変数値渡しをしたいのですが

    cgi間の変数渡しの質問をしたのですが、うまくいかなかったので、調べてみると、 cgi-lib.pl'を使うことで簡単に値を渡せるということが分かりました。 ですが、 use lib '/home/www'; require 'cgi-lib.pl';# cgi-lib.plを呼び出す $test=1000; # 変数値渡し? form_input_post.cgi?name=$test; &ReadParse(*in); として、$testの値をform_input_post.cgiに渡そうとしたのですが。 コンパイルエラーが出てしまいました。 Can't modify constant item in scalar assignment at form_input_post.cgi line 49, near "$test;" syntax error at form_input_post.cgi line 49, near "$test;" form_input_post.cgi had compilation errors. というエラーです。 初歩的なミスな気がしますが原因がわからないので教えて頂きたいです。 よろしくお願いします。

    • 締切済み
    • CGI
  • apacheのCGI設定について教えてください。

    CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。 /var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。 ***** 以下 httpd.confの抜粋です。***** #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride All Options Includes ExecCGI FollowSymLinks SetHandler cgi-script </Directory> AddHandler cgi-script .cgi .pl ************************************** サーバーのエラーログを見ると Premature end of script headers: test.cgi となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • CGIでショッピングカートの設置方法

    こんにちは 今CGIを使ってショッピングカートの 設置をしているのですが なぜか表示されないのです。 最初このやりかたで表示されたので 間違っているのかわからなくなってしまって・・ ディレクトリの入れ方合ってると思うのですが・・ public_html (ホームディレクトリ) # | # +-- cart / cart.cgi # | cartini.cgi   # | admin.cgi   # | data1.cgi # | data2.cgi   # | raw.txt   # | jcode.pl   # | # +-- lock   / こう書いてありました。 パールの指定も合っていると思います。 (一度表示されたので) 最初はモードチェックも出来たのに できません。 どうなっているのか困っています。 どうぞよろしくお願いします。

  • CGIに関して

    CGIに関してなのですが、CGI実行ディレクトリ名binーcgiにすると言う点で困っています。今、掲示板をHPにアップしようとしているのですが、掲示板設置のマニュアルでは以下の通りとなっています。とりあえず、以下の作成が全然全く分からなくって困っています。分かる方がおられましたら是非ご回答下さいますようお願いいたします。 ホームディレクトリ(ここではpublic_htmlディレクトリとします) の下に、cgi-binディレクトリ(フォルダ)を作成し、必要なファイルををFTP 転送します。全体のディレクトリ構成とファイル位置は以下のとおりです。 public_html / index.html (トップページ) | +-- cgi-bin / ????.cgi ????.log jcode.pl 背景画像など ※ちなみに、ディレクトリ実行はbin-cgiとあります。