kbmailkit 概要

2001/7/16 ver.0.5r2

 きのぼずでは、配信リスト(kb.mail)にメールアドレスを載せると、記事を自動配信してくれます。このキットは、配信リストへの登録を掲示板参加者自身ができるようにするものです(よーするに自動化ですね)。

 記事配信を希望する人はいても、わざわざ管理者にメールして配信リストに載せてもらうとなると、気持ち的に煩わしいものです。もういらないからリストから外してくれというのも言いにくいですし。自分で登録・削除ができればこの機能の利用率も上がるでしょう。
 つまり、このキットの製作目的は、管理者ではなく参加者の利便性を高めるためです。

 なにしろこの機能を使うと簡単にいたずらメールを送ることができるので、まずは運用方法の話からします。必ずこのファイルを最後まで読んでから設置にかかってください。
 なお、すでにきのぼずを設置した経験者を対象にしているので、ここではあまりに基本的なことは省いてあります。


■目次
●運用方法について ●インストール1 ●インストール2 ●インストール3 ●インストール4 ●すでに登録している人のために ●トラブルシューティング ●変更履歴 ●著作権


●運用方法について

 いたずら防止のために、次のような流れで運用することをお勧めします。このキット(kbmailkit)の内容は大きく「案内フォルダ」と「開始・中止フォルダ」「認証フォルダ」に分かれます。

1.「ご案内フォルダ」(kbinfo)
 まず、参加者にご案内ページにいってもらいます。このページでメールアドレスとパスワードを入力してもらうと、自動的に入力されたアドレス宛に「メール配信開始・中止ページ」のURLと、入室のためのID・パスワードをメール送信します。同時に「認証フォルダ」にある認証ファイルにメールアドレスとデータが書き込まれます。
 実際には、このとき登録されるIDは入力されたメールアドレスです。
 メールを送るためにsendmail機能が使えないと動きません
 このページには誰でも自由にアクセスできます
 参加者が入力する項目:メールアドレス、パスワード(確認用と合わせて2回入力)、パスワードをメールするかどうか。
 ログ(オプション)の内容:いつ、誰宛に案内メールを発送したか、要求者のIPアドレスと共に記録。

2.「開始・中止フォルダ」(kbentry・このディレクトリに入るには認証が必要)
 ユーザーは受け取ったメールを見て「登録・削除ページ」に来ます。このページを表示するときにサーバーの認証機能を使います(認証機能の設置方法は後述)。1.でメールで知らせたID・パスワードがないとこのページには入れません
 1度登録ページに入ると、参加者は自分でメール配信の開始・中止ができます。
 このページでは、すでにkb.mailに登録されていれば削除ボタンが、登録されていなければ登録ボタンが表示されるので、それを押すだけです。入室者のメールアドレスは、認証時にサーバが認証したID(つまりメールアドレス)を自動的に引っ張ってきますので、参加者は自分以外のアドレスをいじることはできません。
 参加者が入力する項目:ボタンを押すだけ。
 ログ(オプション)の内容:いつ、誰が登録・削除したか、要求者のIPアドレスと共に記録。

3.「認証フォルダ」(kbmailkit)
 認証用ファイルが入っています(最初は中味は空っぽです)。人に見られないディレクトリ(後述)に置きます。この認証機能はサーバが用意しているもので、本キットはサーバの認証機能を利用しているだけです。

 以上が大きな流れです。完全ではありませんが、サーバの認証機能を利用しているあたり、セキュリティ的にはかなり洗練されていると思います。
 言葉で説明すると面倒そうですが、実際には非常にシンプルです。こちらに動きを見てもらうためのテスト版を用意しました。このテスト版ではダミーのkb.mailに登録されるだけなので、メールは配信されません。安心して(?)テストしてください。

   ●テスト用案内ページ http://www.amays.com/~mizusawa/cgitest/kbinfo/


●インストール1・キットの中味とパーミッション

1.キットの中味を確認する。

 解凍するとkbmailkitの中に次のファイル(1つ)とフォルダ(3つ)があるはずです。

 readme.html このファイルです。


 ここまでは説明用のファイル。この下のファイルがアップロードするファイル。赤字はディレクトリ(フォルダ)で、()内はパーミッション。


 kbinfo(777)置く場所はどこでもO.K.
   index.html(644) 案内用のページです。適当に改造して使います。
   kbinfo.cgi(755) 案内ページの入力を捕まえて自動的にメールを送ります。設定が必要です。
   infolog(777) ログ用ファイルです。ログを取らなければ必要ありません。いつ、誰に案内メールが発送されたか記録します。最初は空です。どんどん追加されていきますから、折を見て空っぽにしてください。
   jcode.pl(644) .cgiに必要なファイルです。

 kbentry(777)置く場所はどこでもO.K.
   .htaccess(644) 認証設定用ファイルです。書き変えて使います。
   index.html(644) メール配信開始・中止ページの雛形です。
   regist.cgi(755) メール配信開始・中止用.cgiです。設定が必要です。
   jcode.pl(644) .cgiに必要なファイルです。
   kbentrylog(777) ログ用ファイルです。ログを取らない場合は必要ありません。登録・削除の履歴を記録します。最初は空です。どんどん追加されていきますから、折を見て空っぽにしてください。

 conf(777)人に見られないディレクトリにおく
   access.conf(666) 認証ファイルです。複数のディレクトリに認証をかけるにはこのファイルも複数必要になります。


 きのぼずのメール配信リスト、kb.mailのパーミッションは666に設定します。


●インストール2・設置場所を考える

1.実際の設置にかかる前に、各フォルダの設置場所を考える。

●ファイルの置き場所について
 設置にかかる前に、全体の構成を理解してもらいたいので、まずは置き場所を考えます。

 サーバのディレクトリ構成は大きく次のようになっているはずです(サーバによっては名称が異なる)。「html」以下のディレクトリがWWWとして公開されています。つまり誰でも見られます。
 .confファイル(認証用ファイルで.htaccessの中で位置とファイル名を指定する)の入ったconfディレクトリ(フォルダ)は、人に見られると困るので、必ずhtmlより上のディレクトリにおくことを推奨します。

 confディレクトリは複数の掲示板をおくことを前提に、.confファイルをまとめて管理できるように設けてあるだけです。下図ではaccess.confとtest.confがconfフォルダの中に入っていますが、直接nameの下に置いても問題はありません。ただ、こうすると管理が楽です。

 また、下図ではkbmailkitディレクトリにkbinfoディレクトリとkbentryディレクトリを入れていますが、これらはバラバラに置いても構いませんし、kbディレクトリの下においても構いません。よーするにhtml以下であればどこにあってもいいのです。

●キットの設置例
 ××掲示板とテスト掲示板の二つにメール開始・中止機能をつけた例を示します。わかりやすいようにデフォルトの名前(××掲示板用)は太字で示します。数字はパーミッションです。

 home
  +---name(僕の場合なら「mizusawa」ディレクトリ)
     +---conf(confディレクトリ:777
     +   +---access.conf(××掲示板用 認証ファイル:666)
     +   +---test.conf(テスト掲示板用 認証ファイル:666
     +
     +---html(このディレクトリ以下が公開されている
        +---kb(きのぼずディレクトリ)
        +---kbmailkit(キットディレクトリ:777
           +---kbentry(個別・××掲示板用 メール開始・中止ディレクトリ:777)
           +  +---index.html(htmlファイル:644)
           +  +---regist.cgi(開始・中止.cgi:755)
           +  +---kbentrylog(ログファイル・ログをとらない場合は必要なし:777)
           +  +---jcode.pl(.cgiに必要なファイル:644)
           +  +---.htaccess(認証設定ファイル:設定する必要なし)
           + 
           +---TESTkbentry(個別・テスト掲示板用 メール開始・中止ディレクトリ)
           +  +---index.html
           +  +---regist.cgi
           +  +---jcode.pl
           +  +---.htaccess
           + 
           +---kbinfo(共通・案内ディレクトリ:777)
             +---index.html(××掲示板用html:644)
             +---kbinfo.cgi(××掲示板用.cgi:755)
             +---TEST.html(テスト掲示板用html:644
             +---TESTkbinfo.cgi(テスト掲示板用.cgi:755
             +---infolog(共通ログファイル・ログをとらなければ必要なし:777)
             +---jcode.pl(.cgiに必要なファイル:644)

 このように、案内用ディレクトリは共通で使えますが、メール開始・中止用ディレクトリは個別に用意する必要があります。これはサーバの認証機能を使っているためで、サーバの認証機能は「ディレクトリごとに」入室許可・不許可をコントロールしているからです。つまり、同じディレクトリにあるAファイルにはアクセスできるけど、Bファイルにはアクセスさせない、ということはできないのです。

 おおざっぱですが、サーバの認証の仕組みは次のように理解してください(.htaccessファイルの使い道は他にもたくさんありますが、ここではこのキットに関したことだけ説明しています)

1. 「.htaccess」というファイルのあるディレクトリには認証がかかり、ID・パスワードを入力しないと入れない。
2. 誰を入室許可するか指定する認証用ファイル(.conf)は「.htaccess」の中でファイル名と置き場所を指定する。

 ここまでくるとわかると思いますが、.confファイルの名前は自由に設定できますし、置き場所も自由です。ただ、人に覗かれないためには、htmlディレクトリ以上を推奨します。

 いくつの掲示板にこの機能をつけて、どこにファイルを置くか決まりましたか? では次に進んでください。


●インストール3・ファイルをアップロードする

1.設定する。

 各cgiファイルには設定する部分がありますので、開いて設定部分を書き換えます。kb.mailの位置や、メール開始・中止ページの位置を書き込む必要がありますので、必ずインストール2のファイル構成を考えてからにしましょう。
 各.htmlファイルは説明ファイルとしてこのまま使ってもらっても支障はないと思いますが、掲示板名など、必要に応じて書き換えてください。
 また、この後の「インストール4-2.オプションを設定する」も参考にしてください。
 「.htaccess」の最初の行はよく考えて書き換えてください。これは認証用フィルの名前と位置を指定しています。くどいようですが、このファイルを例えば「/home/name/html/」以下におくと他人に覗かれる危険があります。「/home/name/」であれば通常は公開されていないはずなので、これ以上のディレクトリにおいてください。

書き換え前:AuthUserFile /home/name/conf/access.conf

2.アップロードする。

 設定が終わったら、各ファイルを自分で決めた場所にFTPでアップロードしてください。
 また、漢字コード(EUC)、改行コード(LF)にも注意してください。

3.パーミッションを設定する。

 各ディレクトリとファイルのパーミッションを設定してください。パーミッションは「インストール1、2」を参照してください。


●インストール4・テストする

1.テストする。

 以上でシステムはもう動いています。ブラウザで案内ページにアクセスし、メール開始・中止までの流れを一通りテストしてみてください。

2.オプションを設定する。

 現在、このキットにはいくつかのオプションがあります。案内ページ、メール開始・中止ページで、それぞれログを取るかどうか設定します。

 もう一つ大事なのが、案内ページです。案内ページはhtmlとcgiでできています。ここではメールアドレスとパスワードを入力しますが、html側の設定で入力中にパスワードが見えるようにも、隠す(入力中は「●●●●●●」のように表示される)こともできます。付属のkbinfoフォルダのindex.htmlを表示させると、この状態になっています。
 このように、入力中に見えないようにした場合は、確認のためにパスワード欄は2つあった方がいいでしょう。
 入力中にパスワードがが表示されるならパスワード欄は1つでいいでしょう。
 また、kbinfo.cgiではhtmlに合わせて受け取るパスワードの数を設定する必要があります。同時に、確認時にパスワードを表示するかどうかもオプションになっています。

htmlの設定

パスワード欄の個数
kbinfo.cgiで指定

入力確認時のパスワード表示
kbinfo.cgiで指定

パワードを隠す

2

非表示

パスワードを見せる

1

非表示

表示

 組み合わせは上記以外にもありますが、運用の整合性を考えると上記の3通りで運用するのがよいでしょう。セキュリティ的には上が厳しく、下が緩くなります。逆に利用者には下の方が安心できるでしょう。どのように運用するかは管理者であるあなた次第です。デフォルトは一番上になっています。

メモ:
 htmlのパスワードを隠す  <INPUT type="password" name="pass1" size="30">
               <INPUT type="password" name="pass2" size="30"> の2行が必要。

 htmlのパスワードを見せる <INPUT type="text" name="pass1" size="30"> の1行でよい

3.掲示板からリンクする。

 オブションも含め、十分にテストが終わって、運用に自信がもてたら、最後に掲示板から案内ページへリンクを張ります。

html例: 掲示板に新規発言があった場合、メールで配信してほしい場合は、「<A HREF="http://www.〜">メール配信のご案内</A>」ページをご覧ください。自由にメール配信開始・中止ができます。


●すでに登録している人のために

 すでに配信を行っていても問題はありません。すでに配信している人も、他の人と同様に案内ページから必要な手続きをしてもらえばいいだけです。
 該当の掲示板で自分でメール配信の開始・中止ができるようになったこと、今まで配信している人もフツーに手続きをとればいいことを告知するといいでしょう。


●トラブルシューティング

○500エラーの場合
 ・パーミッションをチェックしてください。
 ・改行コードをチェックしてください。
 ・漢字コードと.cgiの中の漢字コードの設定をチェックしてください。実際の漢字コードと.cgiの中の漢字コード指定が一致していないと動きません。不一致の場合はその旨エラー出力するハズなんですが、僕の使っているUNIXサーバではこの指定が一致していないと500エラーになります。なじぇ?
 ・設定部分をチェックしてください。例えば「$confpath = '/home/name/html/cgitest/'; 」(赤い/に注目)が「 $confpath = 'home/name/html/cgitest/'; 」となっているだけでもエラーになります。「/」から書き出さないといけません。ちゃんと設定できているかチェックしてください。

○その他のエラーの場合 基本的にはエラーの原因がでるはずです。
 ・「jcode.pl」がフォルダ内にあるかチェックしてください。

○登録されたはずなのにkb.mailにに登録されていない。→kb.mailのパーミッションが666か確認してください。本当はパーミッションを強制的に666に書き換えた方が確実ですが、この機能は実装されていません。


●変更履歴

○ver.0.5r2 2001/7/16
 ・cgiにはまったく手を触れていません。このreadme.htmlを一部手直ししました。
  ・confファイルのパーミッションの説明が間違っていた。644→666
  ・掲示板のリンクが間違っていた。
  ・著作権表記が全然著作権表記になってなかった。
  ・フリーであることを明記した。

○ver.0.5 2000/5/17
 ・中味を完全に見直し、まったく新しく一から書き直した。かなりシンプルになった。
 ・なひさんのご指導により、セキュリティ的に格段に進歩した。もう、大感謝であります(^_^)
 ・現在のオプション機能
  ・kbinfo.cgi ログを取る/取らない 確認画面でパスワードを表示/非表示
  ・regist.cgi ログを取る/取らない

○ver.0.4 2000/5/10 未発表
 ・kbmailkitの登録・削除・確認用と3つあったcgiを1つにまとめた。
 ・フォルダなどの名称を変更。案内用フォルダ「kbinfo」、登録・削除用フォルダ「kbentry」とした。各種ファイル名も変更。
 ・kbinfo.cgiで、案内メールを送る際にeucにしていたのをjisに変更。

○ver.0.3 2000/5/8 未発表
 ・kbmailkitのCookieがセットされていない場合、きのぼずのCookieを拾ってしまうというバグを修正。
 ・登録時のフラグ設定が間違っていて、登録できない原因を間違えて報告するというバグを修正。

○ver.0.2 2000/5/1(5/7に公開し、8日にバグを見つけてストップした)
 ・クッキーを搭載した。
 ・アドレスに@があるかチェックするようになった。
 ・確認時にエンコードされたパスワードが出るので意味なし。確認時にはパスワードを表示しなくした。
 ・半角カナを全角に変換がうまくいかない。フォームから送信される前にやらないといけないと思うのだが、どうしていいやら。

○ver.0.1 2000/4 未発表
 ・ともかく動いた。


●著作権?

 このキットの著作権は水沢・penguin-19・和彦にあります。このキットはフリーウェアです。商用・個人利用を問わず自由に使用・改造・再配布できます。ただし、いっさいの保証はされません。改造版を配布する場合は、オリジナルと異なることを明記してください。
 同梱されているファイルのうち、jcode.plは歌代氏が制作(http://www.srekcah.org/jcode/)したものです。このファイルについては、歌代氏の条件に従ってください。

 このキットの作成に当たり、きのぼす作者であるなひさんに多大なご助力をいただきました。なひさんに感謝いたします。

 あ、忘れてました。このキット、開発はMACですが、MACでは動きません。sendmailが使えないから(^^; OS Xなら動くはずです(未テスト)。

 バグなどについてはこちらの掲示板にお願いします。マニュアルに書いてない掲示板

 水沢・penguin-19・和彦 mizusawa@kiwi.ne.jp