gbreplyを使おう
(図1: gbmのみの動作)
<1:ゲストブック書き込み>
↓
<2:ゲストブック所有者($owner宛)にメイルでの通知>
(つまり、この通知メイルによって書き込まれたことを知るわけだ)
↓
<3: 書き込まれたファイルを編集して返事を書く>
(図2: gbreplyを導入した時の動作)
<1:ゲストブック書き込み>
↓
<2:ゲストブック所有者($owner)にメイルでの通知>
↓
<3:$owner がメイルを受け取る>
↓
<4:$ownerが返事を書いてそれをメイルとして $gbreplyto に送信する>
↓
<5: gbreply は受け取ったメイルをゲストブックの返事とする>
% cat ~/.qmail-test & a@hogehoge.org & b@foobar.orgなんてのがあったとする。
gbreply ではまこの「|」記号を用いたプログラムにメイルを渡す機能を利用 することでメイルによるゲストブックへの返事を実現している。
以下、その設定。
ゲストブック本体(gbm)がおいてあるディレクトリに移動しよう。
% cd ~/public_html/gb/ (ユーザのディレクトリ構成に依存)
そこにあるであろう gbconf.pl に各自の設定情報がおさめられている。
以下の変数が gbreply で必要とするものである。もし項目がなければ追加する。
適宜自分の環境に合わせて設定する
$owner = 'renge@bazbaz.org'; # 自分のメイルアドレスに必ず書き換えよ $gbreplyto = 'renge-henji@bazbaz.org'; # gbreplyを起動するためのアドレス $gbreplyauth = 'a@hogehoge.org|renge@bazbaz.org'; # 認証用
それぞれ変数の意味は
そうそう、このパラメータを括っている「'(シングルクォーテーション)」は「"」
にしちゃダメ。これにすると gbm が誤動作しちゃうので「'」にしましょう。
$gbreplyauth とは。
これは身元確認のための変数である。
まぁそんな物好きはいないだろうけど、全く関係無い人間がゲストブックの所有
者を装ってメイルを出してとんでもない返事を付けたりすることも考えられる。
そこで、あらかじめ自分が返事を送る場所を gbreply に教えておいて、本当に
そこから来たメイルであった時にのみ返事を変更できるようになっている。
その「あらかじめ教えておくアドレス」が $gbreplyauth である。
ちなみに、$gbreplyauth にいれておくアドレスは
~/.qmail-baramaki の内容と一致させると良い。
続いて $gbreplyto はというと、これは図(2)の 4 で出てくる。ユーザはこの $gbreplyto 変数のアドレスに返事を書いたメイルを送ることで gbreply にデー タを受け渡すことができる。
$gbreplyauth = 'a@hogehoge.org|renge@bazbaz.org';
$owner = 'a@hogehoge.org';
$gbreplyto = 'renge-henji@bazbaz.org';
------------------
gb の稼働しているマシン 遠隔地の普段自分がよく使用しているマシン
(renge@bazbaz.org) (a@hogehoge.org)
|
|
V
書き込み発生 ------($owner宛)-------> メイルで書き込みデータ配送
|
返事を作成
|
V
~/.qmail-henji参照 <-----($gbreplyto宛)---- メイルとして返事を送信
|
V
gbreply へ返事データ渡す
|
V
gbreply 起動
|
V
受け取ったメイルから返事の
部分を抜きだしてファイルと
して保存する。
% cat ~/.qmail-henji | ./public_html/gb/gbreplyなんて一行書いておくだけでOK。
今のままだと、かならず $owner は一箇所に送られちゃう。(メイルアドレスを
一つしか登録してないからね)
これってある意味すごーく困り。なぜって、gb の稼働してるサーバにログイン
してもメイルは $owner(a@hogehoge.org)に送られちゃってるから
返事を書くのが面倒。普段は仕事や学校にいる時間の方が長いからってんで
$owner を出先のみにしておいても差障りないかもしれないけどね。
でも休みの日なんかちょっとこまり。どーせなら $owner を複数にしちゃうなん
てことができれば…
$owner = 'renge@bazbaz.org, a@hogehoge.org';
これでどや…どきどき…………ん?
あかん。どっちにも送られてこん。
ってことで、実はこの方法だとあきまへんのす。
じゃぁ諦めんのか?いやいやこのページの始めの話を思い出しましょ。
~/.qmail-test の話。
これで複数の人間に送ることができるやん…おおおお!幸せ。いつのまにやらら
ぶらぶ qmail。
ってんで早速変更しましょ。
$owner = 'renge-baramaki@bazbaz.org';
アドレスが完全に(ドメインまで)変わったことにちうい。
これでゲストブックに書き込まれたメッセージは gbm を置いてるサイトに送ら
れる。そこの自分のディレクトリの ~/.qmail-baramaki ってファイルの中に従
うようになる。
じゃぁ具体的な ~/.qmail-baramaki の設定
~/.qmail-baramaki をつくりましょ。
& renge@bazbaz.org & a@hogehoge.org & b@gerogero.com
この 3 行を ~/.qmail-baramaki に書く
これでとりあえず 3 箇所に送られるようになった。そして gbconf.pl の
$gbreplyauth にもこれらのアドレスをいれておかないと、いくら外から返事書
いても蹴られてしまうのでちうい。
$gbreplyauth = 'renge@bazbaz.org|a@hogehoge.org|b@gerogero.com';
これだけやればあとはゲストブックへの書き込みを待つだけぇ〜
ちなみに、sendmail 自体の設定は特にいらんす。
sendmail ってのは余りにも有名な MTA ですな。
ま、ここでは sendmail は大変だから qmail しましょーなんて説くつもりはな
いす。
もしそのあたりに興味あったら
Secureで
行こうを参照してたもれ。
で、qmail のところからずーっと読んできてくれた人はもう気づいてるかもしれ
んすけど、 sendmail には qmail のような便利な機能はありません。
具体的には ~/.qmail-* なんてファイルを分けることによってメイルアドレスを
複数もつなんてこともできんす。
じゃぁ gbreply を使うことはできんのか?ってことになりますが、それを実現
してくれるのが procmail なるツール。
もちろん世の中には他のツールでも同じようなことをやってくれるでしょうけど、
とりあえずは procmail ってのを紹介します。
gbreply本
家の説明に書いてある通りに Makefile の BASENAME を /usr/local に変更。
ETCRC と ETCRCS も変更して /usr/local/etc に。このあたりは自分の好みです
な。
って言ってる間にコンパイル終った。make install でおちまい。 make
install-suid すると何が起こるのかはようしりません。
これから設定にうつりま。
ただし、この設定も gbreply を使うに当たって必要な設定のみ書いているので 詳しくはマニュアルなり検索するなり別のところで調べてくださいな。
具体的な設定から。
PATH=/bin:/usr/bin:/usr/local/bin MAILDIR=$HOME/Mail LOGFILE=$HOME/.mail/log DEFAULT=/var/mail/harano VERBOSE=OFF :0 * ^Subject: Re: Guest Book Registration | /home/harano/public_html/gb/gbreplyでOK。
% mkdir ~/.mail % touch ~/.mail/logをしてログファイルを書き出す場所を確保する。そんでもって適宜自分の環境に 変更すべし。
% cat ~/.forward "|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75"最後に gbconf.pl の中の $owner 変数を書き換える。
$owner = 'user@dokka.acchi.kocchi.jp';この user は遠隔地にいて書き込み通知メイルを受け取るメイルアドレスである。
これで最低限(かつ最大?)の設定はできたのでちょっくらゲストブックに書き込
んで送られて来たメイルに返事をかいてみやう。
あ、そうそう、ここではあまり gbconf.pl について説明しないので qmail の方の設定を見てちょ。これみないと $owner とかい
きなり出て来てもわからんかもしれないし。
そーんな時のための procmail。早速設定。
% cat ~/.procmailrc :0 c * ^Subject: Re: Guest Book Registration ! user@dokka.acchi.kocchi.jp,user@special.providor.ne.jpなんてやる。
$gbreplyauth = 'user@dokka.acchi.kocchi.jp|user@special.providor.ne.jp|a@domain.go.jp';こっちには a@domain.go.jp が入ってることに注意。
ま、だいたいこんなもんで一通り使えるようになったと思いま。
あとはこちらも気長にゲストブックに書き込まれるのを待ちましょう。