Mercurial > hg > Members > kono > nitros9-code
view 3rdparty/packages/uucpbb/doc/uucpbb.doc @ 2494:98e7cb7b3dda
Prevents RS-232 bit at $FF20 from being toggled. RG
author | robertgault |
---|---|
date | Sun, 04 Apr 2010 02:17:24 +0000 |
parents | e9380475f28e |
children |
line wrap: on
line source
UUCPbb MANUAL TABLE OF CONTENTS 1 Introduction 1 1.1 Hardware Requirements 2 1.1.1 Serial Ports 2 1.1.2 Disk Drives 2 1.1.3 Modems 3 1.1.4 Other Software 3 2 This Manual 4 3 Setting Up 5 3.1 Basics 5 3.1.1 Programs Needed 5 3.1.2 Required Commands 5 3.1.3 Installation Procedure 6 3.2 Parameters File 8 3.2.1 Node Name 8 3.2.2 Sitename 9 3.2.3 Other Parameters 9 3.3 Dialers File 9 3.4 Devices File 9 3.5 bin.list File 10 3.6 Systems File 10 3.7 Miscellaneous Files 10 3.7.1 Environment Variables 10 3.7.2 Other Files 11 3.7.3 Password File 11 3.8 Installing Mail 12 3.8.1 New Installations 12 3.8.2 Upgrading Rick's Mail 12 3.8.3 Upgrading Palm 12 3.9 CRON/MCRON 12 3.10 Chat Scripts 13 3.11 Preventing Lockups 14 4 Testing 15 4.1 Finding a Feed 15 4.2 Running as Master 16 4.3 Running as Slave 18 5 Setting Up News 19 5.1 Turning On Your News Feed 20 6 UUCP? What is it? How Does It Work? 20 6.1 What UUCP is NOT 20 6.2 What UUCP is 21 6.3 How Do You Get There From Here? 23 7 UUCP Command 23 8 Fileserver 24 9 Final Word 24 1 Introduction OS-9 UUCP 1 - Introduction UUCP (UNIX-to-UNIX Copy) has been used for many years on UNIX systems. UUCP has developed a worldwide network of computers which pass e-mail and Usenet news. For a long while, OS-9 users were left out. This all changed when Mark Griffith and Rick Adams separately wrote their own original OS-9/6809 UUCP programs for the CoCo allowing us to join the fun. Rick's code (and UCPbb) is patterned after HoneyDanBer (HDB) UUCP, and was written solely by him. It is the code that he uses at my UUCP site, "ccentral", running on a Color Computer 3 with 40 meg hard disk. "Ccentral" was the first Coco3 UUCP/Usenet node to be officially registered on Usenet. Not being one to leave well enough alone :-), I worked on improving the software. UUCPbb is the result. This suite of programs is based, mostly, on Rick's work with some parts and ideas borrowed from Mark's original programs. My idea was to make the programs more flexible, easier to install, maintain and add more features. I hope others will find the changes worth the wait. I want to thank both Rick and Mark for first efforts. I learned a lot from studying and trying to improved on their work. Both Rick and Mark gave me permission to modify their code and release it to the OS-9 Community. This UUCP enables you to call into another remote site running UUCP and exchange email. This will network your Color Computer into a worldwide network of hundreds of thousands of UUCP sites, and give you the ability to exchange email and Usenet news with anyone on those sites. UUCPbb would not be where it is without the help of my Beat'n Bash (tm) team. These fellow help quite a lot with comments and criticisms to make everything even better. Boisy Pitre <boisy@os9er.waukee.ia.us> did the port to OS-9/68K. Boisy and Brad Spencer <brad@anduin.eldar.org> both worked hard on getting UUCICO to properly talk to a number of other versions of UUCP as well as squash other bugs. I hope we nailed them all. Chuck Owens <chuck@czos9.trystero.com>, Jeff Shepler <sysop@miliways.aldhfn.org> and Tom Kocourek <tomk@westgac3.dragon.com> also helped in finding and squashing bugs along with their suggestions for changes. Jeff ported his mailer, Palm, to work with UUCPbb. Now users have a choice of mailers. Thanks Jeff! Thanks for all the help gang! Now let's make this thing even better. :-) UUCPbb MANUAL 2 1.1 - Hardware Requirements The UUCPbb package will compile and run on OS-9/6809 and OS-9/68K systems. The minimum requirements are: o Any 6809 or 6309 microprocessor machine running OS-9/6809 Level 2. Level 1 will NOT work. o Any 68xxx microprocessor running OS-9/68K. o Any system running OS-9000 although at this time, the code has not been tested under OS-9000. It probably requires minor tweaking in order to compile. This is in the works. o At least 512K of RAM. It should be possible to run UUCPbb on a 128K CoCo, but this has never been tested. o A hard drive or large floppy disk (720K or greater) with enough room to install the system. o A Hayes compatible modem 1.1.1 - Serial Port A hardware serial port is a must for UUCP. The "bit banger" port simply will not work. UUCP does not necessarily require a modem in order to work. Two machines running UUCP can have direct serial connection between them. This quite common in the UUCP world. It can also be done with UUCPbb. Setting up such a connection will be covered later. 1.1.2 - Disk Drives A hard drive is highly recommended. The size of the drive depends largely on how much, if any, Usenet news you plan on receiving. Netnews can take up a large chunk of disk space. (Approximately 30 MB of news is passed around Usenet every day.) If you are only planning on receiving little or no news, UUCP can be comfortably run on a 10 or 20 meg hard drive. This is, of course, assuming the hard drive is not almost full. UUCP can also be run on a floppy-based system. This is not recommended as UUCP is highly disk intensive. Floppies are rather slow on a CoCo 3. A no-halt floppy controller is almost a requirement on a CoCo. I say "almost" because UUCP can be made to run using the older halting (Tandy, etc) controllers. The setup is not pretty, but it can be made to work. I know. I had to use it during a hard disk crash. If you are really interested in the details, I'll be happy to pass them along. :-) A floppy system needs at least two 720K drives. Because of the limited storage, such a system is limited to e-mail. News is very unlikely to work. 3 Modems OS-9 UUCP 1.1.3 - Modems If you will be communicating with another UUCP system by phone, you will need a modem. Most of the modems sold today should work provided they have the following: o Support the Hayes command set. o The ability to recall the default modem configuration when the ATZ0 command is issued or the DTR line between your computer and the modem is dropped. If your modem lacks these features, UUCP may not work properly. If you plan on allowing systems to call in, your modem should support auto-answering. This is not an absolute requirement. Many UUCP sites only call out for security reasons. Lack of an auto-answer feature will prevent you from running UUCP if you are the one doing the calling. 1.1.4 - Other software You must also have the following software: o cron, mcron or some other background task scheduler. MCRON is included with UUCPbb o TSMon or similar program to monitor the port for incoming calls. This is only need if you will be accepting incoming UUCP calls. If you will only be calling out, TSMON is not necessary. o (CoCo only) Shell+ v2.1 or later. UUCPbb makes heavy use of Shell+'s features. The stock Microware shell on the CoCo should work. It has not been tested however. In addition, UUCPbb as it comes uses the following default directories: /DD/SYS/UUCP - The UUCP system files directory /DD/LOG - The log files directory If /dd is not your primary drive, you will need to edit the uucp.h file before compiling. The mail, spool and news directories are user configurable. The procedure for doing this will be described later. UUCPbb MANUAL 4 2 - This manual This manual is not intended to teach your all about the inner works of UUCP, networks or electronic mail; although a basic description of UUCP will be given toward the end. It assumes you have some basic understanding of how to use OS-9; things such as creating/editing files, creating directories and setting the permissions of file and directories. Various utilities are included in the package to make administering UUCP relatively easy. Running a UUCP site can be complex, though it need not be. Sometimes it can be difficult getting a UUCP started. Once started UUCP usually runs without problem. I will be happy to help in any way I can. If you questions about UUCPbb in general or on CoCo specifically, you can contact me. If you have questions about running UUCPbb on under OSK (OS-9/68K), you can contact Boisy Pitre. Right now, I don't have an OSK system :-( so I cannot answer questions related to OSK specific problems. Boisy's address is: boisy@os9er.waukee.ia.us If you have questions or problems related related to UUCICO not wanting to properly talk to other UUCICOs, follow the instructions in UUCICO.MAN on how to report the problems. You can send these to me or Brad Spencer at brad@anduin.eldar.org. UUCPbb is not public domain. It is copylefted software released under the GNU General Public License. A copy of the GNU GPL is included in the package. See the file COPYING for your rights under the GNU license. You cannot sell UUCPbb. You are free to modify the code and give copies of this away. Both Rick and I would like to see UUCPbb become an OS-9 Community project. The details of this will be described later. Share and enjoy! Bob Billson (1994 April 2) internet: bob@kc2wz.bubble.org UUCP: uunet!kc2wz!bob 5 Setting Up OS-9 UUCP 3 - Setting Up 3.1 - Basics 3.1.1 - Programs Needed uucico call a UUCP neighbor and send/receive files uucp queue a job to transfer a file to or from a UUCP neighbor mailx read pending mail, or queue up mail to be sent Palm Jeff Shepler's mailer used in place of mailx (optional) readnews read Usenet news articles postnews queue a job to post a Usenet news article expire delete outdated Usenet news articles uuxqt perform incoming work queued up to be done rmail deliver mail rnews deliver news uuclean clean uucp spool directories uulog view the UUCP or fileserv log files fileserv mini-listserver adduser create user accounts login logon to the system (CoCo optional) cnvrtmail convert Rick's older style mail to new format (CoCo) subscribe get newsgroups the system receives unsubscribe stop reading particular newsgroups uuencode encode binary files for mailing uudecode restore encoded binary files received chown change ownership of file/directory (CoCo) 3.1.2 - Required Commands I have tried to make it easy to set up UUCP on both the CoCo and OSK machines. It will require you to create and edit some files. The following step-by-step instructions will guide you through the installation. The procedure is identical on OS-9/6809, OS-9/68K and OS-9000 systems. ==NOTE== you must be the superuser (user ID 0) when through the whole procedure. Where there are differences, the following notation will be used: COCO Indicates instructions apply to the CoCo only. Either new installation or upgrades from Rick's original UUCP. RICK Indicates instructions only apply to a CoCo where Rick's original UUCP program is already installed. OSK Indicates instructions which apply only to OSK systems. You need the following standard OS-9 commands: RENAME, COPY, LOAD, LIST, UNLINK, and MAKDIR You also need the C compiler, MAKE utility and your favorite text editor. UUCPbb MANUAL 6 COCO -Highly recommended is using Carl Kreider's replacement of the C compiler's cc1, CC. Version 2.5.0 is available on chestnut.cs.wisc.edu. The file name is cc250.lzh. REQUIRED, however, is Carl's replacement for the original Microware clib.l library. The latest version is on chestnut.cs.wisc.edu as the file clib1990.lzh. The original Microware clib.l cannot be used to compile UUCPbb. OSK -Either Microware's Ultra C compiler or C compiler v3.2 can used. All the necessary commands must be in your current execution directory. 3.1.3 - Installation Procedure Step 1 If your current data directory, does not contain the C source code already, change to the proper directory. The docs files for UUCPbb are in the directory DOCS. DOCS has three subdirectories: MAN, DOC and SAMPLE. MAN and DOC contain files read to be printed. SAMPLE contains examples of the various files which will later be copied to another directory. It would be a good idea to print out the files in the MAN and DOCS directories. They will be referred to shortly. Step 2 Using your text editor, the following instruction applies to the file: uucp.h. There are certain areas of this file you should not change. These are clearly marked. Read through uucp.h to see if you need to make any changes for your system. The defaults should work for most systems. If you do not have a /DD descriptor in your bootfile or /DD is not your main drive, you may need to change the pathnames in parts of uucp.h. For example, there may be no /DD/SYS on your /DD drive. You may need to make it /H0/SYS instead. DO NOT change thing anything in parts marked off limits. Evil things may befall you otherwise. OSK Go to Step 4. Step 3 COCO -Using your text editor, edit the file: makefile.coco. If you are not using Carl Kreider's CC, edit the 'CC = cc' line to the appropriate C compiler executive. For example, if you are using the stock Microware C comiler, this line would be changed 7 Installation Procedure OS-9 UUCP to 'CC = cc1'. You may need to make other changes to the makefile. The comments in makefile.coco will help you. The '#' is a comment. Anything to the right of the '#' is ignored by MAKE. To uncomment something simply delete the '#' just to the left of the desired item. Step 4 You are ready to compile. The makefile you are going to use depends on your system. For the CoCo, you use: makefile.coco. If you compiling using Ultra C, use: makefile.ucc. If you are using the OSK C compiler v3.2, you use: makefile.c32. So you run: make -f <your_makefile> COCO -Compile time on the CoCo is approximately one hour. Step 5 You are now ready to create the needed directories: /DD/LOG uucp log files /DD/SYS/UUCP uucp systems files directory /DD/USR/SPOOL spooled work directory /DD/USR/SPOOL/MAIL mailbox directory /DD/USR/SPOOL/NEWS Usenet news directory /DD/USR/SPOOL/UUCP uucp spool directory /DD/USR/SPOOL/UUCPPUBLIC uucp public spool directory /DD/USR/SPOOL/UUCP/SAND spooled work to/from "sand" /DD/HOME user login directories On some systems, the user login directories are in /DD/USER. If you already have user home directory on your system, you do not need the create a different one. There does not seem to be a standard on OS-9. :-( ==NOTE== The directory SAND is only an example. Each UUCP system you talk to needs its own directory in /DD/USR/SPOOL/UUCP. RICK On Rick's original UUCP, the following directories were used: /DD/SYS/UUCP uucp system files directory /DD/SPOOL spooled work directory /DD/SPOOL/MAIL mailbox directory /DD/SPOOL/NEWS Usenet news directory /DD/SPOOL/UUCP uucp spool directory /DD/SPOOL/UUCPPUBLIC uucp public spool directory /DD/SPOOL/UUCP/SAND spooled work to/from "sand" /DD/USER user login directories You can keep this directory structure and simply create the /DD/LOG UUCPbb MANUAL 8 Step 6 Set the directory permissions as follows: /DD/LOG owner read, write, execute; public write /DD/HOME owner & public read, write, execute /DD/SYS/UUCP owner read, write, execute /DD/USR/SPOOL owner read, write, execute; public read, write /DD/USR/SPOOL/MAIL owner & public read, write, execute /DD/USR/SPOOL/NEWS owner read, write, execute; public read, write /DD/USR/SPOOL/UUCP owner read, write, execute /DD/USR/SPOOL/UUCPPUBLIC owner & public read, write, execute /DD/USR/SPOOL/UUCP/SAND owner read, write, execute Step 7 Time to copy some files. RICK BEFORE copying the files save copies of all your original files in /DD/SYS/UUCP to a temporary directory or on to a floppy. Change to the directory /DOCS/SAMPLE in your current data directory. Copy all the files in this directory to /DD/SYS/UUCP. Step 8 Change to the directory /DD/SYS/UUCP You are now ready to edit the various system files. This may sound more complicated than it really is. Just take your time. Be sure to read the specified docs files before making changes. 3.2 - Parameters File Start up your text editor on the file: Parameters. Refer to the file parameters.doc while editing this file. 3.2.1 - Node Name You'll need to pick out a name for your UUCP site. You can't pick out just any name; it has to be different than any of the other some 100,000 sites out there already. Needless to say, this means that all the good ones are taken. ;-) This name is fairly important. It must be from 1 to 8 (but no more than 8) alphanumeric characters. Punctuation or embedded spaces are not allowed. Many system administrators pick a name which has special meaning to them. For example, my node name is "kc2wz" which is my Amateur Radio (ham) callsign. Upper and lower case are treated the same. Lower case is normally used when referring to a node. 9 Node Name OS-9 UUCP It's fairly easy for a UUCP administrator at an existing site to check on possible name conflicts and to find all the UUCP nodes close to you. If you don't happen to know one, try sending mail to me: bob@kc2wz.bubble.org. Tell me what city and state you live in. I'll try to get a list of nodes near you, with phone numbers and names of people at each site to contact. 3.2.2 - Sitename The sitename is not the same as your node name although it also refers to your machine. UUCPbb uses this parameter to identify your fully qualified domain name. In order to have a fully qualified domain, you need a feed which is connected on the Internet who willing to act a gateway to the Internet for you. UUCP does NOT mean you are connected to the Internet or on the Internet. If you do not have a domain name, you use your nodename with '.uucp' attached to the end for this parameter. 3.2.3 - Other parameters Using the parameters.doc file a guide, you can finished editing the Parameters file. When you have a UUCP feed, you will need to correctly fill in the uucphost, newshost, and inhost or bithost parameters. 3.3 - Dialers File The next file to edit is the Dialers file. Dialers contains info on all your modems. The last field in the Devices file refers to an entry in Dialers. The sample Dialers file explains the format of the entry. If you are simply going to use a Hayes compatible modem without any of its special features such as MNP-4, MNP-5, etc, the file can be left unchanged for now. The 'hayes' entry will suffice. If you wish to take advantages of your modem's additional features, the sample file will give you an idea of how to create other entries. 3.4 - Devices file The next file to edit is the Devices files. Devices contains info on all your serial ports. The third field in the Systems file refers to an entry in Devices. With this file you can set up the various ports of your system to handle more than one modem. Or it gives you a way to use the same modem and port in various configurations. The entry 'Hayes' will suffice for situations which do not take advantage of a modem's special features, such MNP-4. UUCPbb MANUAL 10 3.5 - bin.list File This is a simple file which contains a list a extentions commonly used to indicate binary files. Mailx and FileServ check bin.list to see if a file needs to be uuencode before sending it. You can add to this file if you need to. 3.6 - Systems The Systems file contains info on how to access the remote site. There must be an entry for each of the UUCP systems that you call and/or calls you. The sample file gives the details for the entry format. If the remote system has more than one phone number, you need to create a separate entry for each number. UUCICO will then call each number in the order it occurs. The sample Systems file explains the entry format. 3.7 - Miscellaneous Files There are a few miscellaneous files which UUCPbb uses. Not all of them are required, but a few are. 3.7.1 - Environment Variables UUCPbb makes use of environment variables. The ones used are: HOME, MAIL, EDITOR, SHELL, and TERM. HOME is the directory containing the users' login directories. MAIL is the directory containing the users' mailbox directories. EDITOR is the name of the text editor to be used when composing mail or news articles. SHELL is the name of the user's shell. TERM is the type of terminal the user is on. The CoCo does not have environment variables, so we need to emulate them. The default system environment on the CoCo is kept in the file: /DD/SYS/profile. Each user on the CoCo has a 'profile' file in their home directory which contains the user's environment. See the doc file: profile.doc for information on setting up these files. OSK has true environment variables. The system administrator of the machine needs to set MAIL, EDITOR, SHELL, HOME, and TERM for the each user. You will need to refer to your OSK docs on how to do this. 11 Other Files OS-9 UUCP 3.7.2 - Other Files UUCPbb makes use of other files such aliases and mailrc. There are separate doc files which describe the contents of this files so it will not be repeated here. On the CoCo, each individual's UUCP related files, except 'profile', are kept in the directory UUCP. This is subdirectory in each user's login directory. On an OSK machine, the individual's UUCP related files are kept in each user's root login directory. 3.7.3 - Password File Your password needs to be properly set up for users to be able to login and read or send mail or news. User ID 0 in the password file is the "superuser" account. You may name this account after yourself, or you may name it "root" or "sysop". Currently, UUCICO runs as the superuser so you need at least this account in the password file. You should create a separate account on your system for use when reading/posting email and news. Leave the the superuser account for doing program development and system maintenance. If you plan on accepting incoming UUCP calls, you will need to create an that remote systems log into. In the UNIX world, this account name is often "nuucp". It does not always have a password since the only program this account should every run is UUCICO Also make sure there is a "postmaster" account, too. Any incoming mail that goes to a name that can't be found in the password file goes to "postmaster". Also, "postmaster" is an established standard name on most UNIX sites to which administrative mail is sent. In other words, if someone at another site wants to send mail to someone in charge at your site, not just Joe User, and they don't want to spend the time figuring out just who IS in charge over there, they send to "postmaster". This user is defined in the /DD/SYS/UUCP/Parameters file by the parameter 'errorsto'. It is not a good idea to try to use an alias to redirect mail to another user instead of making a separate account. Another account is "daemon". This user is for future expansion of UUCPbb. It is not a regular user and receives no mail. It will be used it future updates to run certain tasks. You can use the utility ADDUSER to easily create new accounts. A sample /dd/sys/password file looks something like this: root,rootpass,0,128,/dd/cmds,/dd,ex shell nuucp,uucppass,1,190,/dd/cmds,/dd/usr/spool/uucppublic,ex uucico -r postmaster,postpass,2,128,/dd/cmds,/dd/user/postmaster,ex shell rickadams,rickpass,3,128,/dd/cmds,/dd/user/rickadams,ex shell user1,rickpass,4,128,/dd/cmds,/dd/user/user1,ex shell user2,rickpass,5,128,/dd/cmds,/dd/user/user1,ex shell UUCPbb MANUAL 12 3.8 - Installing Mail 3.8.1 - New Installations If you are installing UUCP for the first time, you may need to manually create the user mailboxes. The main mailbox directory is defined by the parameter 'maildir' in the /DD/SYS/Parameters file. Inside this directory are subdirectories. The names of these subdirectories are the same as the login names of each user. These are the user's mailboxes. Each message is kept as a separate file in the user's mailbox directory. If you already have users installed on your system, you merely need to create a mailbox directory for each user. It is important that the directory is owned by user it is named for. That is, the user ID in the password file and the owner ID as give by 'dir e' ('dir -e' for OSK) must be the same. If they are not, the user will not be able to read their mail. On the CoCo you can use the CHOWN utility included with UUCPbb to set the ownership of the mailbox. If you do not have users installed on your system, you need to run the ADDUSER utility. ADDUSER creates the necessary directories such as the mailbox and home directories. If you choose to use Jeff Shepler's mailer, Palm, (available on chestnut.cs.wisc.edu), follow Jeff's instructions for compiling and installing it. 3.8.2 - Upgrading Rick's mail RICK -If you are upgrading from Rick's original UUCP on the CoCo, you have two choices. If you are running Rick's original mail program, you will need to run the utility CNVRTMAIL. See the doc file CNVRTMAIL.MAN for details on how to use the utility. The mail format will be changed from the old form to the new one. 3.8.3 - Upgrading Palm RICK -If you are upgrading from Rick's original UUCP on the CoCo and are using Jeff's mailer, Palm, you need to use Jeff's conversion utility to change the Palm for use with UUCPbb. The utility and instructions are in the file CONVERTPALM.LZH which is included with UUCPbb. 3.9 - CRON/MCRON Although UUCP can be run manually, it really is meant to be run by a task scheduler. UUCPbb comes with Boisy Pitre's task scheduler MCRON. You can also use CRON which is available on chestnut.cs.wisc.edu, Delphi, and Compuserv as well a number of landline BBSs. Some OS-9 BBS software, especially if it is capable of handling Fidonet, often has some sort of event scheduler as part of the software. Any of these can be used to run the various UUCP tasks. 13 CRON/MCRON OS-9 UUCP For example, here part of my crontab file: # Daily 1 0 * * * /dd/etc/script/dailycleanup& # expire Usenet articles 30 4 * * * expire& # UUCP polls 40 0,3,6,9,12,15,18,21 * * * uucico fdurt1 -t3& 15 3 * * * uucico hvymetal -t3& Some explanation is in order. dailycleanup is a shell script which runs daily housekeeping tasks, such as running UUCLEAN. This occurs at one minute after midnight every day. EXPIRE runs at 4:30 am every day to delete old Usenet news articles. UUCICO calls the remote site 'fdurt1' at 40 minutes after the hour every three hours starting at midnight of every day. UUCICO also calls the remote site 'hvymetal' every day at 3:15 in the morning. The call to each remote is tried three times before giving up for that session. If any mail was received during the call, UUCICO will fork UUXQT to process the mail. This works fine on the CoCo--usually. Some BBSs have the modem kill switch set to ON. The result is that when UUXQT is chained to by UUCICO, it gets killed off. As an attempt to prevent this, you can try using the -o option of UUCICO. This should cause UUXQT to be started as an orphan. Without a parent, the modem kill switch should not effect it. This option has not been thoroughly tested yet, so bug reports and/or fixes are welcome. The other alternative is to put a separate entry in the crontab file to run UUXQT as certain times after a call to your feed is through. If you run UUXQT with the system name of 'ALL', all the remotes listed in the Systems file will be check for newly arrived work. 3.10 - Chat Scripts Take a look at this example Systems file: sandstorm Any sacia 2400 555-1234 ogin: uucp word: glorp The sixth and subsequent field(s) are called the "chat script" for that system. This is a number of "expect/send" pairs, giving what to expect the other system to say when you try to log in, and what to say back in response. So in the above example, we would wait till we saw the string "ogin:" (actually, "login:"; chat scripts are usually abbreviated this way), then respond with "uucp". The remote system would then say "word:" (actually, "Password:"), and we'll respond with "glorp" (the password). This gives step by step directions for logging into the remote system that are used by uucico when it calls it up. There is a similar chat script in the Dialers file entry for a specific modem, starting with the second field. UUCPbb MANUAL 14 There are a number of special sequences you can put in chat scripts: "" expect (or send) nothing \b a backspace character (hex 08) \d a 1-second delay \s a space (hex 20) \r carriage return (hex 0D) \n a linefeed character (hex 0A) \N a NUL character (hex 00) \T the phone number given in the Systems file \\ a backslash \t a TAB character (hex 09) \NNN ASCII character NNN in octal \^? send a control character, for example: \^A sends Ctrl-A \c suppress carriage return at end of send string A carriage return is automatically sent after each "send" string unless the "c" sequence is used at the end of the string. 3.11 - Preventing Lockups Included in UUCPbb is a patch written by Boisy Pitre for the CoCo. This file is call SCF14.AR. Applying this patch to SCF allows you to make your serial ports non-shareable. Why would you want to do this? Well, let's say you are calling a BBS and CRON decides it is time for UUCICO to make a call--on the same port. When your terminal program and UUCICO try to use the same port, things will lock up real tight! With the non-shareable patch installed, UUCICO will be able to detect that the port is already in use and not interfer. Right now, I'm an not sure how to accomplish the same thing under OSK. If someone has the proper procedure, please let me know. In the meantime, OSK users will have to be aware that there may be a conflict in a situation similar to the above one happens. 15 Testing OS-9 UUCP 4 - Testing Now that you have reached this point, you should be ready to see if it all works. 4.1 - Finding a Feed In order to test UUCICO, you will need to find an existing UUCP system willing to provide you with a UUCP mail feed. Tell them you'd like to poll their system a couple times a day to send and pick up your mail. The important thing to get across is that you'll be dialing THEM, on your dime, you'll be only calling them a few times per day, and the volume will be fairly low, since you're a one-person "leaf" site. (A "leaf" site is one with only one UUCP connection.) In other words, you're only picking up mail for one person, and not providing mail service to lots of other people downstream from you. They'll also be concerned that you call in regularly, so that your UUCP traffic doesn't queue up endlessly on their system waiting for you to call in. If you sort of forget about calling in for a few weeks, and a few hundred messages spool for you on the remote system, you will most probably get a concerned and/or annoyed phone call. :-) Or they mail yank your feed altogether. Remember, you are requesting to use their system, not abuse it. Also, make sure they understand you are NOT a business, NOT a BBS (unless, of course, you ARE one :-) ), you are an individual doing this for hobby purposes. If they think you're a business, they'll likely tell you to go somewhere where you can hook up to a UUCP site for a fee, since you ought to be able to pay for it. If they think you're a BBS, they'll be worried about how much traffic they're going to be saddled with, at their expense. (On the other hand, some site administrators are sympathetic towards BBS operators, and will be very helpful. It depends on the person.) How do you find such a site? You can look in the UUCP map data for your state for all the sites near you, then call the contact phone numbers provided in the map data trying to find someone agreeable to your request. They may say no, they may give you a mail feed for free, or they may offer to provide it for a fee. If they agree to give you a feed for free, you're getting quite a deal, and you definately should put that person on your Christmas card list. :-) This is a Catch-22, of course. You can't set up a UUCP node unless you can find a site to connect to, but you can't find a site to connect to unless you have access to UUCP. The solution is to somehow contact someone who already has access to a UUCP site and who is also fairly knowledgeable about how it all works. If you can find such a person (asking around at most universities usually yields paydirt), so much the better. If not, well, send me email (bob@kc2wz.bubble.org) as I'll see it I can help. UUCPbb MANUAL 16 UUCP administrators tend to be technically minded middle-level people, many of whom have a soft spot in their heart for eager young "hackers" (in the original sense of the world), and an affectionate and almost paternal love of their system, to the point that you'll be made to feel like you've just asked to take out one of their daughters. And, in a way, you have. :-) Be cheerful, respectful and polite, and see what happens. The UUCP administrators at the site you connect to may ask you to only call during certain specific hours, to not tie up his/her modems during normal business hours. That's a common restriction; agree to it if asked, and don't even think about fudging on it. UUCP keeps log files of all the traffic to and from your site, so he/she can check up on you, and probably will. Blow it, and you may find your email feed yanked in a hot minute, and you'll be out looking for another site all over again. If you find a site willing to provide a mail feed, you'll be given: One or more phone numbers to a modem on their system The UUCP node name of their system An account and password for UUCP access Hours in which you may access the system The UUCP coordinator may want to know: Your voice phone number Your modem phone number The name of your UUCP node If they ask you "what is your modem number, and when can I call you", tell them that you'll be calling THEM, and that they should put "Never" as the time they can call you. This is usually more handy than having them call you. Or, if you want your machine to be on a lot, tell them the hours you can accept UUCP related calls from their machine. There is a way you can set up your system to accept UUCP calls in "slave" mode, so that your UUCP neighbor can connect to your machine in the background. This will be covered shortly. 4.2 - Running as Master When a system calls out, it is running in the Master mode. In order to do this you will need to have your modem set up to return the result codes in English. UUCICO looks for the "CONNECT" string to let it know the remote modem has answered. You should also have your modem set up to drop the connection if the remote modem hangs up. The entries for 'hayes' in the Device and Dialers files should work with most situations. Sometimes, however, it is necessary to play with the modem settings to get it to work properly. The settings in Devices and Dialers for 'zoom' are for a Zoom V.42bis modem. These settings have worked very well for more than a year on my system. 17 Running as Master OS-9 UUCP Once you have installed the system and setup the various files and have at least one real UUCP site in the Systems file, you are ready to test your installation. Be sure that you do not have TSMon or any other process running on the port your modem is connected to. Begin by typing: uucico sitename If everything is setup correctly, UUCICO should dial the remote site, connect, login and perhaps even transfer some mail. Once it finished type this from the OS-9 prompt: OS9: uulog You should get something like this on your screen: uucp fdurt1 (Mar 28-15:30:29) Calling system fdurt1 on port /t2 uucp fdurt1 (Mar 28-15:30:55) Login successful uucp fdurt1 (Mar 28-15:30:56) Handshake successful (protocol 'g') daemon fdurt1 (Mar 28-15:30:57) Request to send 'D.fdurt1b10aM' daemon fdurt1 (Mar 28-15:31:45) Request to send 'X.fdurt1X10aK' uucp fdurt1 (Mar 28-15:31:55) Call complete (76 seconds) uuxqt fdurt1 (Mar 28-15:32:05) rmail D.fdurt1b10aM "kc2wz!bob" If you see anything else or a FAILED in the "Call complete" line, something is wrong and you will have to correct it. The error message are pretty much self-explanatory. If you failed to login, you probably have something wrong in the chat script. Getting the chat script right is sometimes the hard part. Try calling the remote while using a terminal program. Capture the login sequence without any sort of filtering. Note the sequence you have to follow in order to properly login. Once you can login yourself, just duplicate the sequence in your chat script. Make sure the system administrator of your feed (and you) have your login name and password correct. A difference of only one letter will prevent you from logging in. If you logged successfully, but UUCICO fails afterward, you can run UUCICO with a higher debug level to narrow down the problem. If everything went well, congratulations!! Welcome to the UUCP world. :-) UUCPbb MANUAL 18 4.3 - Running As Slave When a system is set up to take incoming UUCP calls, it is in the Slave mode. To run your machine in slave mode, create a line like this in your /DD/SYS/password file: nuucp,uucppass,2,190,/dd/cmds,/dd/usr/spool/uucppublic,ex uucico -r The user number in this example is "2", but this is not important. Note the higher priority of 190, and the "uucico -r" command. "-r" specifies slave mode. Use your own password instead of "uucppass", of course. Then you need to set your system and modem up for slave mode. Create a shellscript similar to this: echo ate0q1s0=1 >/t2 tsmon /t2& echo done Any UUCP neighbor that wants to call you while you're in slave mode will need a "chat script" for your system, to know how to log in. Here is a sample one. This example assumes my modem's phone number is 555-1234, my uucp account is "nuucp", with a password of "itsme": kc2wz Any hayes 2400 5551234 "" r ogin: nuucp word: itsme This line, or one very much like it, will go into the "Systems" file on your UUCP neighbor. At this point that system will know how to call your system and log in using slave mode, whenever it might feel the need to do so. This assumes that your system is ready to accept the call. If you don't plan on accepting calls in slave mode at all, but just want to call them, tell them to put "Never" in that field. If your systems needs to call out, it will first have to kill TSMon on the port, other UUCICO will not be able to call out. 19 Setting Up News OS-9 UUCP 5 - Setting Up News You need to create the following files: 1. /DD/SYS/UUCP/active This file will contain a list of all the Usenet newsgroups you want to receive, one per line. When setting up your system, format each line as in the following example: rec.arts.anime 0 0 comp.sys.m6809 0 0 sci.astro 0 0 comp.os.os9 0 0 (Each line consists of the newsgroup name followed by the minimum and maximum article number in the system, which starts out at 0 and 0 for a new newsgroup.) 2. /DD/SYS/UUCP/distributions This file contains a list of all the Usenet distributions for your site, one per line. Usenet "distributions" control how widely your posted news article will be sent. Some distributions are, for example: world anywhere in the world na north america usa the united states You will have other distributions in your area, as well. Here are the distributions for my area: nj New Jersey ny New York ne Northeast Typically there will be a statewide distribution for your state named after its two-letter code, i.e. "tn" for Tennessee, etc. So figure out all your local distributions, then add them to the world, na and usa distributions, and put them in the distributions file, one per line, like this: world na usa nj ny UUCPbb MANUAL 20 5.1 - Turning On Your News Feed Once you figure out which newsgroups you want, you have to tell the system administrator of your UUCP neighbor what you want to get. Tell him/her, for example, "I'd like a batched, compressed newsfeed of comp.os.os9, comp.sys.m6809, and ba.test." (This is an example ONLY; check to see what newsgroups would be best for your tastes, and for your area.) This implementation can handle batched or unbatched, uncompressed or uncompressed news, but batched compressed news is most efficient. The OS-9/6809 can only handle 12-bit compression, which is usually the default. OSK systems can handle 16-bit compression. You must have the utility COMPRESS in your execution directory. OS-9 COMPRESS is available on Delphi, Compuserve and chestnut.cs.wisc.edu. Do not use the 16-bit version of COMPRESS for OS-9/6809, it is WAY too slow for news. You won't receive any news, or be able to post any news, until your UUCP neighbor adds a line to their /usr/lib/news/sys file that specifies that your system is to receive the specified newsfeed. Also, if your neighbor doesn't receive one or more of the newsgroups you request, you won't be getting any articles for it, either, and the administrator will probably point that out. The administrator will add your line to his/her sys file in response to your request for a news feed. You'll eventually start receiving your news articles, usually in one big chunk once per night. If you run uucico with debug output turned on, you'll see "rnews" getting executed at that point, in addition to the usual "rmail." Make sure all your files are in readiness on your site before you request your newsfeed turned on; you'll have a heck of a time once the articles start flowing in, otherwise. 6 - UUCP? What is it? How Does It Work? 6.1 - What UUCP is NOT UUCP is NOT a BBS program. UUCP is NOT a terminal program. Running UUCP does NOT mean you are connected to the Internet. Although some sites on the Internet provide a way to access their services via email, this does not mean you are on the Internet. Connecting to the Internet is a bit more complicated the running UUCP. 21 What UUPC is OS-9 UUCP 6.2 - What UUCP is UUCP stands for "Unix-to-Unix Copy", and was an early file transfer protocol supplied with most versions of the UNIX operating system. It has since been adapted to run on numerous other machines as well, including IBM PC's, Macintoshes, Amigas, and so on. UUCP is more properly a suite (collection) of programs which work together to transfer mail, news and files. Each computer running UUCP is known as a UUCP "site", or "node". There could be one or may users on a particular node. Each UUCP site has one or more "UUCP neighbors" with which files, email, and possibly Usenet news articles are exchanged: * Files can be transferred from one system to another via the UUCP command. * Email can be sent or received. It travels from system to system, one "hop" at a time, until it reaches its intended destination. * Usenet is a worldwide network for the exchange of messages, sort of like a very large, diversified, sprawling BBS. Usenet "newsgroups" exist that are devoted to just about any conceivable topic. If one of your UUCP neighbors receives a Usenet newsgroup on a topic you're interested in, you can arrange to have it sent to your site too, and can post messages to that newsgroup that are sent out for worldwide distribution, as well. Some people may recognize this as being somewhat similar to the way that the Fidonet network works. Each UUCP node has a unique name. Email is sent to users at another site by addressing the mail to the "path" to that site, which consists of the sequence of sites between your site and the ultimate destination site, followed by the user account name on the destination, separated by exclamation marks. For example, in the following hypothetical example, the nodes "coco3", "sandstorm", "gigsys", "papabear", "homebase", "garage3", and "tatooine" are interconnected in the following manner: coco3----------sandstorm-------------gigsys----------papabear \ / \ \ / \ / \ \ / \ / \ \ / \ / \ \ / \ / \ \ / homebase garage3 tatooine UUCPbb MANUAL 22 So, "coco3" has two UUCP neighbors, "sandstorm" and "homebase". Site "gigsys" has three UUCP neighbors: "sandstorm", "papabear", and "tatooine". The site "garage3" is what is known as a "leaf" site: it is connected to only one UUCP neighbor, "sandstorm". It is a "leaf" on the interconnection "tree" in that it only generates and receives email (and possibly Usenet news) for itself, and doesn't pass any traffic through for anyone else. So if someone at site "coco3" wanted to send email to someone with the user account "susan" at site "garage3", they'd send it to: sandstorm!garage3!susan If someone at site "homebase" wanted to send mail to user "fred" at site "tatooine", they'd send it to: sandstorm!gigsys!tatooine!fred Suppose someone at site "papabear" wanted to send email to user "sally" who was also at site "papabear"? In that case, it becomes rather simple. They'd send the email to: sally Email sent to someone on a remote system is queued up to be sent. On a regular basis, you call up one or more of your UUCP neighbors, at which time the two nodes connect and exchange any files that are waiting to be sent or received by one or the other. After this is done, the two computers disconnect, and each then processes any incoming files that require further work. Email may need to be distributed to a user on that system, or queued up for transmission to yet another UUCP neighbor, for example. Or a Usenet news article may need to be posted on your machine. This is a hypothetical example. Multiply that diagram a hundredfold, and include tens of thousands of UUCP sites around the globe, and you'll have a more accurate picture of exactly what it is you're tapping into. You and any other users on your machine will mostly use the MAILX, UUCP, READNEWS and POSTNEWS commands. As a Sysop on your system, you will run the "uucico" command once or twice a day to connect with your neighbors and get everyone up to date. Also, when your disk starts getting full, you'll want to run EXPIRE to delete Usenet news articles older than a specified number of days old. UUXQT, RMAIL and RNEWS are usually run automatically by UUCICO. UUXQT is run after "uucico" has transferred all files to and from your site that have been queued up for transport, and you have disconnected from your UUCP neighbor. It then runs RMAIL and RNEWS, as appropriate, to post any email or news articles that may have just come across. 23 How Do You Get There From Here? OS-9 UUCP 6.3 - How Do You Get There From Here? To send email to someone, you need to know the name of their node, and the names of all the nodes between yours and his/hers. If your friend Sally had an account "sallyd" on system "burp", and "burp" was connected to system "why", and system "why" was connected to "sandstorm", you'd do this: mailx "sandstorm!why!burp!sallyd" Finding a path between your system and another is an arcane art. :-) The quotes are necessary to prevent the OS-9/6809 shell from interpreting the exclamation points as "pipe" characters. A single dot character at the left margin will terminate the mail entry. Mail then queues the mail up to be sent to "sandstorm" the next time you call them with uucico. 7 - UUCP Command The uucp command can be used to initiate file transfers to and from the remote system. The remote system usually won't let you put a file just anywhere... usually there is a /usr/spool/uucppublic directory to which anyone is allowed to write files, though. So to transfer your startup file to your immediate UUCP neighbor "sandstorm", for example: uucp /dd/startup "sandstorm!/usr/spool/uucppublic/startup" and to read it back: uucp "sandstorm!/usr/spool/uucppublic/startup" /dd/startup2 This would just queue up a job to do the transfer; uucico would do the actual work. This means that people who know what they're doing can send you files (and read your files) remotely, so you might want to be security conscious and NOT run uucico from your root account (user 0). Also, make sure the permissions on your files are set such that whatever account you run uucico under can ONLY do things on your system that you feel like permitting. The directory /DD/USR/SPOOL/UUCPPUBLIC is your version of standard /usr/spool/uucppublic. Make sure anyone can write in that directory, so that anyone wanting to transfer a file to your system will be sure to have a place to put it. If you know enough about the way the network's connected, and the various machines involved are configured in a way that allows it, you can transfer files between machines that aren't immediate neighbors, like this: uucp a_file "sandstorm!gigsys!tatooine!/usr/spool/uucppublic/file" UUCPbb MANUAL 24 The above command would cause the file "file" to be transferred from your hard disk to the /usr/spool/uucppublic directory on system "tatooine", travelling there by ways of intermediate systems "sandstorm" and "gigsys". 8 - File Server Rick Adams has written a mini-listserver program which is included in UUCPbb. At the present time the server is somewhat simple. It will allow users to request files you have placed in a special directory. This directory is defined in the /DD/SYS/UUCP/Parameters file. Read the file FILESERV.MAN for full instructions on using setting up and using the server. While the server is simple now, it will not be for long. ;-) 9 - Final Word I would like to see UUCPbb develop into an OS-9 Community Project. Towards that end, I have released it under the GNU General Public License. You are free to give away (but NOT sell) and modify the source or even use the source provided you comply the the GNU license. I will be maintaining UUCPbb, so if you have bugs, improvements, comments, critisms or even nice things to say :-), please pass them know. I don't have the last word on how to do everything in C. If someone can come up with a better (and PORTABLE!) way of doing what I did, let me know. In order to avoid requiring everyone to constantly download a huge file for minor updates or wait a long time between revisions, a UNIX-like diff utility is in the works. (It will run both on the CoCo and OSK systems.) With this utility changes will be easier to pass along. Any DIFF files will ALWAYS be referenced against the current official version of UUCPbb. This will ensure that everyone is working with the same sources. The original site which updates, patches, additions will be on the OS-9 archive site on the Internet. Currently, this site is chestnut.cs.wisc.edu. I am hoping a separat directory will be created for UUCPbb related files, so y'all won't have to search all around the directories on chestnut. From chestnut, files will migrate to Delphi, Compuserv and other BBSs. If you want to help with this project, contact Jeff Shepler at sysop@miliways.aldhfn.org. There are other things I would like to do with UUCPbb to make it better. Check the TODO list. If you see something you want to work on OR you have, like me, been quietly hacking on Rick's code and come up with something you want to contribute, drop me email. Before you start working on something check with me first. Someone else may be working on same task. Rather 25 Introduction OS-9 UUCP pointless to two people duplicating each others work when you could working together. Obviously, there are some things that you can do under OSK that you can't do due to limitations of the CoCo and OS-9/6809. Where possible please try not to make none portable changes. If you do, please use the following #ifdef/#endif to allow selectively compiling the code: #ifdef OS9 Code specific to OS-9/6809 #ifdef _OSK Code specific to OS-9/68K or OS-9000 #ifdef _OS9K Code specific to only OS-9000 So put on your thinking caps! And have fun! Bob Billson <bob@kc2wz.bubble.org> 1994 April 2