GNSをメール環境で使うための方法を解説します。WWWサーバにCGIの形で導入し、メールで日記を書き込み、そのまま公開することができます。

WWWサーバ環境は、*BSD・LinuxなどUNIX系のOSに、apacheを導入したものを想定しています。

  1. GNSの動作に必要なツールを導入する
  2. GNSを導入する
  3. GNSの基本設定をする
  4. GNSの環境テストをする
  5. パスワードを設定する
  6. 日記マスタを書く
  7. 更新通知メール

GNSの動作に必要なツールを導入する

UNIX環境でGNSを動作させるには、以下のツールが必要です。

Perl

Perlは、Perl言語で書かれたプログラムを動かすためのプログラムです。GNSは、その大部分をPerlで書いています。現在のUNIX環境では、すでにPerlがインストール済みであったり、個々のOSの専用パッケージとしてPerlが用意されていることが多いですが、もし必要であれば以下からインストールファイルをダウンロードし、コンパイル・インストールをしてください。

GNSは、バージョン5以上のPerlでの動作を想定しています。もし特定のバージョンのPerlでの動作による不具合を発見した場合は、当方までお知らせいただければ幸いです。

Perlではさまざまな追加モジュールをインストールして使うことができますが、GNSはPerlの追加モジュールの導入の必要はありません。

nkf

nkfは、日本語ファイルの文字コードを変換するツールです。お使いのOSにnkfのパッケージがあればそれを導入、なければ以下からインストールファイルをダウンロードし、コンパイル・インストールをしてください。

GNSは、nkf v2.0以降での動作を想定しています。もし特定のバージョンのnkfでの動作による不具合を発見した場合は、当方までお知らせいただければ幸いです。

テキストエディタ
GNSの動作設定を行うには、テキストエディタが必要です。GNSの設定ファイルはEUC-JP形式で書かれているので、vi・emacsなどの「EUC-JPの編集に対応したテキストエディタ」をご用意ください。
もちろん、手許のWindowsやMacなどのパソコンで編集して、ftpなどで転送しても構いません。
メーラ

メール更新を行うには、送信を行うためのメーラが必要です。

通常のテキストが記述できるものであれば、何でもかまいません。

tidy

tidyは、HTMLファイルを整形するツールです。初期状態のGNSでは不要ですが、AtomをXHTML形式で出力する「$ATOM_XHTML」スイッチをONにするとき必要になります。以下からインストールファイルをダウンロードし、インストールをしてください。

これらの他に、GNS配布パッケージには、再配布可能なjcode.plというツールを組み込んでいます。もし必要であれば、以下からより新しいバージョンのjcode.plをダウンロードし、置き換えてください。

GNSを導入する

GNSは、zip版とtgz版の2つの配布形態をとっています。GNS本体としては同じものですが、UNIX版のインストーラが入っているのはtgz版のみです。

ファイルを解凍する
GNSの解凍
▲GNSの解凍

GNSの配布パッケージとなっているファイルを、tar+gzipなどを使用して解凍してください。解凍先はどこでも構いませんが、ここでは「public_html/GNS」を解凍先とします。このフォルダを「GNSフォルダ」と呼びます。

解凍が終了すると、「public_html/GNS」の下に"gns400"などの名前のフォルダ("400"はバージョン番号です)が作成されます。これがGNSのプログラムや設定データが入っている部分です。同様に、このフォルダを「GNSプログラムフォルダ」と呼びます。

インストール設定を行う
# Set Mail Address and URL
my_mail="yourmail@example.net"
my_url="http://www.example.net/GNS/"

my_mail="aoi@example.ne.jp"
my_url="http://www.example.ne.jp/GNS/"

「install.sh」をエディタで開いて、右の部分をインストール先の状況に応じて書き換えます。

"my_mail"は、自分のメールアドレスです。

"my_url"は、「GNSフォルダ」をURLにしたものです。

インストールを実行する
[Welcome to GNS!]
-------------------------------------------------
Your Mail Address = [aoi@example.ne.jp]
Your Diary URL    = [http://www.example.ne.jp/GNS/]
perl              = [/usr/local/bin/perl]
nkf               = [/usr/local/bin/nkf]
mail              = [/usr/bin/mail]
-------------------------------------------------
Push [Enter] key to continue installing.

「install.sh」を実行すると、右のような表示が出て、一時停止します。

表示内容が正しいことを確認してから、[Enter]キーを押すと、各種フォルダやファイルの作成・コピーが行われます。

日記マスタ用のフォルダを確認する

インストールを行うと、日記マスタを収めるフォルダが準備されます。「GNSフォルダ」に、"d"という名前のフォルダが作成されたのを確認してください。このフォルダを「日記マスタフォルダ」と呼びます。

cssファイルをコピーする

GNSは、cssに対応したHTMLファイルを出力します。「[GNSプログラムフォルダ]/style」フォルダに、これらのHTMLに対応したcssファイルセットが収められています。これは「インストール」ではコピーが行われないので、好きなcssファイルを各自で「GNSフォルダ」にコピーして利用してください。

plain ほとんどスタイル指定のないcssファイルです。オリジナルのスタイルを作るときの雛形として使います。
simple デフォルトのスタイル指定が入ったcssファイルです。
GNSプログラムフォルダを保護する

日記を作成するための作業の一部は、GNSプログラムフォルダ内のページをブラウザからアクセスする必要があります。ここは、著者であるあなた以外のアクセスはできないようにしておくべきです。.htaccessによるBASIC認証などを使って、あなた以外のアクセスを封じるようにしてください。

届いたメールをGNSが処理するようにする
yourmail@example.ne.jp
"|/usr/local/bin/perl ‾/public_html/GNS/gns400/recvmail.pl"
▲‾/.forwardサンプル

一般的なUNIX環境では、メールが届くたびに特定のプログラムが起動するようにすることができます。一般的なシステムでは「‾/.forward」ファイルに起動するプログラムを記述するようになっています。

GNSは、「[GNSプログラムフォルダ]/recvmail.pl」を起動させることで、日記の更新を行うことができます。「‾/.forward」には以下のように書きます。

1行目には、自分自身のメールアドレスを書きます。これがないと、GNSがメールを処理したあと、そのメールは消去されてしまいます。自分自身のメールアドレスを書くことで、GNSにメール処理をさせると同時に、メールボックスにもメールが残ります。

2行目には、「recvmail.pl」を起動するためのコマンドラインを記述します。パイプを示す"|"文字に続いて、perlプログラムのフルパス、最後にrecvmail.plのフルパスを書き、全体をダブルクォートでくくります。

GNSの基本設定をする

GNSプログラムフォルダには、初期設定となる設定データがすでに入っています。しかし、このままでは各種情報がまだ仮のものです。まず、基本設定を行う必要があります。

ここでは、最小限の変更についてのみ解説します。詳細は、「config.phによる設定」をご覧ください。

config.phファイルをテキストエディタで開く
config.phを開く
▲config.phを開く

"config.ph"というファイルが、GNSの基本設定を司るファイルです。テキストエディタで、このファイルを開いてください。

このファイルには多くの設定項目がありますが、ここで編集を行う必要があるのは、そのごく一部です。以下、順に編集項目を説明します。

公開URLベース名
# 公開URLベース名
$URLBASENAME = 'http://www.example.net/GNS/';

$URLBASENAME = 'http://www.example.ne.jp/GNS/';

日記を公開するときの、URLのディレクトリ名までの部分を編集します。この例では、公開URLのディレクトリ名「http://www.example.ne.jp/GNS/」フォルダにします。この下に日記ページが置かれます。

ダイジェストファイル名
# ダイジェストファイル名
$DIGESTNAME = 'digestdiary.html';

$DIGESTNAME = 'index.html';

日記を公開するときの、ダイジェストページのURLのファイル名部分を編集します。この例では、ダイジェストページのURLを「index.html」とします。「公開URLベース名」の例と組み合わせると、この日記のダイジェストページのURLは、「http://www.example.ne.jp/GNS/index.html」となります。

日記名
# 日記名
$DIARY_TITLE = 'GNSによる日記';

$DIARY_TITLE = 'だいだい だいありー';

日記の名前を編集します。この例では、「だいだい だいありー」という名前になります。

この項目は、出力される日記のすべてのページに埋め込まれます。

著者名
# 著者名
$DIARY_AUTHOR = 'yourname';

$DIARY_AUTHOR = 'あおい';

日記の著者名を編集します。この例では、「あおい」という名前になります。

この項目は、出力される日記のすべてのページに埋め込まれます。

著者メールアドレス
# 著者メールアドレス
$DIARY_EMAIL = 'yourmail@example.net';

$DIARY_EMAIL = 'aoi@example.ne.jp';

著者宛てのメールアドレスを編集します。この例では、「aoi@example.ne.jp」というアドレスになります。

この項目は、出力される日記のすべてのページに埋め込まれます。

日記の説明
# 日記の説明
$DIARY_DESCRIPTION = 'GNSで日常を綴っています。';

$DIARY_DESCRIPTION = 'あおいの日々の記録です。';

この日記の簡単な説明文を編集します。この例では、「あおいの日々の記録です。」という説明になります。

この項目は、「RSS/Atomファイル」に埋め込まれます。

著作権表記
# 著作権表記
$DIARY_COPYRIGHT = 'Copyright (C)2005 GORRY.';

$DIARY_COPYRIGHT = 'Copyright (C)2005 あおい.';

この日記の著作権表記を編集します。この例では、「Copyright (C)2005 あおい.」という著作権表記となります。

この項目は、「RSS/Atomファイル」に埋め込まれます。

更新メールの発信先指定
# メール更新で受け取るメールの発信先メールアドレス (recvmail.pl)
$MAILFROM = 'yourmail@example.net';

$MAILFROM = 'aoi@example.ne.jp';

日記更新メールと認めるメールを限定したい、あるいはしたくないときに編集します。

複数のメールアドレスを指定したいときは、「'aoi@example.ne.jp, akai@example.ne.jp'」などのように、カンマで区切って記述します。

メールアドレスによる制限を外すには、空文字列('')を記述します。

追記モードの指定
# 1でデフォルトが追記モードになる
$MAILADD = 0;

$MAILADD = 1;

日記更新メールで、追記モードをデフォルトにしたいときに編集します。

追記モードをONにすると、すでに日記マスタが存在する日に対して更新メールを送ると、その日記マスタに更新内容が追加されます。

この設定に関わらず、GNS更新メールヘッダに「#ADD」を追加することで追記モードONに、「#OVER」を追加することで追記モードOFFになります。


以上で、編集は終了です。

GNSの環境チェックをする

GNSトップ画面
▲GNSトップ画面

以上が完了したら、メールからの更新を行うためのチェックを、ブラウザから行います。アクセス先は、「GNSプログラムフォルダのindex.html」です。上の例の場合は、「http://www.example.ne.jp/GNS/gns400/index.html」へアクセスしてください。右のような画面になります。

一番下の、[動作環境のチェック]をクリックしてください。


GNSチェック画面
▲GNSチェック画面

動作チェックが正しく終了した場合、右のような出力が得られます。何かエラーが発生した場合は、赤文字で表示されます。

パスワードを登録する

GNSパスワード登録画面
▲GNSパスワード登録画面

動作チェックが終了したら、「GNSプログラムフォルダのindex.html」ページから[パスワードの登録]をクリックして、パスワードを登録します。パスワードを登録しないと、日記を書くことはできません。

パスワード登録画面になったら、「PASSWORD」と「RETYPE PASSWORD」に同じパスワードを入れ、[OK]ボタンをクリックします。パスワードが同じでない場合は、受け付けられません。

すでにパスワードが登録されているときは、パスワードの登録を受け付けません。パスワードを再登録したいときは、ftpやシェルなどから「日記マスタフォルダのkeepディレクトリ」にある"upload.pass"を削除してください。

日記を書く

From: aoi@example.ne.jp
To: aoi@example.ne.jp
Subject: @@GNS-POSTMAIL
--------

01 2004 06 15 Password
#OVER
#MAKEINDEX 1
#UPDATEPING 1

@title いか〜
@category 料理

@s
夕飯にイカを買ってくる。さくさくとさばいて、身は刺身、ゲソはにら・キャベツ・豚バラと野菜炒め、ワタとえんぺら・身とゲソの残りで塩辛に。

@s
・・・したはずだったんだが、最後に刺身を盛って食卓へ・・・というところで床へ皿が落下・・・(汗)。
▲日記更新メールの例

パスワードの登録が終了したら、メーラを起動して、日記マスタとなるメールを書きます。今回は、右のようなメールにします。

メールヘッダ

"--------"までは、メールヘッダです。メール本文に記述するのではなく、お使いのメーラで相当の設定をするようにしてください。

From:

発信者です。今回の設定では、"aoi@example.ne.jp"からしかメール更新を受け付けないように設定しているので、そのように記述します。

To:

受信者です。GNSのメール更新プログラムが起動されるメールアドレスにしてください。

Subject:

表題です。「@@GNS-POSTMAIL」の文で始まっていないと、更新メールとして認識されません。文の末尾には、自由な文字列を追加することができます。

GNS更新メールヘッダ

メール本文に書く、GNSのメール更新プログラムに対して送信するデータです。文法は以下のようになっています。

01 2004 06 15 Password

順に「固定値」「年」「月」「日」「パスワード」となっています。

  • 「固定値」は、"01"で固定されています。必ずこれを書くようにしてください。
  • 「年」「月」「日」は、日記マスタの日付を指定します。
  • 「Password」は、登録したパスワードを平文でそのまま記述します。
日付に「100年以下で、99月99日」の指定をすると、データベースが更新対象となります。データベースの種別は「年」の値で選ぶことができ、「日記マスタフォルダ/keep/」にあるファイル名と対応しています。
10 D-Head ダイジェストページに埋め込まれる、「先頭からメモブロック直前まで」の部分です。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています。
11 D-Memo1 ダイジェストページに埋め込まれる、「日記本文より手前のメモブロック」の部分です。読者に対して告知性の高いメモをここで表示することを想定しています。
20 D-Memo2 ダイジェストページに埋め込まれる、「日記本文より後のメモブロック」の部分です。著者にとってのメモをここで表示することを想定しています。
21 D-Foot ダイジェストページに埋め込まれる、「メモブロックから末尾まで」の部分です。著作権表記・メールアドレス・著者名などをここで表示することを想定しています。
30 B-Head ベースページに埋め込まれる、「日記本文より手前」の部分です。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています
40 B-Foot ベースページに埋め込まれる、「日記本文より後」の部分です。著作権表記・メールアドレス・著者名などをここで表示することを想定しています。
50 L1-Head 年次インデックスページに埋め込まれる、「本文より手前」の部分です。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています。
51 L1-Foot 年次インデックスページに埋め込まれる、「本文より後」の部分です。著作権表記・メールアドレス・著者名などをここで表示することを想定しています。
52 L2-Head カテゴリインデックスページに埋め込まれる、「本文より手前」の部分です。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています。
53 L2-Foot カテゴリインデックスページに埋め込まれる、「本文より手後」の部分です。著作権表記・メールアドレス・著者名などをここで表示することを想定しています。
60 TB-Head トラックバック/コメントページに埋め込まれる、「本文より手前」の部分です。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています。
61 TB-Foot トラックバック/コメントページに埋め込まれる、「本文より後」の部分です。著作権表記・メールアドレス・著者名などをここで表示することを想定しています。
96 Ping
更新Pingの送信先一覧を呼び出します。詳細は、以下をご覧ください。
97 Macro
名前と引数を与えることでさまざまな文を自動生成できる、ユーザーマクロのデータベースファイルを呼び出します。詳細は、以下をご覧ください。
98 Item
日付部などに埋め込まれるアイテム文字列を呼び出します。詳細は、以下をご覧ください。
99 URI
ダイジェストページに埋め込まれる、「先頭からメモブロック直前まで」を表示します。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています。
#OVER / #ADD

"#OVER"で、上書きモードであることを明示します。追記モードのときは"#ADD"と書きます。

省略したときは、config.phの「$MAILADD」の設定内容が反映されます。
#MAKEINDEX 1

更新時にインデックスを作成するときは1、しないときは0にします。

省略したときは、前回更新時の指定を引き継ぎます。

#UPDATEPING 1

更新時に更新Pingを送信するときは1、しないときは0にします。

省略したときは、前回更新時の指定を引き継ぎます。

空行

GNS更新メールヘッダと、日記マスタ本文の間には、空行(改行のみの行)が必要です。

日記マスタ本文

空行のあとは、メールの末尾までが日記マスタの内容となります。

作業中になんらかのエラーが発生した場合は、「[GNSプログラムフォルダ]/tmp/recvmail.log」にエラーログが記録されます。


更新通知メール

「WWW環境」で日記の更新を行うとき、更新内容を記述した「更新通知メール」を発信することができます。このメールは、このページの「メール環境」で使用するものと同一のフォーマットになっています。

これを利用して、「サイトAの日記をWWW環境で更新する」→「更新通知メールをサイトBに送る」→「サイトBの日記を更新する」といったことが可能です。