  Linux Alphanumeric Pager Gateway Mini-HOWTO
  Chris Snell, chris@cs.unm.edu
  29 August 1997
  伊佐治  哲, isaji@mxu.meshnet.or.jp
  2 Feb 1998

  Linuxをゲートウェイにしてポケベルに伝言送信をする方法について解説して
  います。この文書の最新バージョンは以下のPager FTPサイトで入手できます
  ftp://ftp.cs.unm.edu/pub/chris/paging [訳者：ダイアル回線を経由して
  メッセージを送信できる会社などについて情報がありましたら教えてくださ
  い。アップデートした時に追加したいと思います]
  ______________________________________________________________________

  目次

  1. 序文と免責事項
  2. 目的
  3. 必要なもの
  4. 英数字ポケットベルについて
  5. ダイアルアップポケベル回線
  6. ダイアルアップ回線の特定
  7. ゲートウェイの動作のさせかた
  8. 設定をはじめる
     8.1 ソフトウェアの入手
     8.2 sendpageの設定
     8.3 モデムの設定

  9. sendpage Makefile 設定
  10. 設定の続き
  11. MOVING RIGHT ALONG...
  12. 特殊host名の設定
  13. sendmailの設定
  14. "/etc/aliases"の設定
  15. WWWゲートウェイ
  16. もっと情報を集める

  ______________________________________________________________________

  1.  序文と免責事項

  このドキュメントはいろいろな情報をまとめたものです。私はテクニカルライ
  ターではありませんしそうなるつもりもありません。前学期の英作文クラスは
  もうたくさんです。どちらかといえばこのドキュメントはかなり詳しく書かれ
  ています。ちょっと頭を使いsendmailやモデムに関する知識があれば以下の事
  項についてざっと目を通していけるでしょう。とにかく読みましょう。

  コンピュータ/ポケットベル/モデムを壊した、あるいは会社のネットワークで
  試そうとしてネットワークをだめにしてしまったといっても責任はもちませ
  ん。私にではなく誰かにでも愚痴って下さい。システムをだめにしたくないで
  しょうが、 sendmailは技巧的なもので以下のドキュメントに従っていけば確
  実に遊ぶことができると言っておきましょう。

  2.  目的

  このmini-HOWTOはLinuxマシン上で「英数字ポケベルゲートウェイ」を設定す
  る方法について解説しています。ゲートウェイはWWWとインターネット電子メ
  ールシステムの双方からのメッセージを英数字ポケットベルに送ることができ
  ます。これはかなり便利です。というのもポケットベルにメッセージを送るの
  に特別なスキルは必要ないからです。これらにおいてメールとWWWを使いま
  す。

  ** 特別な注意：**

  このドキュメントは非英数字ポケットベル(例えば数字だけといった)や音声ポ
  ケットベルを送ることについては取り扱っていません。これらについては他の
  ドキュメントをさがして下さい。

  3.  必要なもの

  o  １台以上の英数字ポケットベル(``ポケットベルについて '' を参照)。

  o  Linuxが稼働しているマシン

  o  モデム(推薦されているドキュメントを参照)

  o  電話回線

  o  インターネット接続ができること(もしWWWインターフェースやnet-wide メ
     ールインターフェースを使いたい場合)。

  o  コンパイラツール(gcc, makeなど。これらの基本的な使い方についても
     知っておいて下さい)。

  o  sendmail 電子メールハンドラ(多分もう入っていると思います)。

  o  WWWインターフェースを作りたい時はhttpd(webサーバ)を稼働。

  4.  英数字ポケットベルについて

  英数字ポケットベルは有名なポケットベル会社から購入できます(有名でない
  会社のものも;-)) 。値段は$200(約２万円)以下でよいものが手に入ります。
  著者のは$180でした(ちょっと高い)。ポケットベルを買いに行く時は以下のこ
  とを調べておきます：

  o  ブランド品のポケットベルか(例えばモトローラ社といった)。

  o  **重要**。購入するポケベルはあなたのポケベル会社のダイアル回線を経
     由して使えるかどうか。

  o  受信するためにポケベルにメモリが十分あるいかどうか

  o  購入するポケベルのメーカの評判はどうか？ ``ダイアルアップポケベル回
     線''

     いろいろなポケベル製品についてよく調べていませんが、モトローラ社製
     のポケベルを心からお奨めします。私の持っているものの信頼性、耐久性
     を保証します。実際、いろいろな場面でコンクリート地面に落したりして
     いますが、ケースが削れた程度で壊れるようなことはありませんでした。
     以下のページにこれらのポケベル回線の情報が見つかるでしょう：

  モトローラ社のページ http://www.mot.com/MIMS/MSPG/Products/Alpha/

  日本モトローラ社のページ http://www.mot.co.jp/PPD/index.html

  5.  ダイアルアップポケベル回線

  ゲートウェイを動作させるために、ポケベル会社にメッセージを送信するため
  の方法が必要です。メッセージをエンコードしそれを空中に飛ばしあなたのポ
  ケベルに転送します。これはポケベル会社へのダイアルアップ(モデム)接続を
  経由して行われます。この接続を使わないとポケベルゲートウェイを設定でき
  ません。そこでポケベル会社がそのようなダイアル回線をサービスしていると
  いうことはかなり重要です。残念なことに多くのポケベル会社はそのようなダ
  イアル回線を持っていなかったり会社の回線自身についても知らないというこ
  とがよくあります。この回線についてポケベル会社に聞いてみたら、会社が
  「英数字ポケットベルを送信するためのコンピュータソフトウェア」を提供し
  ているかどうか聞くのがよいことに気づきました。そのようなソフトウェアが
  入手できるようになれば、使う必要のあるダイアル回線に賭けて(bet)みるこ
  とができます。

  6.  ダイアルアップ回線の特定

  ダイアルアップ回線は単にリモートコンピュータ上のモデムです(できれば専
  門のマシン)。著者のプロバイダではv.22b(訳注：通信規格v.22bisです)を
  使って 2400bpsで接続できましたが、普通モデムは300〜1200bpsで接続されま
  す。いったん接続が確立されると、コンピュータはTAP(昔はIXO)として知られ
  ているプロトコルを使ってリモートサイトに送ります。このプロトコルの詳細
  は知らなくてもよいですが、興味があれば以下のドキュメントをチェックして
  みて下さい。

  ftp://ftp.cs.unm.edu/pub/chris/paging/ixo.txt

  著者のFTPサイトです。

  7.  ゲートウェイの動作のさせかた

  話を進める前に、電子メール->ポケベルゲートウェイの動作の仕方についてお
  おまかな説明をします。WWWゲートウェイも同様でこれは後半で説明します。

  1. 電子メールを経由してLinuxマシン上の特殊アドレスへポケベルに送りたい
     メッセージを送信します。

  2. sendmailを使ってLinuxマシンはメッセージを受け取りフィルタプログラム
     に発送します。フィルタプログラムはヘッダのメッセージを取り出し送信
     者の名前やメールアドレス、メッセージのタイトルなど重要な情報を解釈
     します。このフィルタは.signatureメッセージも取り出して重要でない情
     報によってポケベルの動きを妨げないようにします。

  3. ポケベルフィルタはsendpageポケットベルソフトウェアにメッセージを渡
     します。

  4. そしてsendpageはポケベル会社のダイアル回線にダイアルし(TAPプロトコ
     ルを使って) メッセージを送信します。

  5. ポケベル会社はポケベルにメッセージを電波で発射します。

  8.  設定をはじめる

  ゲートウェイの設定は以下４つのパートからなります：

  o  sendpageの設定。

  o  (オプション的に)ポケベルゲートウェイ用に追加するDNSエントリ。

     o  複数のIPアドレスを操作するための設定

  o  メッセージ送信を操作するようにsendmailの設定をする。

  o  WWWインターフェースの設定。

  8.1.  ソフトウェアの入手

  ポケベルゲートウェイを設定する必要があるソフトウェア群は著者のホームペ
  ージから入手できます。

  ftp://ftp.cs.unm.edu/pub/chris/paging。

  現在これらのファイルを前記サイトに置いておくよう努力していますが、今後
  別のサイトに置くこともあります。

  8.2.  sendpageの設定

  sendpageはポケベルゲートウェイの重要なプログラムです。このプロジェクト
  を開始するにあたって、このソフトウェアを入手してコンパイルして下さい。
  sendpageソフトウェア以下のFTPサイトで入手できます：

  ftp://ftp.net.ohio-state.edu/pub/pagers/sendpage7a.tar.z

  あるいは著者のマシン：

  ftp://ftp.cs.unm.edu/pub/chris/paging/sendpage/sendpage7a.tar.z

  pagingサブディレクトリを作って、ソフトウェアを集めて展開して下さい
  (tar zxvf)。 sendpageパッケージの設定情報、readme、installファイルを是
  非読んでおいて下さい。sendmail設定の箇所は飛ばして代わりにこの文書に書
  かれている方法を行って下さい。

  sendpageをコンパイルするためにinstallファイルに書かれている手順に従っ
  て下さい。編集する必要のあるsendpage.hファイルの設定について 2,3注意が
  あります。

  o  商用のremedyシステムモニターパッケージを持っていないかぎり、
     "#define arsystem_notifier"行を"/*"、"*/"を使ってコメントアウトして
     あるか確認します。

  o  arsystem_notifier行に従って、定義する必要のあるLinux(POSIX)の行があ
     ります。

             #define posix_signals
             #define posix_open

  o  モデム定義について。

             #define modem_dev "/dev/modem"

  を使うことをお奨めします。デバイスは"/dev/cua0" [com 1]、"/dev/cua1"
  [com 2]など。

  o  モデム初期化について簡単な文字列を使い代わりにNVRAM設定にします。

             #define modem_init atevxh

  o  RTS/CTSフロー制御を使います：

             #define c_flag ctrscts|hupcl

  o  DTRトグルを使います：

             #define toggle_dtr

  興味があれば著者のFTPサイトでsendpage.cfを公開しています。

  ftp://ftp.cs.unm.edu/pub/chris/paging/sendpage/sendpage.h.example

  8.3.  モデムの設定

  著者はZyXEL 1496+を使っています(sendpageでうまく動作します)。他のモデ
  ムについても妥当であると思います。ポケットベル会社のモデム(sendpageで
  は"ポケットベルセンター(Paging Central)" とします)は私のものとは違いま
  すが、この設定で動くかどうか試してみたいと思います。適当な初期文字列に
  ついてはモデムのマニュアルを参照。以下は私の設定例です：

  o  モデムをv.22bis 2400/1200プロトコルに設定する(自動ネゴシエーション
     は不可)。

  o  シリアルポートを1200bpsにする。

     初期文字列(sendpage.h)はすでに処理されている。

  o  数字(非テキスト)は以下のように応答します：

             0  は "OK"
             5  は "CONNECT 1200"
             7  は "BUSY"

  sendpageを動作させるためにモデムにアクセスを可能しておきます。つまりモ
  デムデバイスで読み書き属性になっている必要があります。著者のシステムで
  はsendpageはUIDをユーザー名「sendpage」で実行しています。
  /etc/groupファイルでは、ユーザー「sendpage」がメンバーとなっている
  「modem」というグループがあります。モデム(/dev/cua1)用のデバイスファイ
  ルユーザー「root」、グループ「modem」所有になっています。これは所有者
  とグループ両方で読み書き可能です (chown root.modem /dev/cua1 ; chmod
  ug+w /dev/cua1)。

  9.  sendpage Makefile 設定

  著者がLinuxで使っている構築オプションを挙げます。

          CC = gcc
          CFLAGS =  -DLINUX -O2 -m486 -I/usr/include
          LIBS = -ldb -lbsd

  興味があれば

  ftp://ftp.cs.unm.edu/pub/chris/paging/sendpage/Makefile.example

  で著者のMakefileファイルを公開しています。参照して下さい。

  10.  設定の続き

  うまくいけば一発で正しくsendpageをコンパイルできます。ここで初期テスト
  のためにsendpageを設定します。INSTALLファイルの指示に従って、queueディ
  レクトリを設定しsendpage.cfファイルの設定をはじめます (このファイル
  を/etcに置いています)。

  /etc/sendpage.cf設定の2,3のメモ：

  o  "bofh"に関する全trMapセクションを("#"を使って)コメントアウトしま
     す。

  o  "Global Options"(グローバル変数)セクションは以下のようになります：

     ___________________________________________________________________
     global maxMsgSize=480 maxMsgSplit=5 syslogFacility=LOG_MAIL\
             timeFormat=dayFirst replyToSender=no\
             emailFrom="sendpage@pager.unm.edu (UNM Pager Gateway)"
     ___________________________________________________________________

  o  "Paging Central Definiton"(ポケットベルセンター定義)セクションは以
     下のようになります：

     ___________________________________________________________________
     pc      name=westlink phone=92437243 speed=1200 parity=even\
             databits=7 stopbits=1 protocol=pet-pg1 msgretries=10\
             answertime=25 modemdial=atdt dialer=internal\
             modeminit=atevxh modemdev=/dev/cua1\
                     emailFrom="sendpage@pager.unm.edu (UNM Pager Gateway)"
     ___________________________________________________________________

  o  "Aliases"(エイリアス)セクションです。"chrisauto"定義の意味は、ポ
     ケットベルが送信しした時電子メールを送信せず、私のポケットベルに送
     られる時報システムとして使われるということです。

     ___________________________________________________________________
     alias      chris     9246403.westlink
     alias      chrisauto     9246403.westlink emailReply=no msgIncTime=yes
     alias      nicolas   2515025.westlink
     ___________________________________________________________________

  o  最後に"Profile"セクションです：

     ___________________________________________________________________
     profile default emailReplyErr=yes emailReply=yes msgIncSender=yes\
                     msgIncDate=yes msgIncTime=yes

     profile numeric emailReplyErr=yes emailReply=yes msgIncSender=no\
                     msgIncDate=no msgIncTime=no

     set profile=default
     ___________________________________________________________________

  興味があれば著者のsendpage.cfを公開しているので参照して下さい。

  ftp://ftp.cs.unm.edu/pub/chris/paging/sendpage/sendpage.cf.example

  11.  MOVING RIGHT ALONG...

  よろしい。ここで少なくとsendpageコマンドラインインターフェースに送るこ
  とができたと仮定します。これができない場合はINSTALLファイルをもう一度
  よんで sendpage.h、sendpage.cfを再チェックしてください。そのほかうまく
  いかなかったらIXOメーリングリストに参加してそこで質問して下さい。

  12.  特殊host名の設定

  ポケットベルゲートウェイについて特殊な仮想host名を使いたい場合は (例え
  ば pager.yourcompany.comといった名前)、従う必要のある2,3のステップがあ
  ります。またもし外部仮想host名を設定したくない/できないなら
  ``sendmailの設定''章に飛んで下さい。

     ***** UPDATED 11.12.96 ***********************************************
     もし必要なことがメール->ポケットベルゲートウェイ(WWWではない)だけなら、
     分割UPアドレス(以下説明)は必要ありません。必要なことは以下の指示に従って
     下さい。

       ftp://ftp.cs.unm.edu/pub/chris/paging/Sendmail-and-virtual-domains.txt

     ポケットベルのMXエントリを設定     これを行ったら"SETTING UP SENDMAIL"
     セクションにスキップして下さい。
     **********************************************************************

  新しいhost名を設定するために行う必要のあることの一つ目は、ネットワーク
  管理者に新しいIPアドレスとhost名をDNSテーブルに追加してもらえるかまず
  聞くことです。「pager」というhost名をお奨めしますがなんでもかまいませ
  ん。新しいアドレスと対応するIPナンバーを入手したら、マシンにこれらを追
  加しておきます。これは２つの方法のうちのひとつです。Linuxディストリ
  ビューションのタイプに依存しています。

  o  Linuxカーネル1.2.xxシリーズを使っているなら、IPエイリアスパッチを

     ftp://ftp.cs.unm.edu/pub/chris/paging/ip_alias

     から入手します。README.aliasファイルの指示にしたがって新しく登録し
     たIP アドレスとゲートウェイアドレスをこのファイルで書かれているもの
     に置き換えて下さい。

  o  Linuxカーネル2.0.xxシリーズを使っているなら、カーネルの構築オプショ
     ンで

               Network aliasing
               IP: aliasing support

  を選択して再コンパイルします。スタートアップスクリプト (Slackwareユー
  ザーは/etc/rc.d/rc.inet1、RedHatユーザーは
  /etc/sysconfig/network-scripts/ifup-eth)に以下の行を追加します。

          ifconfig eth0:0 191.59.16.224
          route add -host 191.59.16.224 dev eth0:0

  (訳注：新しいIPアドレスとデバイスの追加。詳しくは「NET-2/3-HOWTO」を参
  照)。 191.59.16.224はあなたの設定するものに置き換えて下さい。

  13.  sendmailの設定

  いくつかエイリアスを作る必要がありその結果sendmailは
  you@somemachine.dink.comとyou@pager.dink.comにメッセージを区別して送る
  ことができます(somemachineとpagerは実際は同じマシンです)。これを行うた
  めにsendmailエイリアスデータベースを設定する必要があります。

  1. ファイルを作ります。/etc/domainaliasはhost名「pager」を実際のhost名
     に変換します。著者のマシン(luckenbach)では変換ファイルは以下のよう
     になっています：

             chris@pager.unm.edu      cjs-pager@luckenbach.unm.edu
             droux@pager.unm.edu      nicolas-pager@luckenbach.unm.edu

  これは/etc/domainaliasです。これでほとんどできています。以下のスイッチ
  を付けてコンパイルしたsendmailバイナリを使います；

          -DNDBM -DNEWDB

  作ったdomainalias.dbファイルを読む必要のあるデータベース操作コードに許
  可を与えます。

  2. makemapユーティリティがあることを確認します(sendmail配布パッケージ
     の一部です)。準備していなかったらコンパイルしておいて下さい。これは
     必要ではないかもしれません。hash, dbm, btreeがサポートされていよう
     がなかろうがチェックして下さい。これがどのように行われているかつぎ
     のステップをチェックして下さい)

             # cd /usr/src/sendmail-8.7.x/makemap
             # rm Makefile makemap
             # make CFLAGS='-m486 -O2 -I../src -DNDBM -DNEWDB' LDFLAGS='-s
                     -lgdbm -ldb' makemap
             # cp makemap /usr/bin

  3. /etc/sendmail.cfに以下の行を追加します。sendmailが新しい仮想host名
     のメールを許可するためです：

          Cw pager.yourdomain.com

  4. /etc/domainaliasesをデータベースフォーマットに変換します：

          makemap btree domainaliases.db < domainalisaes

  5. /etc/sendmail.cfに別の行を追加します。これはコンパイルした
     domainaliases.db 変換ファイルをsendmailに指示するためです：

          Kdomainaliases btree /etc/domainaliases.db

  6. ルールセットについて/etc/sendmail.cfに正確に書かれていることを確認
     して下さい。エントリはTABで区切られています。SPACEは使わないで下さ
     い！！これらはS98ルールセットを挿入しています。

     o  PRE 8.7.1

        ________________________________________________________________
                R$+  < @ $+ . >         $: $1 < @ $2 > .
                R$+  < @ $+ . > $*              $: (domainaliases $1@$2 $: $1 < @ $2 > $3 $)
                R$+  < @ $+ . > $*              $: (domainaliases $2 $: $1 < @ $2 > $3 $)
                R$+  < @ $+ > .                 $: $1 < @ $2 . >
        ________________________________________________________________

     o  POST 8.7.1

        ________________________________________________________________
                R$+< $+. >              $1< $2 >
                R$+< $+ >               $: < > $(domainaliases $1$2 $)
                R< > $+ @ $*            $: < $1 > $(domainaliases * @ $2 $)
                R< $+ > * $*            $: < > $1 $2
                R< > $*                 $: $>3 $1
        ________________________________________________________________

  7. sendmailデーモンをいったんkillして再スタートし、新しい設定を有効に
     します。

         /sbin/killall sendmail
         sendmail -bd -q15m

  8. 最後に新しい設定が正しく行われるか確認します。エラーメッセージ
     は/var/log/maillogに出力されます。

     ___________________________________________________________________
     lonestar~>  sendmail -bt
     ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
     Enter <ruleset> <address>
     > 0 chris@PAGER.phys.unm.edu
     rewrite: ruleset  0   input: chris @ pager . phys . unm . edu
     rewrite: ruleset 98   input: chris @ pager . phys . unm . edu
     rewrite: ruleset 98 returns: chris @ pager . phys . unm . edu
     rewrite: ruleset 97   input: chris @ pager . phys . unm . edu
     rewrite: ruleset  3   input: chris @ pager . phys . unm . edu
     rewrite: ruleset 96   input: chris < @ pager . phys . unm . edu >
     rewrite: ruleset 96 returns: chris < @ pager . phys . unm . edu . >
     rewrite: ruleset  3 returns: chris < @ pager . phys . unm . edu . >
     rewrite: ruleset  0   input: chris < @ pager . phys . unm . edu . >
     rewrite: ruleset 98   input: chris < @ pager . phys . unm . edu . >
     rewrite: ruleset  3   input: cjs-pager @ lonestar . phys . unm . edu
     rewrite: ruleset 96   input: cjs-pager < @ lonestar . phys . unm . edu >
     rewrite: ruleset 96 returns: cjs-pager < @ lonestar . phys . unm . edu . >
     rewrite: ruleset  3 returns: cjs-pager < @ lonestar . phys . unm . edu . >
     rewrite: ruleset 98 returns: cjs-pager < @ lonestar . phys . unm . edu . >
     rewrite: ruleset  0 returns: $# local $: @ cjs-pager
     rewrite: ruleset 97 returns: $# local $: @ cjs-pager
     rewrite: ruleset  0 returns: $# local $: @ cjs-pager
     ___________________________________________________________________

  9. もしこれがちゃんと動作しなかったり理解できなかった場合はsendmailの
     エキスパートに相談してみて下さい。
  14.  "/etc/aliases"の設定

  sendpageにメッセージを送るフィルタに電子メールメッセージをパイプするた
  めに /etc/aliasesを設定する必要があります。前章
  でchris@pager.unm.edu、cjs-pager@luckenbach.unm.edu の作りかたを実際に
  やってみました。これを動作させるために /etc/aliasesファイルに以下の行
  を追加して、メールを全てcjs-pager に送ります：

     cjs-pager: "|/usr/local/bin/sendpagefilter chris"

     ^^^^^^^^^    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^
     あなたが作る  これはポケベルフィルタ(以下)  これはsendpage.cfで定義した
     エイリアス。  へのフルパスです。            ユーザー名です。

  この例で使われているフィルタは

  ftp://ftp.cs.unm.edu/pub/chris/paging/paging_filter.tar.gz にありま
  す。 READMEファイルの指示を読んでフィルタをコンパイルして下さい。
  /usr/local/binといったディレクトリに置きます。 newaliasesコマンドを新
  しいエイリアスを有効にするために実行します。これらちゃんと行われたら、
  ポケットベルゲートウェイは動作します。 /etc/aliasesに作ったエイリアス
  にメールを送ってみて下さい(例えば cjs-pagerに)。動作したら前章で作った
  仮想メールエイリアスにメールを送ってみてください(例え
  ばchris@pager.unm.eduに)。以上が動作したら成功です！！

  15.  WWWゲートウェイ

  ここの詳しく書きません。読者がHTMLのスキルとCGIについて知っていること
  を前提としています。ゲートウェイはCGIスクリプトをwebブラウザとsendpage
  プログラム間の通信をするために使います。サンプルスクリプトとHTMLページ
  は

  ftp://ftp.cs.unm.edu/pub/chris/paging/example_www_gateway.tar.gz

  から入手できます。このスクリプトは２つの追加プログラムを利用していま
  す。

     uncgi
        CGIデータをCGIプログラミングを簡単にするためにshell環境変数に変
        換します。

     d2utxt
        ^Mキャラクタをsendpageでページメッセージから落します。

  これらのユーティリティはサンプルHTMLがあったFTPサイトと同じディレクト
  リにあります。コンパイル中出てくる指示を読んでください。これは簡単で
  す。

  16.  もっと情報を集める

     IXOメーリングリスト
        参加するには本文にsubscribeと書いて送ってください。

        ixo-request@plts.org

     Sendpageメーリングリスト
        参加するにはUNIXプロンプトで

            echo 'subscribe' | Mail sendpage-hackers-request@lists.net.ohio-state.edu

     と実行してください(訳注：あるいはbodyにsubscribeと書いて送って下さ
     い。subject は必要ありません)。

     著者
        著者は大学生で仕事も忙しいので、質問するまえに３回はよく調べてか
        らにして下さい。ただし会社の方で著者の助言が必要だという場合はぜ
        ひ連絡して下さい。

