CGI編集・加工について

[新着] Webテンプレートを仮オープンしました



0   名前: ユナ : 2007/04/17(火) 15:47  ID:RJvxr1gG sub-Cz
POSTMAILのCGIファイルを起動させようとしたところ、
ホストサーバでのジャンクメール対策のために以下のスクリプトを追加してくださいとのことですが、
CGIの予備知識も何もなくどのように追加すればよいのか困っています。
少しみたところ、このスクリプトをコピーペーストするだけで、うまく機能するのか不安です。
本体のプログラムとどこかカブらないかどうか。。

そこで、投稿して優秀な方に聞いてみようと思いました。
CGIの編集・加工を熟知の方、お願いします。

POSTMAILの本体プログラムの入手先は、http://www.kent-web.com/data/postmail.htmlです。

追加スクリプト---------------------------

#!/usr/bin/perl
print "Content-type: text/html\n\n";

$title='mail test';
$to='MAIL ADDRESS TO SEND TO';
$from= 'EMAIL@YOURDOMAIN.COM';
$subject='Using Sendmail';

open(MAIL, "|/usr/sbin/sendmail -t");

## Mail Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
## Mail Body
print MAIL "This is a test message from Yahoo! \n";

close(MAIL);

print "<html><head><title>$title<
/title></head>\n<body>\n\n";

## START HTML content
print "<h1>$title</h1>\n";
print "<p>A message has been sent from $from to $to";
## END HTML CONTENT
print "\n\n</body></html>";

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

1   名前: 元帥 : 2007/04/17(火) 15:47  [URL]  ID:KtsoYZJ8 sub-bK
ざっと見た所、postmail.cgiには>>0のようなメッセージを出す仕掛けは見当たらないのでサーバーの仕様かな、と思います。

Yahoo!でしょうか?
ヘルプ(英):http://help.yahoo.com/help/us/geo/perl/perl-05.html
過去ログ(英):http://www.sitepoint.com/forums/showthread.php?p=3311812
というか、GeoCities(日)ではsendmailを使用できないと思いましたけど。

以下のスクリプトを追加というメッセージはおかしい気がするのですが「そう読み取れた」のではなくズバリ「追加してくださいとのこと」だったのですか?
(理由はユナさんのご指摘通りです。)

取り敢えず、>>0のコードのみを実行すると正しく処理されますか?
(勿論、FromとToは適当な値にして下さい。)

2   名前: ユナ : 2007/04/17(火) 15:47  ID:RJvxr1gG sub-Cz
元帥さま>
お返事ありがとうございました。
はい、Yahoo GeoCitiesのUSAバージョンです。
日本のGeoでは、sendmail対応してないみたいですね。

ヘルプ(英)を読んで追加スクリプトだということがわかりました。
日本でも米国Geoのような条件を付け加えてる場所もあれば、
そこでのヘルプ等をみて、参考にできるんですが、
少し調べたところ、まだ発見できておりません。

過去ログ(英)は、まだ読んでませんでした!
一番最後の方が言われてるやり方だとsendmailが機能するかもしれませんので、
帰宅しましたら、一度試してみたいと思います。
またご報告いたします。とにかく、過去ログの件、ありがとうございました。

3   名前: aru : 2007/04/17(火) 15:47  ID:RJvxr1gG sub-Cz
「 $replyto = 'admin@munnaz.com'; 」と「 print MAIL "Reply-To: $replyto\n"; 」

というスクリプトは、本体プログラムのどの部分にコピペすればよいでしょうか?
本体スクリプトのソースも長いですが、載せさせてもらいます。
おわかりの方がいらっしゃいましたら、是非よろしくおねがいします。

sendmail送信の設定のソースまでコピペしておきました。足りるでしょうか。

postmail本体---------------------

#!/usr/local/bin/perl

#┌─────────────────────────────────
#│ POST-MAIL v4.11 (2006/10/01)
#│ copyright (c) KentWeb
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#└─────────────────────────────────
$ver = 'postmail v4.11';
#┌─────────────────────────────────
#│ [注意事項]
#│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した
#│ いかなる損害に対して作者は一切の責任を負いません。
#│ 2. 送信フォームのHTMLページの作成に関しては、HTML文法の範疇
#│ となるため、サポート対象外となります。
#│ 3. 設置に関する質問はサポート掲示板にお願いいたします。
#│ 直接メールによる質問はお受けいたしておりません。
#└─────────────────────────────────
#
# [ 送信フォーム (HTML) の記述例 ]
#
# ・タグの記述例 (1)
# おなまえ <input type=text name="name" size=25>
# → このフォームに「山田太郎」と入力して送信すると、
# 「name = 山田太郎」という形式で受信します
#
# ・タグの記述例 (2)
# お好きな色 <input type=radio name="color" value="青">
# → このラジオボックスにチェックして送信すると、
# 「color = 青」という形式で受信します
#
# ・タグの記述例 (3)
# E-mail <input type=text name="email" size=25>
# → name値に「email」という文字を使うとこれはメールアドレス
# と認識し、アドレスの書式を簡易チェックします
# → (○) abc@xxx.co.jp
# → (×) abc.xxx.co.jp → 入力エラーとなります
#
# ・タグの記述例 (4)
# E-mail <input type=text name="_email" size=25>
# → name値の先頭に「アンダーバー 」を付けると、その入力値は
# 「入力必須」となります。
# 上記の例では、「メールアドレスは入力必須」となります。
#
# ・name値への「全角文字」の使用は可能です
# (例) <input type=radio name="年齢" value="20歳代">
# → 上記のラジオボックスにチェックを入れて送信すると、
# 「年齢 = 20歳代」という書式で受け取ることができます。
#
# ・mimew.pl使用時、name値を「name」とするとこれを「送信者名」と認識
# して送信元のメールアドレスを「送信者 <メールアドレス>」という
# フォーマットに自動変換します。
# (フォーム記述例) <input type=text name="name">
# (送信元アドレス) 太郎 <taro@email.xx.jp>
#
# ・コマンドタグ (1)
# → 入力必須項目を強制指定する(半角スペースで複数指定可)
# → ラジオボタン、チェックボックス対策
# → name値を「need」、value値を「必須項目1 + 半角スペース +必須項目2 + 半角スペース ...」
# (例) <input type=hidden name="need" value="名前 メールアドレス 性別">
#
# ・コマンドタグ (2)
# → 2つの入力内容が同一かをチェックする
# → name値を「match」、value値を「項目1 + 半角スペース + 項目2」
# (例) <input type=hidden name="match" value="email email2">
#
# ・コマンドタグ (3)
# → メール件名を指定する
# → この場合、設定で指定する $subject より優先されます。
# (例) <input type=hidden name="subject" value="メールタイトル○○">
#
# [ 簡易チェック ]
# http://〜〜/postmail.cgi?mode=check
#
# [ 設置例 ]
#
# public_html / index.html (トップページ等)
# |
# +-- postmail / postmail.cgi [705]
# | postmail.html
# |
# +-- lib / jcode.pl [604]
# | mimew.pl [604] ... 任意
# | io-socket.pl [604]
# |
# +-- tmpl / body.txt
# conf.html
# err1.html
# err2.html
# thx.html

#-------------------------------------------------
# ▼基本設定
#-------------------------------------------------

# 文字コード変換ライブラリ
require './lib/jcode.pl';

# MIMEエンコードライブラリを使う場合(推奨)
# → メールヘッダの全角文字をBASE64変換する機能
# → mimew.plを指定
$mimew = './lib/mimew.pl';

# 送信先メールアドレス
$mailto = 'aruchi_@hotmail.com';

# 入力フィールドあたりの最大容量(バイト)
# *参考 : 全角1文字 = 2バイト
$max_field = 100;

# 送信前確認
# 0 : no
# 1 : yes
$preview = 1;

# メールタイトル
$subject = 'REQUESTS and COMMENTS';

# 本体プログラム【URLパス】
$script = './postmail.cgi';

# 確認画面テンプレート【サーバパス】
$tmp_conf = './tmpl/conf.html';

# 一般エラー画面テンプレート【サーバパス】
$tmp_err1 = './tmpl/err1.html';

# 入力エラー画面テンプレート【サーバパス】
$tmp_err2 = './tmpl/err2.html';

# 送信後画面テンプレート【サーバパス】
$tmp_thx = './tmpl/thx.html';

# 送信「本文」テンプレート【サーバパス】
$tmp_body = './tmpl/body.txt';

# 送信後の形態
# 0 : 完了メッセージを出す.
# 1 : 戻り先 ($back) へ自動ジャンプさせる.
$reload = 0;

# 送信後の戻り先【URLパス】
# → http://から記述する
$back = 'http://www.momijirestaurant.com/';

# 送信は method=POST 限定 (0=no 1=yes)
# → セキュリティ対策
$postonly = 1;

# アラーム色
$alm_col = "#dd0000";

# ホスト取得方法
# 0 : gethostbyaddr関数を使わない
# 1 : gethostbyaddr関数を使う
$gethostbyaddr = 0;

# アクセス制限(複数あれば半角スペースで区切る、アスタリスク可)
# → 拒否ホスト名又はIPアドレスの記述例
# (前方一致は先頭に ^ をつける)【例】^210.12.345.*
# (後方一致は末尾に $ をつける)【例】*.anonymizer.com$
$denyhost = '';

# 禁止ワード
# → 投稿時禁止するワードをコンマで区切る
$no_wd = '';

# 送信元へ控え (CC) を送る
# 0=no 1=yes
# *セキュリティ上この機能は推奨しません.
# *name="email" のフィールドへの入力が必須となります.
$cc_mail = 0;

# メール送信形式
# 1 : sendmail送信(sendmailが利用可能なサーバ)
# 2 : IO:Socketモジュール送信(ソケット関連のモジュールが利用可能なサーバ)
$send_type = 1;

## sendmail送信のとき ##
# sendmailのパス
$sendmail = '/usr/sbin/sendmail';

##【注】sendmail送信の方は設定はここまでで終了。これより下は設定不要です。

4   名前: 元帥 : 2007/04/17(火) 15:47  [URL]  ID:BHzc23bE sub-bK
今回はIDで同一人物であろうと思われるわけですが…。
途中で名前を変えてもいいですか?
「イメチェンのために変えたい」ということでしたら、変更していただいても結構です。但し、会話の途中(スレッド進行中)では出来るだけ変更しないようにしてください。
http://www.tagindex.com/bbs/qa03.html#a02

>>3
何か元の質問とズレているような…?
というか、Perl、sendmailのパスもそのままですし。

> 「 $replyto = 'admin@munnaz.com'; 」と「 print MAIL "Reply-To: $replyto\n"; 」
481行目と482行目の間に
$replyto = 'admin@munnaz.com';
$body .= "Reply-To: $replyto\n";
と入れて下さい。

一覧へ戻る