メールフォームCGI MailDwarf ver3.12

【概要】

商用利用はシェアウェア版(\3,150)をどうぞ。
※ネットショップでの利用、法人サイトでの利用、有償での代行設置、著作権表示削除などはすべて商用利用となります。商用利用の範囲の詳細は利用ガイドにてご確認ください。

【動作サンプル】

メールフォームサンプル1 / メールフォームサンプル2
管理画面サンプル  ※パスワード:7777 削除・編集はできません
診断モードサンプル(ライブラリ) / 診断モードサンプル(ファイル構成)
利用者アンケート アンケート返信(レスBBSサンプル)

【主な特長】

※太字はver.3から追加された機能です。

【動作条件】

【PR】

【ダウンロード】

maildwarf ver3.12 (lzh圧縮)

3.10→3.12 バージョンアップ版 maildwarf ver3.12 バージョンアップ版(lzh圧縮)(同梱ファイルを上書きアップロード)

※当サイトのスクリプトの利用規約は利用ガイド&よくある質問に詳細がありますので必ずお読みください。スクリプトをダウンロードした時点でこの規約に同意したものと見なします。

【ファイル構成】

maildwarf312.lzhを解凍すると以下のファイル・フォルダが展開されます。

※「ダミーファイル」は、ブラウザからそのフォルダの中身を表示させないための空のファイルです。indexファイルがなくてもファイルの一覧を表示させないサーバーの場合、アップロードは不要です。

【設置】

  1. perlのパスを設定
    maildwarf.cgimanage.cgiresBBS.cgiをテキストエディタで開き、の1行目のperlのパス

     #!/usr/local/bin/perl

    をサーバーの設定に合わせて変更してください。
  2. ファイルのアップロード
    以下の設置例を参考に、ファイルとフォルダをサーバーにアップロードしてください。(※graf.gif以外のファイルはアスキーモード(テキストモード)で転送しください。)
    ※薄いグレイで表示しているファイル・フォルダはシステムによって自動的に作成されます。
    [ dmail ] / index.html
        |       maildwarf.cgi
        |       manage.cgi
        |       set.cgi
        |       dwarflib.pl
        |       jcode.pl
        |       fold.pl
        |       dwarf.css
        |       graph.gif
        |       sample.html
        |       count.dat
        |
        + ----- [ resBBS ] / index.html
        |                    resBBS.cgi
        |                    resBBSset.cgi
        |
        + ----- [ config ] / index.html
        |          |         configs.cgi
        |          |         default.cgi
        |          |         default.txt
        |          |
        |          + ----- [ skin ] 
        |
        + ----- [ logs ]
        |          |
        |          + ----- [ return ] 
        |          
        + ----- [ lock ] / index.html
                           subject
                           logs
                           count
    
  3. パーミッションを設定
    以下のファイル・フォルダのパーミッションを変更してください。[ ] 内は一般的なサーバーでのパーミッション値です。

※ブラウザからアクセスするCGIファイル=705、CGIによって読み書きされるファイル=606、CGIによって読み書きされるファイルの入ったフォルダ=707となります。
サーバーによっては705→700、606→600、707→701となる場合があります。

※CGIによって自動生成されたフォルダはパーミッションが301になることがあります。そのままでも動作に支障はありませんが、FTP操作はできません。FTPで操作したい場合にはパーミッションを変更してください。

【初期設定】

  1. ブラウザからmanage.cgiにアクセスし、初期パスワード7777を入れてログインしてください。
  2. 「共通設定」メニューを開き、sendmailのパス

    /usr/sbin/sendmail

    をサーバーの設定にあわせて変更してください。
  3. ログインパスワードを変更してください。
  4. 「更新」ボタンを押して設定を反映させてください。
  5. 新しいパスワードでログインしなおしてください。
  6. 「各フォームの設定」メニューを開き、default.cgiの編集を選んでください。
  7. 「メール送信先」にあなたのメールアドレスを入れて、「更新」を押してください。
  8. sample.htmlにアクセスしてメールを送ってみてください。
  9. メールが届き、ログが保存されていることを確認してください。
  10. 設定ファイルやメールフォームを好きなように編集・追加してください。(フォームはどこにでも置くことができます)

【管理メニュー】

管理メニュー(manage.cgi)の機能の一覧です。

[メール受信ログ]

[共通設定]

[各フォームの設定]

[デザインスキンの設定]

[簡易フォーム作成]

【フォームの作成・設置】

フォームはいくつでも、またどこにでも設置できます。項目数などに特に制限はないので、自由にフォームをデザインしてください。
<form>タグによる送信と、リンクによる送信の両方が使えます。

[簡単な記述例]

1) <form>タグによる送信例

<form method="post" action="maildwarf.cgi">
 <input type="text" name="メッセージ">
 <input type="submit" value="送信">
</form>

2) リンクによる送信例

<a href="maildwarf.cgi?拍手>拍手</a>

※日本語を含めると、ブラウザによっては文字化けをする場合があります。文字化けを防ぐためには、下記のようにURLエンコードをしておきます。

<a href="maildwarf.cgi?%94%8f%8e%e8>拍手</a>

[記述ルール]

<form>タグのaction属性はフォームを置いたページからmaildwarf.cgiへのパスにしてください。(リンクの場合は、リンク先アドレス)
パスがよくわからない場合は、 http://〜/maildwarf.cgi のようにURLを書けば間違いありません。
name属性値(name=""の""内)には日本語が使えます。 (例 <input name="お名前">
name属性値を半角の_(アンダーバー)で始めると、下記のシステムコマンドとして認識されます。

[システムコマンド]

システムコマンドとは、フォームのタグ内に書いてフォームの動作を指定するためのキーワードです。
通常、 <input type="hidden" name="_subject" value="感想"> のように隠しフィールドに入れて使います。 <input type="text" name="_mail">のように、送信者の入力した内容をシステムコマンドの値として使うこともできます。
フォームに書かれたシステムコマンドは、設定ファイルの設定より優先して処理されます。たとえば、全体的には確認画面を出す設定にして、特定のフォームでは確認画面を出さずに送信、といった使い方ができます。

[HTML例]

<form method="post" action="maildwarf.cgi">
<input type="hidden" name="_subject" value="連載小説の感想">
<input type="hidden" name="_check" value="1">
<input type="hidden" name="_checkitem" value="お名前">
<input type="hidden" name="_confirm" value="1">
<input type="hidden" name="_longlineitem" value="メッセージ">
お名前:<input type="text" name="お名前"><br>
メール:<input type="text" name="_mail"><br>
ご感想:<select name="ご感想">
<option value="おもしろい">おもしろい
<option value="つまらない">つまらない
</select><br>
メッセージ:<input type="text" name="メッセージ"><br>
<input type="submit" value="送信">
</form>

[受信メール例]

お名前 =
文月夕

mail =
nomail@xxx.xxx

ご感想 =
おもしろい

メッセージ =
続きが楽しみです!

------------------------------
Date: 2004/11/18 (Thu) 19:03:27
Referer: http://hogehoge.com/mailform.html
IP Address: xxx.xxx.xxx.xxx
UserAgent: xxxxxxxxxxxxxxxxxxxx

MailDwarf ver2.03

[フォーム作成ヒント]

  1. ラジオボタン・チェックボックス
    ラジオボタンやチェックボックスを使う場合、ひとつもチェックがついていないとその項目が存在することをCGIが認識できません。
    下記のように、ラジオボタンやチェックボックスの前に隠しフィールドを置くと、ひとつもチェックがついていない場合も「未記入」で処理することができます。
<input type="hidden" name="使用OS">
<input type="radio" name="使用OS" value="Windows">Windows
<input type="radio" name="使用OS" value="Mac">Mac
<input type="radio" name="使用OS" value="その他">その他
  1. 件名を送信者が選択
    件名の指定をドロップダウンリストなどの選択肢式にすると、ひとつのフォームから送られたログを件名ごとに分けて保存することができます。
用件:
<select name="_select">
	<option value="サイトのご感想">サイトのご感想</option>
	<option value="リンクのご報告">リンクのご報告</option>
	<option value="誤字脱字・エラー報告">誤字脱字・エラー報告</option>
	<option value="事務連絡">事務連絡</option>
	<option value="私信">私信</option>
	<option value="その他">その他</option>
</select>
  1. メールのコピーを受け取る
    メールのコピーを受け取るかどうかを送信者に選択してもらうこともできます。
<input type="checkbox" name="_autoreturn" value="2">メールのコピーを受け取る
  1. Web拍手ふう
    Web拍手のような使い方もできます。
    例:拍手(拍手アイコンはweb*citronさまより)
    ※空メール送信防止のため、maildwarf.cgiにリンクをするだけではメールは送信できません。かならず、「maildwarf.cgi?_subject=拍手」のように、?以降を指定してください。
<a href="maildwarf.cgi?_subject=拍手">
<img src="04b.gif" width="17" height="17" alt="拍手" border="0"></a>

【自動返信の文面指定】

自動返信メールの文面に、フォームから送られたデータを差し込むことができます。
フォームの各項目名を##で挟んだ文字列が、入力内容に置換えられます。
また、フォーム送信の西暦年、月、日、時間、分、秒をそれぞれ%year%、%month%、%day%、%hour%、%min%、%sec%で置き換えられます。

[文面指定]

##お名前## 様

##subject##のメールをありがとうございました!
ご感想をくださったかたにだけお教えする裏ページのアドレスは http://〜です。
お楽しみくださいませ!

※このメールは、CGIで自動返信しています。

****************************************
%year%/%month%/%day% %hour%:%min%:%sec%
○○管理人 ほげほげ
****************************************

[自動返信メール例]

文月夕 様

連載小説の感想のメールをありがとうございました!
ご感想をくださったかたにだけお教えする裏ページのアドレスは http://〜です。
お楽しみくださいませ!

※このメールは、CGIで自動返信しています。

****************************************
2004/11/18 20:13:44
○○管理人 ほげほげ
****************************************

【デザインスキンの設定】

エラー画面、入力内容確認画面、送信完了画面にデザインスキンを利用することができます。
デザインスキンは設定ファイルと自由に組み合わせることができ、システムコマンドからも指定できます。
ヘッダ、フッタは共通のソースを利用し、フォーム送信用のタグは自動で追加されます。 フォームの各項目名を##で挟んだ文字列が、入力内容に置き換えられます。
##_subject##とすると件名、##SUBMIT##とすると送信ボタン、##BACK##とすると前に戻るボタン(Javascript使用)、##HOME##とするとホームに戻るボタン(Javascript使用)に置き換えられます。
エラー画面では、各項目名を%%で挟んだ文字列が、エラーメッセージに置き換えられます。

[共通ヘッダ例]

<html lang="ja">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
 <link rel="stylesheet" href="dwarf.css">
 <style type="text/css">
  table {
    border: solid 1px #333333;
    border-collapse: collapse;
  }
  th {
    text-align: lert;
    border: solid 1px #333333;
    padding: 3px;
  }
  td {
    border: solid 1px #333333;
    padding: 3px;
  }
 </style>
 <title>MailDwarf</title>
</head>
<body>
<h1>MailDwarf</h1>
<h2>サンプルフォーム</h2>
<div class="main">

[エラー画面例]

<p>必須項目にご入力ください。</p>
<table border="0">
  <tr>
    <th>ご用件</th>
    <td colspan="2">##_subject##</td>
  </tr>
  <tr>
    <th>お名前(必須)</th>
    <td>##お名前##<br></td>
    <td>%%お名前%%<br></td>
  </tr>
  <tr>
    <th>メールアドレス</th>
    <td colspan="2">##_mail##<br></td>
  </tr>
  <tr>
    <th>サイトURL</th>
    <td colspan="2">##サイトURL##<br></td>
  </tr>
  <tr>
    <th>メッセージ</th>
    <td colspan="2">##メッセージ##<br></td>
  </tr>
  <tr>
    <th>返信の希望</th>
    <td colspan="2">##返信の希望##<br></td>
  </tr>
  <tr>
    <td colspan="3" align="center">##BACK##</td>
  </tr>
</table>

[確認画面例]

<p>下記の内容でよろしければ送信してください。</p>
<table border="0">
  <tr>
    <th>ご用件</th>
    <td>##_subject##</td>
  </tr>
  <tr>
    <th>お名前(必須)</th>
    <td>##お名前##<br></td>
  </tr>
  <tr>
    <th>メールアドレス</th>
    <td>##_mail##<br></td>
  </tr>
  <tr>
    <th>サイトURL</th>
    <td>##サイトURL##<br></td>
  </tr>
  <tr>
    <th>メッセージ</th>
    <td>##メッセージ##<br></td>
  </tr>
  <tr>
    <th>返信の希望</th>
    <td>##返信の希望##<br></td>
  </tr>
  <tr>
    <td colspan="2" align="center">##BACK## ##SUBMIT##</td>
  </tr>
</table>

[送信完了画面例]

<p>メッセージありがとうございました。</p>
<table border="0">
  <tr>
    <th>ご用件</th>
    <td>##_subject##</td>
  </tr>
  <tr>
    <th>お名前(必須)</th>
    <td>##お名前##<br></td>
  </tr>
  <tr>
    <th>メールアドレス</th>
    <td>##_mail##<br></td>
  </tr>
  <tr>
    <th>サイトURL</th>
    <td>##サイトURL##<br></td>
  </tr>
  <tr>
    <th>メッセージ</th>
    <td>##メッセージ##<br></td>
  </tr>
  <tr>
    <th>返信の希望</th>
    <td>##返信の希望##<br></td>
  </tr>
</table>

[共通フッタ例]

</div>
 <div id="copyright"><a href="index.html" target="_blank">MailDwarf</a></div>
</body>
</html>

【履歴】

2004/11/18 ver0.10β公開。
2004/11/19 ver0.11β。ログ表示部分など改造。
2004/11/23 ver0.12β。ミス修正。
2004/11/26 ver0.20β。完了画面のランダム表示、順番表示機能。ログ表示方法に変更。ファイルロック機能。
2005/02/17 ver0.30β。必須チェック機能を搭載。フォーム記述方法を若干変更。
2005/02/18 ver0.40β。フォームごとの設定機能、メール送信オン・オフ機能搭載、確認画面表示機能搭載。ファイル構成とフォーム記述方法を若干変更。
2005/02/20 ver1.00正式公開。スクリプト名を MailDwarfに変更。
2005/02/21 ver1.01。スクリプトのバグを修正。(FireFoxで戻るボタンが使えないなど)
2005/02/23 ver1.02。readmeファイルを改訂。下記のバグなどを修正。
 ・チルダを含むアドレスの場合にSafariで戻れない
 ・maildwarf.cgiに直接アクセスがあった場合に空メールが送信される
 ・ログ閲覧で長文テキストの改行が反映されない
 ・ログ分析(項目別)で長文テキスト項目が表示されない
2005/02/28 ver1.03。フォームの設定を追加できないバグを修正。
2005/03/02 ver1.04。同一ディレクトリに2種類以上のクッキーが保存されている場合に正常に認証されないバグを修正。
2005/03/04 ver1.05。下記のバグを修正。
 ・自動返信利用時、特定の文字列をname属性に使うとエラーが発生する
 ・自動ログインが正常に機能しない
2005/04/02 ver2.00。以下の機能を追加。
  ・管理画面からの返信
  ・レスBBSの作成
  ・NGワード、着信拒否IPの指定
  ・メールのコピーを返信
  ・システムコマンドで送信完了画面・自動返信を指定
  ・30分以内の連続送信数をカウント
  また、以下のバグを修正しました。
  ・簡易フォーム作成でドロップダウンリスト選択時にname属性値が反映されない
2005/04/13 ver2.01。サイト移転に伴い、クレジット表示のリンクを変更。
2005/05/12 ver2.02。以下のバグを修正しました。
 ・最新以外のログを削除すると、その後送られたデータのID番号がおかしくなる。
 ・管理画面の返信で「BCCを自分に送信」が動作しない。
2005/05/20 ver2.03。自動返信メールに特定の文字列を入れると文字化けするバグを修正。診断モードを追加。
2006/02/17 ver3.00。以下の機能を追加しました。
 ・メール内の半角カナを全角カナに変換。
 ・指定した文字数でメールを自動折り返し。
 ・ログの自動削除機能、ログの保護設定。
 ・ログ一覧の並べ替え。
 ・ログのCSV形式ダウンロード。
 ・レス、返信処理の有無を記録。
 ・デザインスキンに対応。
 ・Yahoo、Google、MSNのロボットのアクセスによるメール誤送信防止。
2006/02/17 ver3.01。以下のバグを修正しました。
 ・スキンファイルを指定しない場合に送信時エラーが発生する。
 ・ログを削除した際にログの保護設定がリセットされる。
2007/03/30 ver3.10。以下の脆弱性に対応しました。
 ・スキン使用時のXSSに対する脆弱性。
 ・メールフォームを踏み台とした大量メール送信に対する脆弱性。
なお、上記の脆弱性情報は株式会社ビジネス・アーキテクツの太田良典氏よりIPAに報告され、当方へ通知されました。発見者ならびに関係者の皆様、ありがとうございました。
2008/04/12 ver3.11。スキンにテキストエリアを使用した際にスキン編集画面の表示が乱れるバグを修正しました。

【連絡先】

作者:文月夕(You Fuzuki)@小説HTMLの小人さん http://htmldwarf.hanameiro.net/

【注意事項など】

[著作権]

このスクリプトの著作権は文月夕に所属します。

[禁止事項]

[改造・再配布]

スクリプトの改造は自由ですが、クレジット表示の削除は原則として禁止します。(改造者のクレジット表示を書き足すことは自由です)
スクリプトの改造を行った場合、サポートの対象外となります。
改造の有無に関わらず、スクリプトの再配布を原則として禁止します。 何らかの理由により再配布を希望する方は作者までご連絡ください。

[免責]

作者は、このスクリプトを利用したことによって発生しうる損害に関して責任を負うものではありません。

【謝辞】

日本語変換ライブラリ、自動改行処理ライブラリは歌代 和正氏作成のjcode.pl,fold.plを利用・再配布させていただいております。
有用なライブラリを作成してくださった氏に感謝いたします。