Perl/ActivePerl For UNIX/Linux/Windows
 
TryThe Homepage
初めてのCGI
CGI 研究室
ダイナミックCGI
ダウンロード
サービス
サーバ構築(Windows)
データベースアクセス
有料サービス
FAQ
お問い合わせ
このページを印刷
ホームサーバ用CGI
Webサーバもメールサーバもセットアップしましたが、1つだけUNIX、 Linux系サーバに可能でWindowsサーバで不可能なことがあります。 それは、ホームページから直接フォームを使ってメールを送信する事です。 UNIX系には標準で高機能なメールサーバ(sendmail)が装備されているからです。Windowsにもsendmailは移植されていますが、 非常に高価で一般的ではありません。そこで、フリーで公開されているユーティリティとCGIでこれを可能にします。
  FormMailの使用
Sendmailが使用できないWindowsサーバでもWEBページから直接メールを送信する事ができます。
ここでは、Sendmailに代わってこの機能を実現するBlatjのインストール、 CGIの設置と設定、フォームの作成方法を紹介します。
※Blatjを使用してWebページからメールを送信する場合は、「POP ビフォア SMTP」が使用できなくなりますので、

の「Enable SMTP Authentication」のチェックを外す必要があります。
当然「POP ビフォア SMTP」が使用できなくなるのですから、SPAMメールの標的になることになります。
SPAM対策には、[DNSサーバ]のコーナーでも解説しています。合わせてご一読ください。
  • Blatjのダウンロード
    Blatjは、USA MarkNeal氏とPedroMendes氏が開発したWindowsのコマンドラインからメールを送信するソフトBlatを 株式会社ピーデー・川俣 晶氏が日本語化した物です。
    Blatjのダウンロード ページから最新版BlatjとBlatjの動作に必要なライブラリ tconv "CUI Text Encoding Converter and DLL" の最新版をダウンロードします。
  • 解凍とセットアップ
    ダウンロードしたファイルは圧縮されていますので解凍する必要があります。 解凍先はどこでもかまいませんが、どちらも複数のファイルで構成されていますのでBlatj専用のフォルダーを作成し、 すべてのファイルを解凍してください。
    フォルダーC:\usrに新しくライブラリ用のフォルダーlibを作成し、Blatj.exeとtconvlib.dllをコピーします。
  • Blatjのセットアップ
    Blatjは、使用する前にあなたのSMTPサーバを設定する必要がありますので、 スタートメニューからMS-DOSプロンプトを開き設定します。

    MS-DOSプロンプトが開くと、Blatjをインストールしたフォルダーに移動します。
    C:\WINDOWS>cd c:\usr\lib
    SMTPサーバは、今回設置したメールサーバを使用しますので、このサーバのローカルなIPアドレスになります。
    C:\usr\lib>blatj -install 192.168.1.10
    これでArGoSoft MailServerのSMTPを使用してメールが送信できます。
    【重要】
    後述「DNSサーバ」のコーナーでも解説しますが、 ArGoSoft MailServerのフリーソフト版ではセキュリティ上問題が有ります。 中途半端なメールサーバを立ち上げる事はスパムメールの格好の標的です。 一部のプロバイダではスパムの踏み台になっただけでも 管理上の責任で強制脱会させられる事もあります。 それほど現在ではスパムは大きな問題です。 それだけのリスクを負ってまで メールサーバを立ち上げる必要があるかという事になります。 メールサーバを断念するとWEBからのメール送信も諦めなければ ならないことになります。 ところが、Blatjは自社サーバでなくても問題なくメールを送信できます。
    現在加入しているプロバイダのメールサーバを使用すればそのサーバから送信できるのです。
    ただ、この場合も結局プロバイダにとってはあなたがスパムの送信者になるわけですから、 良心をもって使用する必要があります。
    c:\usr\lib>blatj -install mail.xxxxxx.ne.jp
    全く費用をかけずにとお考えの場合はメールサーバはあきらめ、プロバイダを使用するようにしましょう。
  • Perlのライブラリの設置
    Blatjは、基本的にDOSコマンドライン用ソフトウェアですからCGIで使用する場合はPerlを使用します。
    日本語変換用ライブラリjcode.lzh、 Perlスクリプト多機能ライブラリperl-lib.lzh をダウンロードして、 それぞれ解凍してください。 ダウンロードするフォルダーはBlatjと同じC:\USR\LIBです。
  • Blatjの動作をテスト
    DOSのコマンドラインでのセットアップは終了しましたのでBlatjをテストしてみましょう。
    もう一度MS-DOSプロンプトから

    C:\usr\lib>blatj jcode.pl -f info@xxxxxx.net -t yyyy@yyyyyy.con
    オプション「-f」で送信者メールアドレス、 「-t」で送信先アドレスを指定して同じフォルダー内のjcode.plファイルを送信してみます。 このとき、メールサーバArGoSoft MailServerを表示していれば送信される手順がご覧いただけます。
    MS-DOSプロンプトにもメールサーバにもエラーが出力されていなければ「-t」に指定したメールアドレスをメーラーでご覧ください。 jcode.plが正常に届いていれば成功です。
    メールが届かない場合は、「メールサーバが正常に動作していない」、「-fで送信者メールアドレスが指定されていない」、 「-tで送信先メールアドレスが誤っている」、「オプション-fや-tの後ろにスペースが無い」等が考えられます。 コマンドラインでの送信が正常に動作しなければ、 当然CGIから使用する事はできませんので友人にも協力してもらって何度かテストしてください。
  • CGIの設置
    このサーバ内であれば、とこにどのようなアンケートフォームが有ってもメールを送信できるPerlスクリプト BlatMail.txtをC:\usr内にcgi-binフォルダーを作成し、 ダウンロードしてファイル名をblatmail.cgiに変更します。 このフォルダー「C:\usr\cgi-bin」はCGIが実行できるようApacheを設定する必要があります。
    Apacheの設定ファイルhttpd.confを開き、
    ScriptAlias /cgi-bin/ C:/Apache/cgi-bin/

    <Directory C:/Apache/cgi-bin>
       AllowOverride None
       Options None
    </Directory>
    このような記述を検索して次のように変更してください。
    ScriptAlias /cgi-bin/ "C:/lib/cgi-bin/"

    <Directory "C:/usr/cgi-bin">
        AllowOverride All
        Options All
    </Directory>
    これでこのフォルダー内の拡張子「.cgi」のファイルは実行されます。
    ※httpd.confファイルの場所はWEBサーバの章を参照してください。
    実行されずにスクリプトが表示されてしまう場合は、.htaccessをコピーしてください。 一般的な.htaccessはここに有ります。.htaccessは、 ファイル名がドット「.」から始まる特殊なファイルです。
  • blatmail.cgiの設定
    blatmail.cgiは環境にあわせて設定する必要がありますのでメモ帳などのテキストエディターで開きます。
    #!/usr/local/bin/perl
    #↑ここにあなたのperl言語のパスを指定します
    require '/usr/lib/jcode.pl';
    require '/usr/lib/perl-lib.pl';
    #===========================================
    # BladMail Ver2001.10
    #===========================================
    #メールを格納しているサーバーのsendmailパス
    #Windowsの場合はBlatjのパス
    $sendmail = 'c:\usr\lib\blatj.exe';
    #------------------------------------------------------------
    #世界標準時との時差 日本の場合は9時間
    $timelag = 9;
    #------------------------------------------------------------
    ・perlのパス
     perlは、セットアップ時にC:\usr\local\binにインストールされていますのでそのままで大丈夫です。
    ・ライブラリのパス
     jcode.plとperl-lib.plもC:\usr\libにセットアップされていますので変更する必要はありません。
    ・sendmailのパス
     今回はsendmailに代わってblatjを使用しますのでblatjをインストールしたパスを指定します。
    ・時差
     世界標準時との時差です。日本の場合は9時間です。
    管理者が設定するのはこれだけです。もちろん、インストール、セットアップしたフォルダーが異なる場合は、 それぞれパスを変更する必要があります。
  • フォームの作成
    blatmail.cgiでメールを送信するフォームの作成には、必ず設定、作成していただかなくてはならない規則が有ります。
    ・フォームの宣言
     フォームを宣言時はblatmail.cgiを設置したアドレスを設定します。
    <form method=POST action=/cgi-bin/blatmail.cgi>
    ・送信先メールアドレス
     送信先のメールアドレスをフィールドで設定しなければなりません。
    <input type=hidden name=cmd_to value=xxxx@xxxxxx.com>
     送信先メールアドレスのフィールドは「cmd_to」でなければなりません。
     フォーム上で送信先を入力させる場合は、「to」に設定します。
    <input type=text name=to size=40>
     1つのフォームで「cmd_to」と「to」両方を設定する事はできません。
     「to」が存在する場合は、「cmd_to」は無視されます。
    ・件名の設定
     受信したメールがホームページからだと分かるよう件名を設定する必要があります。
    <input type=hidden name=subject value=ご意見ご希望>
     もちろんテキストボックスや、ラジオボタンで設定することもできます。
    <input type=text name=subject size=20>
     ラジオボタンで選択する場合は
    <input type=radio name=subject checked value=ご意見>
    <input type=radio name=subject value=ご希望>
    <input type=radio name=subject value=苦情>
     どのような場合でもフィールドのnameは「subject」です。
    ・送信者のメールアドレス
     送信者のメールアドレスを設定する場合は、フィールドのnameは「email」です。
    <input type=text name=email size=10>
     emailのフィールドが存在しない場合や、未記入の場合は「nobody@xxxxxx.com」になります。
    ・送信後に戻るページ
     正常送信後に戻るページのアドレスを指定できます。
    <input type=hidden name=cmd_return value=http://www.xxxxxx.com/>
    ・確認ページ
     送信前に確認ページを表示する場合は、「cmd_checked」ボタンを追加します。
    <input type=submit name=cmd_checked value="送信前に確認">
    ・CC、BCCの設定
     CC(カーボンコピー)、BCC(ブラインドカーボンコピー)を指定して同時に複数のメールアドレスに送信できます
    <input type=text name=cc size=40>
    <input type=text name=bcc size=40>
     訪問者にコピーが見えないよう設定する場合は「cmd_cc」、「cmd_bcc」とコマンド指定します。
    <input type=text name=cmd_cc size=40>
    <input type=text name=cmd_bcc size=40>
     当然「cc」と「cmd_cc」、「bcc」と「cmd_bcc」は混在できません。
     「cmd_cc」と「cc」が両方存在する場合はコマンドが優先です。
    [フィードバック]
    お名前
    住所
    年齢 20才未満 30才未満 40才未満 50才未満 50才以上
    E-Mail
    ご意見ご希望
    入力を確認後送信する
    <form method=POST action=/cgi-bin/blatmail.cgi>
    <input type=hidden name=cmd_to value=xxxx@xxxxxx.com>
    <input type=hidden name=subject value=ご意見ご希望>
    <table border=1 cellspacing=0 cellpadding=2>
    <tr><td align=center><font size=2>お名前</font></td>
    <td><font size=2><input type=text name=お名前 size=20></font></td></tr>
    <tr><td align=center><font size=2>住所</font></td>
    <td><font size=2><input type=text name=住所 size=65></font></td></tr>
    <tr><td align=center><font size=2>年齢</font></td>
    <td><font size=2><input type=radio value=20才未満 name=年齢 checked>20才未満
        <input type=radio value=30才未満 name=年齢>30才未満
        <input type=radio value=40才未満 name=年齢>40才未満
        <input type=radio value=50才未満 name=年齢>50才未満
        <input type=radio value=50才以上 name=年齢>50才以上</font></td></tr>
    <tr><td align=center><font size=2>E-Mail</font></td>
    <td><font size=2><input type=text name=email size=65> </font></td></tr>
    <tr><td align=center><font size=2>ご意見ご希望</font></td>
    <td><font size=2><textarea rows=4 name=ご意見 cols=56></textarea></font></td></tr>
    </table>
    <input type=submit value=送信><input type=reset value=リセット>
    </form> 
    送信(submit)、リセット(reset)ボタンにnameを設定しないでください。
    • 本コーナーで紹介した多機能ライブラリperl-lib.pl及び、blatj用メール送信スクリプトblatmail.cgiは、フリーソフトです。
      自由にご利用、再配布していただいて結構ですが、改変して再配布する場合や、書籍へ添付する場合などはご一報ください。
Copyright 2004 Terra. All rights reserved. No reproduction or republication without written