Infomagic の CD-ROM から3つ目の HDD /dev/sdc に Slackware3.2 をインス トールしてみました。今、これを書いている時点ではもう Slackware3.3 が出 ているか。3.2 は毎日使うというよりもさまざまな設定について再検討したい というのが目的でいれたもの。日々使えば必要に応じて日々整備されていくの ですが、いろんな設定について学びたいというのが目的でいれたものですから、 なかなか実用状態にはなりません。
インストールに際しては「パッケージの選択」をもう一度ゆっくり見直しまし た。一部のパッケージは「Linux入門」付録の CD-ROM を利用しました。パッ ケージの追加インストールもやってみました。実は Infomagic の CD-ROM の ようなものからインストールしたのは初めてのことです。これまでは Linux 入門付録の CD-ROM や JF4 のようなパッケージしか使ったことがなかったの で、Infomagic を使うのは私にはちょっとだけの冒険ってわけですね。でも困 ることはありませんでした。X window system には Red Hat 用の Metro-X を 使いました。
インストールには通常boot disk と root disk を作成しますが、3.2 のイン ストールを検討していた時、JF で日本語版インストラーの試用版が作成され たいたので、これも試してみました。ディスク1枚で日本語解説付きでインス トールが出来るものです。
Some Linux Tips 主にインストーラを中心に Froppy Disk にいろいろパック
ようやくメールの設定について再検討ができました。動いてなんぼ、使えてこそのパソコンではあるけれど、とりあえず動いてくれる、その状態になんとか満足できたらやはり「正しい設定」(こういう表現でいいのかどうかはわからないけれど)を検討することもまた大事。完璧にはほど遠いかもしれないけれど、「こうあって欲しい」状態の設定に変更することができました。
これまでの設定の問題点は、「同じドメインの人に直接メールが出せない」ということでした。私のアドレスは jeanne@mbox.kyoto-inet.or.jp をメインに使っているのですが、mbox.kyoto-inet.or.jp のアドレス宛にメールを出そうとすると外にでてくれない状態になる。不便だと思いつつ、mbox.kyoto-inet.or.jp 宛の場合は、メールを回送する方法で出していたのですが、宛先部分をいちいち手で修正するのはやはり面倒でした。
mbox.kyoto-inet.or.jp のアドレス宛にメールを出そうとすると外にでてくれない状態というのは、よくよく考えてみれば、コピーメールになるように cc: の宛先を jeanne@mbox.kyoto-inet.or.jp としたものはローカルメール扱いになっているわけで、自分宛含め、mbox.kyoto-inet.or.jp 宛はローカルメールとなっていて、内部配送にまわってしまう。
sendmail.cf のなかで Official name の部分を "mbox.kyoto-inet.or.jp' と設定している限りは、mbox.kyoto-inet.or.jp のアドレスはローカルメールになり、abcd@mbox.kyoto-inet.or.jp のようなアドレスに送信しようとしても、このメールはローカル扱いになり、結果的には「そんな名前のユーザはない」というエラーになってしまうわけです。
最初は自分宛と自分以外の者宛のメールをどうやって区別させたらいいのかと考えたのですが、「私のマシンに登録されていないユーザ宛メールは外に出す」という区別はちょっと実現しそうになかった。
つまりいままでの設定だと、mbox.kyoto-inet.or.jp 宛をのぞくすべてのメールをメールサーバに送るとなっていたことになります。mbox.kyoto-inet.or.jp 宛はローカルメール扱いになってしまっていた。
そこで次に「すべてのメールはメールサーバに送って」しまえばいいと気がついたのですが、自分宛コピーメールまで一旦サーバに送るというのは納得がいかない。
「mbox.kyoto-inet.or.jp 宛を含めすべてのメールはメールサーバに送る」が、自分宛のコピーメールの宛先はローカルのホスト名、ドメイン名のままであれば内部配送されるから、コピーメールの宛先はユーザ名のみにすればいいと気がついた。
しかし、#OFFICIAL_NAME='$w.$m' を設定せず、 FROM_ADDRESS='mbox.kyoto-inet.or.jp'のみを設定しても、From: は正しく記入されません。
#OFFICIAL_NAME='$w.$m'を固定的に設定せずに、ヘッダーに正式のアドレスを記すためにはどうしたらいいのか、ちょっと困りました。
# [address]の次の部分を利用することでちょっとした「魔法」のようにヘッダーをちゃんとすることができることがわかりました。 ローカルのホスト名ドメイン名のままのメールが発信される時に、 From: cc: 部分に FROM_ADDRESSで指定した発信者の正式のアドレスを付加してくれます。 この部分に関しては /usr/src/CF-3.4W3/doc/MANUAL.jpn をゆっくり参照ください。 設定は以下のようにします。
# apply FROM_ADDRESS for receipients (yes/no)
RECEIPIENT_GENERIC=yes
# rewrite address which has official name already into generic form
# (yes/lower/no)
REWRITE_GENERIC_FROM=yes
REWRITE_GENERIC_TO=yes
# rewrite local address of recipient on relay mailer (generic/strip/no)
REWRITE_LOCAL_ON_RELAY=generic
------------送信メールのコピー(内部配送されるもの)
To: jeanne@mbox.kyoto-inet.or.jp
cc: jeanne
Subject: test
Date: Fri, 25 Jul 1997 01:19:31 +0900
From: chie nakatani <jeanne@chie.minerva.com>
test
--------------
cc: と From: に注意。宛先はユーザ名のみ。From は自動的にローカルのホス ト名とドメイン名になっています。このメールを送信して、メールサーバから 受信すると、以下のようなヘッダーのものを受け取ることができます。
RECEIPIENT_GENERIC=yes の4項目を設定することで、発信する時にローカル
ホスト名とドメインが FROM_ADDRESS='mbox.kyoto-inet.or.jp' で設定してい
るものに変更されます。
--------------メールサーバから受信したメール
To: jeanne@mbox.kyoto-inet.or.jp
cc: jeanne@mbox.kyoto-inet.or.jp
Subject: test
Date: Fri, 25 Jul 1997 01:19:31 +0900
From: chie nakatani <jeanne@mbox.kyoto-inet.or.jp>
X-UIDL: 67d4a15caa1c53ec5530559b641e5961
test
-------------
これまでの設定では Official name を設定しなければいけないのだと思いこ んでいたのですが、こういうちょっぴり魔法的な方法を使うことで、 mbox,kyoto-inet.or.jp 宛のメールもちゃんと送信できることがわかりました。
この設定が「正しい」のかどうかまだわかりません。sendmail ではいろんな 方法を使うことができます。恐らくまたしばらくしたら何かに気がつくかもし れません。そうしたらまたsendmail をいじってみようと思っています。
sendmail の設定をいじるというのはとにかくややこしいとか複雑だとかいう
イメージが先にあるようですが、ともあれ自分が使うための方法を見つけ出す
ことはできるようです。だから設定の完璧さからはまだまだほど遠いところに
いるように思います。ただ少しづつさまざまな設定の意味を検討していくこと、
それがとても大事だと思いました。
CGI になぜ目が向いたのか、その理由はよくわ
からないと言ってしまえばそれまでですが、このようなホームページも一方的
に何かを表示するだけの場合でも「動くもの」があればなんとなくうれしい。
アニメーションの GIF を置くだけでも目先は変わるものですが、当然ながら
次は見てくださった方との何がしかの交流。簡単なJava スクリプトやapplet
等を使えば、来てくださった方の名前を画面に出すこともできるし、ホームペー
ジのアクセス回数を表示することもできる。でも、これでもまだ動いてはいる
けれど、一方的であることには変わりはない。ホームページへのアクセス回数
の表示は CGI を使ってもできることはわかっていたけれど、こういうことに
はあまり興味がなかったので今までやろうと思わなかった。
私は html ファイルはすべて手書きをしています。netscape が Java で死ぬ
というようなことも私自身経験しているし、html はそもそもワープロ表現と
は違うものであるとも思う。だから、まずは全体にシンプルであること、プラ
ウザ依存性はできるだけ低く、どういうマシンで見ようがイメージは崩れない
方がいい、というようなことだけは頭において作るようにはしています。でき
るだけ中身で勝負!そういうことなのではありますけれど(実際のところはど
うでしょうね)。
こんなところもあるってことで、ちょっとご紹介
CGI とは Common Gateway Interface の略ですが、あれこれ調べてみたらこれ
はなかなか興味をそそるものでもあるようです。Java が登場した時、やっぱ
りいろいろ興味しんしんで調べてみました。こういう言語に興味を持つのは悪
くない、そう思います。
さて、そうなると CGI では何ができるかということにもなりますが、そのよ
うな全体的な質問よりは、まずは私は WWW で BBS を運営するにはどうしたら
できるのか、それを調べているうちに CGI が浮かんできたというだけの話で
す。CGI という言葉そのものはもう2年も3年も前から知っていたわけですが、
詳しいことは知らなかったし、実際、kyoto-inet で利用できるのは、カウン
ターとクリカブルマップとあとひとつ何でしたっけ、その程度の既成のものし
か利用できそうにないので、それ以上の興味がわかなかったのですね。でもふ
と思いたち、twics の www サービスの内容を調べておりましたら、なんと、
ここは、自分の/home/www のなかに /cgi-bin を作成できる。ということは、
cgi スクリプトをそこにインストールしてやれば、何がしかのものを動かすこ
とができるわけです。手始めに /cgi-bin を利用してカウンターをつけてみま
したら、これは何もしないでもすぐに動いた。
というわけで twics では CGI を利用できることがわかったので、CGI で書か
れた掲示板(www上の簡易BBS と言ったらいいでしょうか)の作り方を探してい
ました。このようなもののサンプルやその他もろもろ、探せばいろいろあるも
のですね、ほんとに。とにかくちょっとの努力でいけそうと思っている時に、
ああ、ラッキーですねぇ、Software Desigan 1997 8月号で「CGI による掲示
板システム WELL」という記事をみつけました。これはまさしく私が欲しかっ
たものをほぼ満足してくれそうなものでした。
WELL はここで配布しています。
余談ですが、私がアクセスしたのは雑誌発行の1月後、1301人目でした。
すでに最初のバージョンのバグが修正されたものを配布しておられました。早
いのもうれしいけれど、すでにバグ報告が行われて修正版を頂けるというのも
これまたうれしいものです。
あれこれ探して、結局は自分の手もとにあった雑誌の記事が一番のヒントになっ
たわけですけれど、そんなものですか。
-rw-r--r-- 1 jeanne users 31676 Aug 24 23:54 WELL-1.0.3.tar.gz
さて、これをいじってみよう。
(もちろん、続く)
~/www/cgi-bin においたファイルを実行させるには?自分のマシンとは違い、
サービス内容を把握しておかないと動かないということになりかねない。
ということで、twics のディレクトリがどうなっているのか、ちょっと探検。
ホームに cgi-bin を作成したのはいいけれど、ディレクトリの関係が少しわ
かりにくい。 ここがわからないと WELL のスクリプトに必要ファイルのディ
レクトリがちゃんと指定できないことになるので、ルートからたどってみて、
どのような位置関係になるのかを調べておきました。
twics のホームページは./www にファイルを置くのですが、URL は
http://www.twics.com/~chie となる。
$ cd /twics/users/chie/www/cgi-bin
WELL のいくつかの設定ファイルの置き場所は以下のようにしてみました。
たとえば
uptime に関してファイルの所在を確認。
でも、いきなり WELL が動いてくれるほど、ものごとは単純ではありませんで
した(笑)。実際は簡単なことにしかすぎないのだとはわかるのですが、何事も
基礎がないことには。。。!で、ちょっとより道になりますが、だけどこうい
うことを秘かにやってみないことには!
<a href="http://www.twics.com/cgi-bin/cgiwrap/chie/cgitest1.cgi">test1 </a >
これと3行ほどのcgitest1.cgi というperlスクリプトを用意して
cgitest1.cgi を実行すると、画面には 「This is TEST」が表示されました。
--cgitest1.cgi----
Hello World を html で表示する超簡単スクリプト
そうかと改めた気がつくという程度なのですが、こういうことをする場合は
perl スクリプトはとても便利。だけど、WELL は C 言語で書かれており、コ
ンパイルが必要です。だからちょっとした修正が少しだけ面倒になりますね。
けれど、なぜ C 言語で書かれているか、なぜ?と思ったら、それにはちゃん
と理由があるわけで、 高速でコンパクトな設計のためにと、Software Design
8月号101ページにちゃんと説明がありました。こういうちょっとしたテスト
をやってみるだけで、初心者が自分のために CGI を練習するなら、やっぱり
Perl で書くのがいいとなんとなく自分でも納得できたというわけです。
WELL に行き着くまでにいくつか簡単な Perl スクリプトを試してみることに
します。こういう風にやっていたら WELL は私のためにきっと動いてくれるこ
とでしょう。
(もちろんまだまだ続く)
Twics のマニュアルでの注意事項(setup.html)
(こうなってくると、WELL からちょっと離れて、 htmlの書き方と Perl スクリプトの勉強になっているようです。ま、いそがば回れ、ですね。)
sendmail.cf の設定のためのもとファイルmyhost.def の設定箇所は以下のよ
うになりました。
CF_TYPE=R8
OS_TYPE=linux
# [general]
# with sendmail.mx (yes/no)
#MX_SENDMAIL=yes
# local domain name (defined automatically)
##MY_DOMAIN=
# local host name (defined automatically)
# V1: with domain name; V5: without domain name
##MY_NAME=
# default my official SMTP hostname
#OFFICIAL_NAME='$w' # for V1/NMTC
#OFFICIAL_NAME='$w.$m' # for V5
# [address]
# user names which require host.domain
#LOCAL_ADMIN_USERS='root daemon news usenet postmaster MAILER-DAEMON'
##LOCAL_USERS='user1 user2 ...'
# default from-address (can be $j, $m or another generic address)
#FROM_ADDRESS='$j'
##FROM_ADDRESS='$m'
FROM_ADDRESS='mbox.kyoto-inet.or.jp'
# apply FROM_ADDRESS for receipients (yes/no)
RECEIPIENT_GENERIC=yes
# rewrite address which has official name already into generic form
# (yes/lower/no)
REWRITE_GENERIC_FROM=yes
REWRITE_GENERIC_TO=yes
# rewrite local address of recipient on relay mailer (generic/strip/no)
REWRITE_LOCAL_ON_RELAY=generic
SMTP_MAILER_FLAG='mDFuXa'
# [indirect]
# for indirect delivery
# domain names to be deliverd directly (all/none/"domain names")
#DIRECT_DELIVER_DOMAINS=all
# relay host for indirect delivery (in case of none or "domain names")
DEFAULT_RELAY='smtp:mbox.kyoto-inet.or.jp'
##DEFAULT_RELAY='error:deliver'
CGI と簡易ボードシステム
一般的な CGI の解説ホームページをあれこれ物色しておりました。ま、いろ
いろあります。有料でスクリプトを書いてくれるところもあるし、無料で提供
しているところもある。詳細な解説をしてくださるところもあり、ホームペー
ジの情報のすごさというのに改めて感激します。
WELL ボードシステムへようこそ: メインボード (オープン)
とはいえ、この「あれこれ探して」
この行動は結構大事ですよねぇ。だって CGI について右も左もよくわからな
いけれど、そういうことをやっているうちに、なるほどそ〜ゆ〜ものなのかと
概略は見えて来るということはありますから。
CGI 基礎の基礎
そのまま WELL の設定が続くはずでしたが、CGI ほんの初心者の私がいきなり
BBS を動かそうというのはやっぱり少々無理はあるようですね。まして自分の
マシンのなかではなく、サーバマシンを利用して CGI を試してみるというこ
とですから、あんまり無茶もできない。そう思い直して(思い直さなくても、
ちょっとは基礎固めをしないことにはこれはやっぱり動かないですよね)、い
ろいろ準備作業と練習をやってみることにしました。でも、こういう時間とい
うのはなかなか貴重なものです。いろいろ疑問も出てくるようだし、その疑問
を解決していくことはやっぱりちょっとづつ CGI というものの把握し、理解
することにつながると思う。
twics で cgi を使うための準備
まずは以下の説明にしたがって ~/www 以下に cgi-bin というディレクトリを作
成し、パーミッションを 755 に変更。そして、cgi-bin においたファイルは
実行可能にすること。
実行可能にしておかないとこのような親切なエラーを表示してくれます。
CGIwrap Error: Script is not executable. Issue chmod 755 /twics/users/chie/www/cgi-bin/cgitest2.cgi
Create the directories needed to hold the cgi scripts,
1.cd
2.mkdir www/cgi-bin
Set minimal required permissions on directories
1.chmod 755 www www/cgi-bin
Install the script into the cgi-bin directory
Set the proper execution permissions on the file
1.cd www/cgi-bin
2.chmod u+rx email.pl
この「~」の部分は全体的なディレクトリツリーから見た場合にこうなるようです。
/* ボードディレクトリ は、
#define BOARD_DIR "/twics/users/chie/www/WELL/board"
$ cd /usr/bin
$ ls -l uptime
-r-xr-s---+ 1 bin sys 16384 Jun 10 1996 uptime
以上は ~/www/cgi-bin の整備。
Hello World 画面表示
まずはじまりは、これはやっぱり Hello World ですよね(笑)いきなり BBS を
運営しようとしてもそりゃあ、無理というもの。まずは、html ファイルから、
簡単な cgi を実行し、This is TEST あるいは Hello World などの文字を画
面に表示させる。ホームディレクトリに cgi-bin を作り、そこにおいたファ
イルを実行させるには、twics では cgiwrap を通過して実行させます。
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<TITLE>TEST SCRIPT</TITLE>\n";
print "This is TEST\n";
--------------
-----cgitest1.cgi---------
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print <<"ending_print_tag";
<:html>
<head>
<title>my first CGI </title>
</head >
<h1>My first CGI</h1>
Hello World!
</body >
</html >
ending_print_tag
------------
さて、次は Get と Post です。
これは送信方法の違い。
Get メソッドでは
Post メソッドではデータは他のHTTP 要求ヘッダが全部送り出された後から
別個のメッセージとして送出される、という違いがある。
Cgiwrap can be used with forms, but the request should use the method "POST".
If you need to use the "GET" method,
you need to include two HIDDEN fields in your
form of names "user", and "script" that specify the user,
and script to execute with CGIWrap.
Use of the GET method for forms is discouraged due to limitations in the
amount of data that can be passed to the script.
とりあえずの BBS ボード
mini-BBS へどうぞ。
CGI の勉強のためにmini-BBS のページを置きました。
Linuxmemo(このファイル)の先頭に戻る
back to Home Page(English)
ホームページに戻る(日本語)