home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / unmaintained / mini / Pager < prev    next >
Text File  |  1998-01-14  |  22KB  |  571 lines

  1. [ 15 January 1998
  2.   The Linux Pager mini-HOWTO is not being maintained by 
  3.   the author any more.  If you are interested in maintaining the 
  4.   Pager mini-HOWTO, please get in touch with me at 
  5.   <gregh@sunsite.unc.edu>. ]
  6.  
  7. Originally Drafted: Sun Jun 23 17:55:14 MDT 1996
  8. Revised:  29 August 1997 
  9.  
  10.                               The
  11.  
  12.               Linux Alphanumeric Pager Gateway Mini-HOWTO
  13.  
  14.                             by Chris Snell
  15.                           chris@unm.dorm.net
  16.                     http://www.cs.unm.edu/~chris
  17.  
  18.  
  19.               +-----------------------------------------+
  20.               | The latest version of this document is  |
  21.               | always available at the Pager FTP site: |
  22.               |  ftp://ftp.cs.unm.edu/pub/chris/paging  |
  23.               +-----------------------------------------+
  24.  
  25.  
  26. PREFACE & DISCLAIMER:
  27. ---------------------
  28.  
  29. This document sucks.  I'm not a technical writer, nor do I plan to be one.
  30. I had a hard enough time pasing my English Composition class last semester.
  31. If anything, this document provides too much detail.  If you have half a 
  32. brain, some sendmail experience and some experience with modems, skim this
  33. thing.  Otherwise, read on.
  34.  
  35. If you blow up your computer/pager/modem or ruin your company network trying
  36. to set this up, go whine to your mother.  Most likely, you won't mess up
  37. anything but I should warn you that sendmail is a tricky thing to play with
  38. and you will definitely be playing with it if you follow this document.
  39.  
  40. PURPOSE:
  41. --------
  42.  
  43. This mini-HOWTO will describe how to set up an alphanumeric paging 
  44. gateway on any linux machine.  Your gateway will be able to send messages 
  45. originating from both the World Wide Web and the Internet e-mail system 
  46. to your alphanumeric pager.  This is especially convienent, because no 
  47. special skills are required for someone to send a message to your pager.  
  48. All they must be able to do is use e-mail or the World Wide Web.
  49.  
  50.                          **SPECIAL NOTE: **  
  51. This document does not cover the setup of paging gateways which are intended 
  52. to send messages to non-alphanumeric (ie numbers-only) pagers or voice pagers.
  53. You'll need to look elsewhere for that information.
  54.  
  55.  
  56. REQUIREMENTS:
  57. -------------
  58.  
  59. - one or more alphanumeric pagers (see the ABOUT ALPHANUMERIC PAGERS section)
  60. - a machine running linux
  61. - a working modem (documentation reccomended!)
  62. - a telephone line
  63. - an Internet connection (if you wish to use the WWW interface and the 
  64.   net-wide e-mail interface)
  65. - compiler tools (gcc, make, etc. and some basic knowledge of their use.)
  66. - the sendmail electronic mail handler (you probably have this)
  67. - a working httpd (web server) if you want to create a WWW interface
  68.  
  69.  
  70. ABOUT ALPHANUMERIC PAGERS:
  71. --------------------------
  72.  
  73. Alphanumeric pagers are available from most reputable paging companies 
  74. (and even some non-reputable ones ;-)).  The prices range, but you should 
  75. be able to pick up a good one for less than $200.  I paid $180 for mine 
  76. (and probably paid too much).
  77.  
  78. Here are some things to look for when you go shopping for your pager:
  79.  
  80.   - Is this a name brand (ie. Motorola or the like) pager?
  81.   - *MOST IMPORTANT* Does this pager support paging via a dialup line 
  82.     provided by your pager company? (See THE DIALUP PAGING LINE section)
  83.   - Does it's memory have enough room for the pages you wish to recieve?
  84.   - How reputable is the company?  (See THE DIALUP PAGING LINE section)
  85.  
  86. I don't work for any pager manufacturers but I wholeheartedly reccommend 
  87. the Motorola line of pagers.  I own one myself and will testify to their 
  88. reliability and durability.  In fact, mine has been dropped onto the 
  89. concrete on many occaisions and did not sustain so much as a chipped case.
  90. You can find this line of pagers on Motorola's web site at:
  91.     
  92.              http://www.mot.com/MIMS/MSPG/Products/Alpha/
  93.  
  94.  
  95. THE DIALUP PAGING LINE
  96. ----------------------
  97.  
  98. In order for your gateway to work, we need a way to deliver the messages 
  99. to your paging company, which encodes them and transmits them over 
  100. the air to your pager.  This is done via a dialup (modem) connection 
  101. with your paging company.  Without this connection, you cannot setup 
  102. a paging gateway.  Therefore, it is very important that your paging 
  103. company have such a dialup line.  Unfortunately, many paging companies 
  104. either do not have such a dialup line or do not know about the line they 
  105. have.  When inquiring with a paging company about this line, I found it 
  106. helpful to ask if they could provide "computer software to send an 
  107. alphanumeric page with".  If they make available such software, you can 
  108. bet that they make the dialup line availble that is necessary to use it.  
  109.  
  110. SPECIFICS ON THE DIALUP LINE
  111. ----------------------------
  112.  
  113. The dialup line is simply a modem on a remote computer (or possibly some 
  114. kind of specialized box).  The modem usually connects at 
  115. 300-1200bps, although some (including my provider's) connect using v.22b 
  116. at speeds up to 2400bps.  Once the connection is made, your computer 
  117. sends the page to the remote site by using a protocol known as TAP 
  118. (formerly known as IXO).  You do not need to know the details of this 
  119. protocol, but if you are interested, check out the following document on 
  120. my ftp site:
  121.  
  122.                ftp://ftp.cs.unm.edu/pub/chris/paging/ixo.txt
  123.  
  124. HOW YOUR GATEWAY WILL WORK
  125. --------------------------
  126.  
  127. Before we proceed, I will provide a brief explanation of how the 
  128. e-mail->pager gateway will work.   The WWW gateway is similar and will be 
  129. explained later.
  130.  
  131.   1.   A message intended for your pager is sent by someone via e-mail to 
  132.        a special address on your linux machine.
  133.  
  134.   2.   Your machine, using sendmail, accepts the message and routes it to 
  135.        a filter program, which strips the message of it's header and parses 
  136.        out important information like the sender's name and e-mail address 
  137.        and the subject of the message.  This filter also strips the 
  138.        message of any .signature lines so that they do not clog your pager 
  139.        with unimportant information.
  140.  
  141.   3.   The paging filter passes the message onwards to the "sendpage" 
  142.        paging software which queues it for delivery.
  143.  
  144.   4.   Sendpage then dials your paging company's dialup line and (using 
  145.        TAP) sends the message.
  146.  
  147.   5.   Your paging company then beams the message to your pager over the 
  148.        radio waves.
  149.  
  150.  
  151. BEGINNING THE SETUP
  152. -------------------
  153.  
  154. The setup of the gateway will consist of four parts:
  155.     - setting up sendpage
  156.     - (optionally) getting a special DNS entry added for your paging gateway
  157.           - setting up linux to handle multiple IP addresses
  158.     - setting up sendmail to handle the message routing
  159.     - setting up the World Wide Web interface
  160.  
  161.  
  162. GETTING THE SOFTWARE
  163. --------------------
  164.  
  165. Every peice of software necessary to set up this product can be obtained 
  166. from my home site, ftp://ftp.cs.unm.edu/pub/chris/paging.  I will try to 
  167. keep these files current but will also list the alternate sites for 
  168. the packages required.
  169.  
  170.  
  171. SENDPAGE SETUP
  172. --------------
  173.  
  174. Sendpage is the most important component of your paging gateway.  To get 
  175. anywhere in this project, you will need to obtain this software and 
  176. compile it on your machine.  The sendpage software can be obtained via 
  177. ftp at:
  178.  
  179.         ftp://ftp.net.ohio-state.edu/pub/pagers/sendpage7a.tar.Z
  180.  
  181. or from my machine:
  182.  
  183.         ftp://ftp.cs.unm.edu/pub/chris/paging/sendpage/sendpage7a.tar.Z
  184.  
  185. Create a "paging" subdirectory somewhere.  Fetch this software and unpack it 
  186. (tar zxvf) in the paging directory.  
  187.  
  188. At this point, I would strongly suggest that you read over all the 
  189. configuration information and README and INSTALL files in the sendpage 
  190. package.  However, you should probably ignore all the discussion on the 
  191. setup of sendmail and instead rely on my procedure.
  192.  
  193. Follow the instructions in the INSTALL file for compiling sendpage.  Here 
  194. are a few notes about the settings in the sendpage.h file which you will 
  195. need to edit:
  196.  
  197. - Make sure you have the "#define ARSYSTEM_NOTIFIER" line commented out 
  198. (using "/*" and "*/") unless you own the commercial Remedy system monitor 
  199. package.
  200.  
  201. - Following the ARSYSTEM_NOTIFIER line, there are a few Linux (POSIX) 
  202. specific lines that need to be defined:
  203. #define POSIX_SIGNALS 
  204. #define POSIX_OPEN
  205.  
  206.  
  207. - For the modem definition, I recommend using:
  208. #define MODEM_DEV "/dev/modem" 
  209.      or "/dev/cua0" [com 1] or "/dev/cua1" [com 2] etc....
  210.  
  211. - For the modem init, I use the simple string and rely on NVRAM settings 
  212.   instead:
  213. #define MODEM_INIT ATEVXH
  214.  
  215. - I use RTS/CTS flow control:
  216. #define C_FLAG CTRSCTS|HUPCL
  217.  
  218. - and DTR toggle
  219. #define TOGGLE_DTR
  220.  
  221. *** If you are interested, my sendpage.cf is available in it's entirety
  222. from my ftp site at:
  223.  
  224.     ftp://ftp.cs.unm.edu/pub/chris/paging/sendpage/sendpage.h.example
  225.  
  226.  
  227. CONFIGURING YOUR MODEM 
  228. ----------------------
  229.  
  230. I use a ZyXEL 1496+ which seems to work fine with sendpage.  With other 
  231. modems, your milage may vary (possibly for the better).  Although your 
  232. paging company's modem (referred to by sendpage as "Paging Central") 
  233. could very well be different from mine, you may want to try this setup to 
  234. see if it works.  You should have your modem manual handy as a reference 
  235. for the proper init string.  Here is what I have set:
  236.  
  237. - Modem set to v.22bis 2400/1200 protocol (*no* auto-negotiate)
  238. - Serial port at 1200bps
  239.  
  240. Your init string (sendpage.h) should already take care of:
  241.  
  242. - Numeric (non-text) responses [these are a must!]   ie:
  243.     0 for "OK"
  244.     5 for "CONNECT 1200"
  245.     7 for "BUSY"
  246.  
  247.  
  248. In order for sendpage to work, it must be able to access the modem.  This 
  249. requires read/write permissions to the modem device.  On my system, 
  250. sendpage is run set-uid to the username "sendpage".  In my /etc/group 
  251. file, I have a group called "modem" of which the user "sendpage" is a 
  252. member.  The device file for my modem (/dev/cua1) is owned by user "root" 
  253. and group "modem".  It is readable and writeable by both the owner and 
  254. the group (chown root.modem /dev/cua1 ; chmod ug+w /dev/cua1).  
  255.  
  256. SENDPAGE MAKEFILE SETUP
  257. -----------------------
  258.  
  259. Here are the build options I use for Linux:
  260.  
  261. CC = gcc
  262. CFLAGS =  -DLINUX -O2 -m486 -I/usr/include
  263. LIBS = -ldb -lbsd
  264.  
  265. *** If you are interested, my Makefile is available in it's entirety
  266. from my ftp site at:
  267.  
  268.     ftp://ftp.cs.unm.edu/pub/chris/paging/sendpage/Makefile.example
  269.  
  270. CONTINUING THE SETUP
  271. --------------------
  272.  
  273. Hopefully, you were able to get sendpage to compile correctly on the 
  274. first try.  Now you must set up sendpage for the initial testing.  
  275. Following the INSTALL file's instructions, you will set up the queue 
  276. directory and begin setting up the sendpage.cf file (I keep mine in /etc).
  277.  
  278. A few notes on setting up the /etc/sendpage.cf:
  279.  
  280. - I had to comment out (using "#") the entire trMap section for "bofh", 
  281. leaving only the trMap section for "std" in order to get sendpage to work.
  282.  
  283. - My "Global Options" section looks like:
  284.  
  285. global maxMsgSize=480 maxMsgSplit=5 syslogFacility=LOG_MAIL\
  286.         timeFormat=dayFirst replyToSender=no\
  287.         emailFrom="sendpage@pager.unm.edu (UNM Pager Gateway)"
  288.  
  289. - My "Paging Central Definiton" section looks like:
  290.  
  291. pc      name=westlink phone=92437243 speed=1200 parity=even\
  292.         databits=7 stopbits=1 protocol=pet-pg1 msgretries=10\
  293.         answertime=25 modemdial=atdt dialer=internal\
  294.         modeminit=atevxh modemdev=/dev/cua1\
  295.                 emailFrom="sendpage@pager.unm.edu (UNM Pager Gateway)"
  296.  
  297. - Here is my "Aliases" section.  The 'chrisauto' definition does not send 
  298. an e-mail reply when a page is sent and is used for hourly system stats 
  299. that are sent to my page.
  300.  
  301. alias      chris     9246403.westlink
  302. alias      chrisauto     9246403.westlink emailReply=no msgIncTime=yes
  303. alias      nicolas   2515025.westlink
  304.  
  305. - And finally, the "Profile" section:
  306.  
  307. profile default emailReplyErr=yes emailReply=yes msgIncSender=yes\
  308.                 msgIncDate=yes msgIncTime=yes
  309.  
  310. profile numeric emailReplyErr=yes emailReply=yes msgIncSender=no\
  311.                 msgIncDate=no msgIncTime=no
  312.  
  313. set profile=default
  314.  
  315. *** If you are interested, my sendpage.cf is available in it's entirety 
  316. from my ftp site at:
  317.  
  318.     ftp://ftp.cs.unm.edu/pub/chris/paging/sendpage/sendpage.cf.example
  319.  
  320.  
  321. MOVING RIGHT ALONG...
  322. ---------------------
  323.  
  324. Alright.  At this point, I am assuming you have been able to at least 
  325. send a page to your pager using sendpage's command-line interface.  If 
  326. you haven't been able to do this, re-read the INSTALL file and re-check 
  327. your sendpage.h and sendpage.cf.  If all else fails, subscribe to the IXO 
  328. mailing list and ask there.
  329.  
  330. SETTING UP A SPECIAL HOSTNAME
  331. -----------------------------
  332.  
  333. If you want to have a special virtual hostname for your paging gateway (ie. 
  334. pager.yourcompany.com), there are a few steps that you will need to 
  335. follow.  If you do not want to (or cannot) set up an extra virtual 
  336. hostname, skip ahead to the section entitiled "SETTING UP /etc/aliases".
  337.  
  338. ***** UPDATED 11.12.96 ***********************************************
  339. Setting up a separate UP address (as described below) is not necessary
  340. if all you need is a mail->pager gateway [no www].  If this is all you
  341. need, follow the instructions found at:
  342.  
  343.   ftp://ftp.cs.unm.edu/pub/chris/paging/Sendmail-and-virtual-domains.txt
  344.  
  345. to set up a MX entry for your paging hostname.  When you've done this,
  346. skip ahead to the "SETTING UP SENDMAIL" section.
  347. **********************************************************************
  348.  
  349. The first thing you need to do to set up your new hostname is to ask your 
  350. network adminstrator to add a new ip address and hostname to the DNS 
  351. tables.  I would reccommend using the hostname "pager" but it really 
  352. doesn't matter.
  353.  
  354. Now that you have your new address and the associated IP number, you need 
  355. to add it to your machine.  This will be done in one of two ways, 
  356. depending on the type of your linux distribution.
  357.  
  358. * If you use the Linux kernel 1.2.xx series
  359.  
  360.     Get the IP aliasing patches from:
  361.  
  362.     ftp://ftp.cs.unm.edu/pub/chris/paging/ip_alias
  363.  
  364.         and follow the instructions in the file README.alias,
  365.     substituting your newly-assigned IP address and gateway
  366.     address for the ones mentioned in this README file.
  367.  
  368. * If you are using Linux kernel 2.0.xx and above
  369.  
  370.     Enable the following options for your kernel and recompile:
  371.  
  372.           Network aliasing
  373.       IP: aliasing support
  374.  
  375.     In your startup scripts (/etc/rc.d/rc.inet1 for Slackware users,
  376.     /etc/sysconfig/network-scripts/ifup-eth for RedHat users) add
  377.     the following lines:
  378.  
  379.     ifconfig eth0:0 191.59.16.224
  380.     route add -host 191.59.16.224 dev eth0:0
  381.  
  382.         replacing 191.59.16.224 with your new IP address
  383.  
  384.  
  385. SETTING UP SENDMAIL
  386. -------------------
  387.  
  388. We need to make some aliases so that sendmail can distinguish between a 
  389. message sent to you@somemachine.dink.com and you@pager.dink.com, 
  390. when "somemachine" and "pager" are actually the same machine.  To do 
  391. this, we need to set up a sendmail alias database.
  392.  
  393. The following information is based upon the info I got from
  394. http://www.qosina.com/~awm/apache/sendmail.html .
  395.  
  396. ***  Create a file, /etc/domainalias with translations from the pager 
  397. hostname to the "real" hostname.  On my machine (luckenbach), my translation 
  398. file looks like this:
  399.  
  400. chris@pager.unm.edu      cjs-pager@luckenbach.unm.edu
  401. droux@pager.unm.edu      nicolas-pager@luckenbach.unm.edu
  402.  
  403. That's it for that file.  We are almost done now.  I hope you have a 
  404. sendmail binary that was compiled with the following switches:
  405.  
  406.      -DNDBM -DNEWDB
  407.  
  408. These are to enable the database-handling code needed to read the 
  409. domainalias.db file that we are about to create.
  410.  
  411. ***  Make sure that you have the makemap utility (part of the sendmail 
  412. distribution).  Compile it like this if you haven't already:
  413.  
  414.         ( This may not be neccessary, check to see if hash, dbm, or 
  415.         btree are supported or not, check next step on how to do this. ) 
  416.         # cd /usr/src/sendmail-8.7.x/makemap
  417.         # rm Makefile makemap
  418.         # make CFLAGS='-m486 -O2 -I../src -DNDBM -DNEWDB' LDFLAGS='-s 
  419.         -lgdbm -ldb' makemap
  420.         # cp makemap /usr/bin
  421.  
  422. ***  Add a line to your /etc/sendmail.cf to make sendmail accept mail for
  423.      the new virtual hostname:
  424.  
  425.      Cw pager.yourdomain.com
  426.  
  427. ***  Compile /etc/domainaliases into a database format:
  428.  
  429.      makemap btree domainaliases.db < domainalisaes
  430.  
  431. ***  Add another line to your /etc/sendmail.cf to tell sendmail about
  432.      the domainaliases.db translation file which we just compiled.
  433.  
  434.      Kdomainaliases btree /etc/domainaliases.db
  435.  
  436. ***  Now for the rule-set, make sure you type it exactly into /etc/sendmail.cf
  437.  
  438.         The entries are seperated by a TAB field NOT SPACES!!!! 
  439.         These are to be inserted INSIDE the S98 Ruleset.
  440.  
  441.  PRE 8.7.1 
  442.  
  443.         R$+  < @ $+ . >         $: $1 < @ $2 > .
  444.         R$+  < @ $+ . > $*              $: (domainaliases $1@$2 $: $1 < @ $2 > $3 $)
  445.         R$+  < @ $+ . > $*              $: (domainaliases $2 $: $1 < @ $2 > $3 $)
  446.         R$+  < @ $+ > .                 $: $1 < @ $2 . >
  447.  
  448.  POST 8.7.1 
  449.  
  450.         R$+< $+. >              $1< $2 >
  451.         R$+< $+ >               $: < > $(domainaliases $1$2 $)
  452.         R< > $+ @ $*            $: < $1 > $(domainaliases * @ $2 $)
  453.         R< $+ > * $*            $: < > $1 $2 
  454.         R< > $*                 $: $>3 $1
  455.  
  456. *** Now you must kill your sendmail daemon and restart it for the new 
  457.     configurations to take effect.
  458.  
  459.     /sbin/killall sendmail
  460.     sendmail -bd -q15m
  461.  
  462.  
  463. *** Finally, test your new configuration to make sure you did it correctly,
  464.     Check /var/log/maillog for any possible error messages.
  465.  
  466. lonestar~>  sendmail -bt
  467. ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
  468. Enter <ruleset> <address>
  469. > 0 chris@PAGER.phys.unm.edu
  470. rewrite: ruleset  0   input: chris @ pager . phys . unm . edu
  471. rewrite: ruleset 98   input: chris @ pager . phys . unm . edu
  472. rewrite: ruleset 98 returns: chris @ pager . phys . unm . edu
  473. rewrite: ruleset 97   input: chris @ pager . phys . unm . edu
  474. rewrite: ruleset  3   input: chris @ pager . phys . unm . edu
  475. rewrite: ruleset 96   input: chris < @ pager . phys . unm . edu >
  476. rewrite: ruleset 96 returns: chris < @ pager . phys . unm . edu . >
  477. rewrite: ruleset  3 returns: chris < @ pager . phys . unm . edu . >
  478. rewrite: ruleset  0   input: chris < @ pager . phys . unm . edu . >
  479. rewrite: ruleset 98   input: chris < @ pager . phys . unm . edu . >
  480. rewrite: ruleset  3   input: cjs-pager @ lonestar . phys . unm . edu
  481. rewrite: ruleset 96   input: cjs-pager < @ lonestar . phys . unm . edu >
  482. rewrite: ruleset 96 returns: cjs-pager < @ lonestar . phys . unm . edu . >
  483. rewrite: ruleset  3 returns: cjs-pager < @ lonestar . phys . unm . edu . >
  484. rewrite: ruleset 98 returns: cjs-pager < @ lonestar . phys . unm . edu . >
  485. rewrite: ruleset  0 returns: $# local $: @ cjs-pager
  486. rewrite: ruleset 97 returns: $# local $: @ cjs-pager
  487. rewrite: ruleset  0 returns: $# local $: @ cjs-pager
  488.  
  489. *** If this didn't work or you just don't understand, consult your local
  490.     sendmail expert.
  491.  
  492.  
  493. SETTING UP /etc/aliases
  494. -----------------------
  495.  
  496. We're almost done.  I swear.
  497.  
  498. Now you need to set up your /etc/aliases file to handle the piping of the 
  499. e-mail message to the filter which sends the message to sendpage.  In the 
  500. previous section, I demonstrated how I made chris@pager.unm.edu 
  501. point to cjs-pager@luckenbach.unm.edu.  To make this work, I had to 
  502. add a line to my /etc/aliases file to send all mail to cjs-pager to the 
  503. filter.  That line is:
  504.  
  505. cjs-pager: "|/usr/local/bin/sendpagefilter chris"
  506.  
  507. ^^^^^^^^^    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^
  508. This is the   This is the full path to the  This is a username that
  509. alias that    paging filter.  (see below)   you defined in your
  510. you created                                 sendpage.cf
  511.  
  512.  
  513. The filter used in this example can be obtained at:
  514.  
  515.  ftp://ftp.cs.unm.edu/pub/chris/paging/paging_filter.tar.gz
  516.  
  517. Read the instructions in the included README file, compile the filter,
  518. and place it in a directory such as /usr/local/bin.
  519.  
  520. You must now run the 'newaliases' command to process your new alias(es).
  521.  
  522.  
  523.  
  524. With this complete, your paging gateway should be working.  Try sending 
  525. mail first to the alias which you created in /etc/aliases (in my example, 
  526. cjs-pager).  If this works, try sending mail to your virtual mail alias 
  527. which you created in the previous section (in my example, 
  528. chris@pager.unm.edu).  If this works, you are done!!!
  529.  
  530.  
  531. THE WWW GATEWAY
  532. ---------------
  533.  
  534. I am not going to write much here.  I'm assuming that you have some HTML 
  535. skills and have used CGI scripts before.  Your gateway will use a CGI 
  536. script to communicate between the web browser and the sendpage program.  
  537. I have made an example script and HTML page available:
  538.  
  539.    ftp://ftp.cs.unm.edu/pub/chris/paging/example_www_gateway.tar.gz
  540.  
  541. This script utilizes two additonal programs, uncgi (to translate CGI data 
  542. into shell environment variables for easy CGI programming) and d2utxt to 
  543. strip out the ^M characters in a page message that make sendpage choke.  
  544. These utilities are available in the same directory on the ftp site that 
  545. the example HTML is found in.  Read the instructions that come with them 
  546. to compile them.  This should be easy.   
  547.  
  548.  
  549. GETTING MORE HELP
  550. -----------------
  551.  
  552. The IXO mailing list
  553.  
  554.    To subscribe,  send email to ixo-request@plts.org with the single word 
  555.    "subscribe" in the first line of an otherwise-blank message.
  556.  
  557. The Sendpage mailing list
  558.  
  559.    To subscribe, issue this command from your unix prompt:
  560.  
  561.     echo 'subscribe' | Mail sendpage-hackers-request@lists.net.ohio-state.edu
  562.  
  563. Me
  564.  
  565.    I'm a busy college student and employee so think three times before asking
  566.    me for help.  However, if you are a company and wish to hire me for 
  567.    consulting, I will be happy to talk with you.
  568.  
  569.       Chris Snell
  570.       chris@cs.unm.edu
  571.