home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 164.img / UUPC.ZIP / DOCS.ZIP / UUPC.TXT < prev   
Text File  |  1987-08-27  |  33KB  |  826 lines

  1.  
  2. uupc/dcp                        June 8, 1987            Stuart Lynne
  3.  
  4. For Beta implementors only.
  5.  
  6. This is the very first release of my version of Richard H. Lambs uucp
  7. program dcp. 
  8.  
  9. See README.UUPC for overview of how everything is stitched together.
  10.  
  11. Summary of Changes:
  12.  
  13.         - eliminated references to all protocols except for the 3 window
  14.           g protocol
  15.         - streamlined dcp and condensed into four files
  16.         - moved host dependant stuff to one file uuXXX
  17.         - bug fixes to get 3w g protocol to send at full speed
  18.  
  19.  
  20. dcp.c           - dcp pseudo main, high level stuff
  21. dcp.h           - header file
  22. dcpxfer.c       - file xfer
  23. dcpsys.c        - connection stuff
  24. dcpgpkt.c       - g packet protocol
  25.  
  26.  
  27. For more information, bug fixes, more commands etc:
  28.  
  29.                 Stuart.Lynne@van-bc.uucp
  30.                 604-937-7532
  31.  
  32. Fixes
  33.  
  34. Jun 8/87        Added FOPEN and CREAT to recursively create directory
  35.                     trees if they don't exist when a file is opened for writing
  36.                     or appending
  37.  
  38. Jun 8/87        Found bug in getting file name in initial protocol sequence
  39.                     Need to read more than one packet.
  40.                         
  41. Jul/87          Added Hayes dialer to dcpsys
  42.  
  43. ==============================================================================
  44.  
  45. August 9, 1987    uupc Questions and Answers     uupc Development
  46.  
  47.  
  48. The following is some commonly asked questions about uupc and, of
  49. course, the answers to these questions.
  50.  
  51.  
  52.  1. What does "uupc" stands for?
  53.  
  54.     It is an acronym for "UUcp for PC's", but it is also a pun on
  55.     uucp, which is in turn an acronym for "Unix to Unix CoPy".
  56.  
  57.  2. What does uupc do?
  58.  
  59.     It gives a personal computer the capability to become a
  60.     "node" in the UUCP (or a similar) network and exchange
  61.     information such as electronic mail and USENET news with
  62.     other computers on that network.
  63.  
  64.  3. What personal computers does uupc runs on?
  65.  
  66.     Currently it is available for the Apple Macintosh, Atari ST,
  67.     Commodore Amiga, and IBM PC (and compatibles) with DOS.  More
  68.     computers and operating systems will be able run uupc in the
  69.     near future.  (IBM PC with MINIX is a likely next candidate.)
  70.  
  71.  4. Does uupc require me to leave my computer on all day to wait
  72.     for incoming mail?
  73.  
  74.     No.  Most people only use uupc to call up their neighbouring
  75.     system to send and/or pickup mail at times convenient to
  76.     them.  Outgoing mail are also spooled to disk and do not need
  77.     to be send immediately to your neighbouring system after it
  78.     is composed.
  79.  
  80.     However, uupc can also be set up on a personal computer to
  81.     wait for incoming call continuously and act as a "mail-hub"
  82.     to relay messages for other systems if you choose.
  83.  
  84.  5. What do I need to have to get uupc up and running on one of
  85.     the above personal computers?
  86.  
  87.     You need a neighbouring system to communicate with.  This
  88.     system can be either a UNIX system, another personal computer
  89.     running uupc, or any other system that can talk UUCP's 'g'
  90.     protocol.
  91.  
  92.     You would also need to have the appropriate C compiler for
  93.     your personal computer if you have received only the source
  94.     for uupc.
  95.  
  96.  6. Is the source to uupc publicly available?
  97.  
  98.     Yes.  It was posted to the USENET newsgroup comp.sources.misc
  99.     in August 1987 and is available from (at least) any site
  100.     which archives this newsgroup.  If you have trouble locating
  101.     a copy of the uupc sources, please drop uupc Development a
  102.     note through one of the e-mail addresses listed at the end of
  103.     this file.
  104.  
  105.  7. What does the uupc software consists of?
  106.  
  107.     It consists of two programs, uupc and pcmail.  uupc is an automated
  108.     files transfer program, similar to /usr/lib/uucico in UUCP,
  109.     and mail is a mailer user-interface, like mail(1) in UNIX.
  110.  
  111.  8. What are the typical use of these programs?
  112.  
  113.     uu is used to accept incoming file relayed to you through
  114.     your neighbouring machine and deliver outgoing file to your
  115.     neighbouring machine for forwarding to other machines.  In
  116.     most cases these "files" contain electronic messages which
  117.     are to be used with the mail program.
  118.  
  119.     pcmail is used to read incoming mail delivered by uu, and
  120.     compose outgoing mail for delivery with uu.  However, it can
  121.     also be used to transfer files to/from other systems that is
  122.     reachable through electronic mail.
  123.  
  124.  9. What do I need to do to get uupc running on my personal
  125.     computer?
  126.  
  127.     You would need to obtain the binaries of uupc for your
  128.     computer by either compiling the uupc sources on your machine
  129.     or obtaining the uupc binaries from someone who has a copy.
  130.  
  131.     You would also need to arrange to have your neighbouring
  132.     system to recognize your system as one of their neighbouring
  133.     systems in the network.  The procedures for this varies, you
  134.     should contact the people who manage your neighbouring system
  135.     for about details.
  136.  
  137. 10. Does uupc supports more than one neighbouring systems?
  138.  
  139.     Yes, it can support multiple neighbouring systems.  The mail
  140.     software will currently always route outgoing mail through
  141.     one of these systems, but a future version of this software
  142.     will allow multiple forwarding machines for outgoing mail.
  143.  
  144. 11. Is uupc the same program on all systems it runs on, or is it
  145.     actually a different program for each of the systems?
  146.  
  147.     It is the same program across all systems, with the exception
  148.     of the system-dependent code, which is different from system
  149.     to system.
  150.  
  151.     The user-interface and command line options for uupc are also
  152.     uniform across all the systems it runs on, so there is no
  153.     need to learn a new program when you use uupc on a different
  154.     computer.  The uniform user-interface also makes it easier to
  155.     use uupc on different computers at the same time.
  156.  
  157. 12. If I don't like the mail program's simple user-interface, are
  158.     there any alternatives?
  159.  
  160.     Since a mailbox can be easily converted to a simple text
  161.     file, alternative mailer can be easily written to accomodate
  162.     different needs.  At the very least, you will be able to use
  163.     your favorite text-editor to read your incoming message and
  164.     compose your outgoing message.
  165.  
  166.     Future release of uupc will include mailers for the different
  167.     systems which will take advantage of special features only
  168.     availabe on the systems they run on (e.g. window and mouse).
  169.  
  170. 13. What if I want to port uupc to another personal computer not
  171.     presently support by uupc?
  172.  
  173.     First you should read the file UUPORT.INF, which should be
  174.     available from the same source you obtained this file from.
  175.     If you cannot locate a copy of this file, then please send a
  176.     request for it to uucp Development at one of the e-mail
  177.     addresses listed at the end of this file.
  178.  
  179.     After you have read the above file and decided that you still
  180.     want to do a port of uupc to a new machine/operating systems,
  181.     please drop uupc Development a note at one of the the e-mail
  182.     addresses listed at the end of this file.  This way we will
  183.     at least be able to save each other from duplicated efforts.
  184.     Who knows?  We might even have a version for ready for your
  185.     system when you call to tell us that you are about to begin
  186.     your port.
  187.  
  188. 14. Who/what is the "UUPC Development Team"?
  189.  
  190.         The original software (dcp) was done by Richard H. Lamb.
  191.         Modified to run on the Mac by Stuart Lynne.
  192.         Atari ST by Lawrence Harris.
  193.         Amiga by Jeff Lydiatt.
  194.         IBM PC by Samual Lam
  195.         VMS (not available yet) Lawrence Harris
  196.         
  197. 15. What is the copyright status and distribution policy of uupc?
  198.  
  199.         The dcp portions of uupc are Copyright (c) Richard H. Lamb.
  200.         Modifications Copyright (c) Stuart Lynne
  201.         Mail, PCMail Copyright (c) Stuart Lynne
  202.         Mac software Copyright (c) Stuart Lynne
  203.         Amiga software Copyright (c) Jeff Lydiatt
  204.         Atari software Copyright (c) Lawrence Harris
  205.         IBM software Copyright (c) Sam Lam
  206.  
  207. In general we are promoting the use of this software on a "public domain" 
  208. basis. You can use for your own use, and can give copies of the source
  209. code to anyone, provided you provide this information to them.
  210.     
  211.  
  212. 16. If I have more questions, comments, or suggestions about
  213.     uupc, where should I send them?
  214.  
  215.     Please send them all to us at uupc Development at one of the
  216.     e-mail addresses listed below.  We also welcome any bug fixes
  217.     and improved/new code for uupc that you might want to share.
  218.  
  219.  
  220. uupc Development can be reached at the following e-mail address:
  221.  
  222.         uupc@van-bc.UUCP
  223.  
  224. This is routed to the uupc mailing list and a local news group for 
  225. discussion of uupc software.
  226.  
  227. To join the mailing list send a request to:
  228.  
  229.         uupc-request@van-bvc.uucp
  230.  
  231.  
  232.  
  233. 17. Can I get Binary Versions of uupc mailed to me.
  234.  
  235. Yes and no. 
  236.  
  237. No we cannot email binaries to you at this time.
  238.  
  239. Yes, if you send a self addressed / stamped (international coupon) mailer
  240. with appropriate diskettes (2) we will attempt to return them to you with
  241. the appropriate version of the software.
  242.  
  243. We plan to make a binary posting to the appropriate Usenet comp.binary
  244. newsgroups in the late fall, or early next year when the software is 
  245. a bit more functional, better documented and easier to install and
  246. operate without the source.
  247.  
  248. Mail your disks to:
  249.  
  250.         UUPC Request
  251.         C/O Stuart Lynne
  252.         225B Evergreen Drive
  253.         Port Moody, BC,
  254.         Canada, V3H 1S1
  255.  
  256.  
  257. --
  258. {ihnp4!alberta!ubc-vision,uunet}!van-bc!Stuart.Lynne Vancouver,BC,604-937-7532
  259.  
  260. =============================================================================
  261.  
  262. uupc Porting Information     August 3, 1987      uupc Development
  263.  
  264. This writeup is aimed at programmers intending to port uupc to
  265. machines and operating systems which it don't currently run on.
  266. If you only want to install uupc on a system where a uupc port
  267. exists, this writeup might also provide some insights to the
  268. internal working of uupc and make the installation of uupc on
  269. your machine a more interesting task.
  270.  
  271. Since I did part of the IBM-PC/MS-DOS port for uupc, what I will
  272. describe here is actually closely related to the structure of
  273. this particular port.  (I also did part of the port of uupc's
  274. mailer to AIX (SVR1) on the RT-PC.)  What is shown here is *by no
  275. mean* the only way things could be done, it's just some tips and
  276. hints that I can think of after doing one-and-a-half port of
  277. uupc.
  278.  
  279. The purpose of this writeup is to try to make the life of
  280. programmers doing uupc ports for other machines/operating systems
  281. easier.  However, the best sources of information on how new
  282. ports should be done is still by reading the system-dependent
  283. code of the existing uupc ports.  (This is how I learnt how to do
  284. my ports.)  It would also be useful to have a listing of the
  285. system-dependent code of the IBM-PC/DOS port handy while reading
  286. this writeup.
  287.  
  288. To compile uupc, the C compiler and linker on your system must be
  289. able to differentiate between upper and lower cases in external
  290. names.
  291.  
  292. The C run-time support on your system should use '\n' as line
  293. separator for *text* files.  If your system uses other sequences
  294. or methods to delimit text file lines, the C run-time support
  295. must perform the appropriate translation functions for mapping in
  296. both directions when a file is opened in text mode.
  297.  
  298. In order to port uupc to a new machine/operating system, you have
  299. to come up with a new version of six system-dependent files in
  300. the the "local" directory.  The names of these six files in the
  301. local directory are host.h, host.c, mlib.c, ulib.c, ndir.h and
  302. ndir.c.
  303.  
  304. Note that theses files could in turn #include other *.c and *.h
  305. files if you wish to separate the system-dependent code into more
  306. small files.  The important thing here is that they must
  307. collectively provide the same set of routines, global variables,
  308. and environment to the common code.
  309.  
  310. What should be contained in these six files are describe below:
  311.  
  312. host.h - Host dependent file virtual #included everywhere else.
  313.  
  314.    Almost every file in both the common and host-dependent code
  315.    include this header file.  So it should contains all the
  316.    #includes, #defines, and externs that everybody would need.
  317.  
  318.    Parts of the uupc common code assume Berkeley-style index()
  319.    and rindex(), so if your system supports only SysV-style
  320.    strchr() and strrchr(), they need to mapped using #define
  321.    here.
  322.  
  323.    Declarations for "library" routines in host.c, mlib.c and
  324.    ulib.c should also be make here to made them known to the rest
  325.    of the world.  However, declaractions for the directory
  326.    scanning routines should be put into ndir.h instead.
  327.  
  328.    If your system requires that text file and binary fiies be
  329.    opened differently, you should map the name 'FILEMODE' into
  330.    'filemode' with a #define here.  Otherwise, 'FILEMODE' should
  331.    be mapped to the null string.
  332.  
  333. host.c - Generic main program and library routines for both parts.
  334.  
  335.    This file includes a generic main program that simply starts
  336.    up and call the procedure MAIN.  More importantly, the
  337.    definition of all the library routines that are needed by both
  338.    uu and mail are also here.
  339.  
  340.    This generic main program is used to start up both uu and
  341.    mail, by having the preprocessor symbol MAIN #defined to
  342.    different procedure names in the files which include host.c.
  343.    This generic main program should perform all the necessary
  344.    start up and wrap up functions as required by the host
  345.    operating system and call the routine MAIN while the host
  346.    environment is established.
  347.  
  348.    If the preprocessor symbol CWDSPOOL is #defined by the file
  349.    that #includes host.c, the main program should change the
  350.    current working directory to the spooling directory before
  351.    calling MAIN, and switch back to the orginal directory after
  352.    MAIN had returned.
  353.  
  354.    The following are the other routines residing in host.c and
  355.    used by the others parts of both uu and mail:
  356.  
  357.    importpath - A deterministic function which maps a canonical
  358.       file name to a local file name.  This function must be
  359.       deterministic (i.e. always return the same local name when
  360.       given the same canonical name) because it is used on each
  361.       canonical file name several times in various part of the
  362.       code to obtain the corresponding local file name.
  363.  
  364.       A canonical file name has the same format as a UNIX
  365.       pathname, and the format of a local file name is defined by
  366.       your local file system.
  367.  
  368.       This function should at least preserve the first 6 and last
  369.       2 characters of the canonical file name, since this parts
  370.       of the canonical file name usually contain the site name
  371.       and the sequence number, which is critical to the
  372.       successful operation of uupc.
  373.  
  374.       Perferably the last 4 characters of the canonical file name
  375.       should be perserved, since that is the number of digits in
  376.       the sequence number, but if that is not possible, an
  377.       attempt should be made to preverse the last 3 characters
  378.       before resorting to only preserve the last 2 characters.
  379.       (With only the last 2 characters preserved, the spool file
  380.       sequence number cycle will become only 100 before it goes
  381.       around again.)
  382.  
  383.    mkfilename - Build a local path name out of a given local
  384.       directory path and local base name pair.  It usually just
  385.       concatenates the two parts together with the local system's
  386.       directory path separator between them.
  387.  
  388.    loadenv - Retrieve certain configuration parameters from the
  389.       user's "environment" and make them available to the
  390.       program.  This involves filling in the appropriate global
  391.       (char *) variables to point to the appropriate strings
  392.       which contains the character value of the desired
  393.       configuration parameters.
  394.  
  395.    If your system requires the differentiation of text file and
  396.    binary files, you should also supply the following routine.
  397.  
  398.    filemode() - If this routine is passed the character 't' as
  399.       parameter, any subsequently opened file in the program
  400.       should be opened in text mode.  Similarly, if the parameter
  401.       is the character 'b', all subsequently opened file should
  402.       be opened in binary mode.
  403.  
  404. mlib.c - Library of routines used only by the mail part.
  405.  
  406.    Currently there is only one routine in this library.
  407.  
  408.    get_one - Wait for a single character to be typed on the
  409.       console keyboard and return to the caller with the
  410.       character read as soon as it is pressed.  It short, this is
  411.       a routine that detects and returns a keypress.
  412.  
  413.       This routine is used when you reach the bottom of a page
  414.       while paging through your mail.
  415.  
  416.       The single character read by this routine should not be
  417.       echoed to the console screen.
  418.  
  419. ulib.c - Library of routines used only by the uu part.
  420.  
  421.    login - The logger which verifies logins and passwords for
  422.       incoming UUCP connections.  You only need to have this
  423.       routine functional if you plan to ever run your node in
  424.       slave mode.  i.e. Waiting on the phone line for other nodes
  425.       to call you to make UUCP connections.
  426.  
  427.    shell - Perform an UNIX command sent from a remote site via
  428.       uux.  To support incoming remote mail you need to emulate
  429.       the UNIX 'rmail' command, which can be easily done using
  430.       the pcmail package (compiled as rmail) which is part of
  431.       this uupc distribution.  If you want to also support
  432.       incoming USENET news-feeds, the UNIX 'rnews' command will
  433.       need to be supported as well.
  434.  
  435.       If your system is capable of invoking another program
  436.       within a program, you might want to dispatch rmail and
  437.       rnews as a separate program here.  Otherwise, you might
  438.       need to compile, or link, them into uu as routines.
  439.  
  440.    sleep - Wait a specified number of seconds in real-time.  You
  441.       could either use a busy wait loop or a timer alarm here,
  442.       depending on if your system has other (e.g. background)
  443.       jobs competing for CPU time at the same time.  On mutli-
  444.       tasking or multi-users systems, you would likely *not* want
  445.       to busy wait even if that's easier to implement.
  446.  
  447.    The rest of this library consists of routines to deal with the
  448.    communications line (serial port).
  449.  
  450.    openline - Open a communications line as the active line.  The
  451.       name of the serial line device and the speed to open the
  452.       line at are *both* specified as (char *) type parameters.
  453.       These value are just the corresponding values in the
  454.       systems file entry of the site being called.
  455.  
  456.    sread - Read a specified number of bytes from the active
  457.       serial line and return with *no* input characters consumed
  458.       *if* the specified number of bytes is not available after
  459.       the specified timeout period.  This is basically a non-
  460.       blocking read that waits up to an user-specified amount of
  461.       time before returning.
  462.  
  463.    swrite - Write a specified number of bytes out to the active
  464.       serial line.  No timeout mechanism needs to be provided by
  465.       this routine.
  466.  
  467.    closeline - Close the active communications line.
  468.  
  469.    SIOSpeed - Change the line speed of the active communications
  470.       line on-the-fly.  The new line speed is given as (char *)
  471.       rather than (int).  Note the mixed-case nature of this
  472.       routine name.
  473.  
  474. ndir.h - Header file for the directory scanning routines.
  475.  
  476.    At least the following needs to be defined in this file.
  477.  
  478.    -- The constant 'MAXNAMLEN' declared with "#define".  This is
  479.       the maximum length of a file name in your system.  Note
  480.       that a file name does not include a directory path prefix,
  481.       it is only the maximum length of a file name within a
  482.       directory.
  483.  
  484.    -- The structure 'direct' declared with "struct".  This
  485.       structure is a public data structure and its fields are
  486.       examined directly by uu, so your declaration needs to
  487.       provide at least the following fields:
  488.  
  489.       struct direct {
  490.          short d_reclen;
  491.          short d_namlen;
  492.          char  d_name[MAXNAMLEN + 1];
  493.       };
  494.  
  495.       d_reclen is the length of the structure minus the size of
  496.       the unused portion of d_name at the end of the structure.
  497.  
  498.       d_namelen is strlen(d_name).
  499.  
  500.       d_name is the name of the next file in the scan, with a
  501.       terminating '\0'.
  502.  
  503.       It is important for the structure 'direct' to be defined
  504.       using "struct" insted of "typedef".
  505.  
  506.    -- The type 'DIR' declared with "typedef".  This is a private
  507.       structure used by the ndir routines and should contain all
  508.       the static data related to a single invocation of the ndir
  509.       routines.
  510.  
  511.       It is important for 'DIR' to be defined using "typedef"
  512.       instead of "struct".  (Note this is the *reverse* of the
  513.       structure 'direct' above.)
  514.  
  515.    -- The routines opendir(), readdir(), and closedir().  Which
  516.       opens a specified directory, read the next file entry from
  517.       an opened directory, and close an opened directory,
  518.       respectively.
  519.  
  520. ndir.c - "Berkeley-style" directory scanning routines.
  521.  
  522.    This file contains a set of routines similar in functions to
  523.    the Berkeley-style directory scanning routines.  These
  524.    routines are used only by uu, not mail, and only the
  525.    opendir(), readdir(), and closedir() routines are used, and
  526.    therefore need to be implemented.
  527.  
  528.    Even though the ndir routines should be capable of mutliple
  529.    concurrent invocations using separate (DIR *)'s, uu only uses
  530.    one invocation of it at a time.
  531.  
  532.    If your system's file name is mono-case, then your readdir()
  533.    routine should always return the file name field (d_name) in
  534.    all lowercase.
  535.  
  536. Any questions about porting uupc to other machines/operating
  537. systems, and comments and suggestions about this writeup should
  538. be directed to one of the e-mail addresses listed at the end of
  539. this file.
  540.  
  541. If you do decide to start porting uupc to a new machine/operating
  542. system, please drop us a line as well.  We might even be able to
  543. save each other some duplicated efforts!
  544.  
  545.  
  546. UUCP: {seismo,ihnp4!alberta,uw-beaver,uunet}!ubc-vision!van-bc!uupc
  547. Internet: uupc@van-bc.UUCP
  548. -------
  549. --
  550. {ihnp4!alberta!ubc-vision,uunet}!van-bc!Stuart.Lynne Vancouver,BC,604-937-7532
  551.  
  552. ===========================================================================
  553.  
  554. July 29/87                                              Stuart Lynne
  555.  
  556. UUPC is now running on Macintosh, Atari-ST, Amiga, and IBM-PC with MS-DOS.
  557.  
  558. These versions will constitute my first release of uupc and pcmail. Please 
  559. see the README files in each shar file for appropriate instructions.
  560.  
  561. As is, uupc sends and receives files quite well. Still unimplemented is
  562. the reverse direction file transfers, i.e. send a file to a remote host
  563. while in slave mode, receive a file while in master mode. These are not 
  564. needed to support news and mail. A proper uucp command is need too.
  565.  
  566. The user agent mail program is a very simple hack to simply allow you to 
  567. read and send mail. Hopefully someone will work on replacing this!
  568.  
  569. The message transfer agent pcmail program is fairly robust. It does need to
  570. have some more intelligence to allow for more intelligent routing of outgoing
  571. mail. Currently ALL outgoing mail is forward to a single remote site for
  572. processing. This will actually handle the needs of a large number of users
  573. but for those lucky ones who can actually get access to several large uucp
  574. sites better routine would be nice.
  575.  
  576. Other things which are needed:
  577.  
  578.         news unbatcher
  579.         news reader
  580.  
  581. Currently the news is simply spooled to a directory with a unique file name.
  582. You can read this with a normal text editor. If you wish to have outgoing mail
  583. the easiest way is to have your news feed set up alias's like:
  584.  
  585.         comp.sys.amiga "| /usr/local/lib/news/recnews comp.sys.amiga"
  586.  
  587. Then simply mail your article to:
  588.  
  589.         comp.sys.amiga@newsfeedhost.uucp
  590.  
  591. Please feel free to port this code to other environments. I ask only that you
  592. try and limit changes to the machine independent code. Things have been setup
  593. so that you shouldn't have to modify dcp, uupc, mail or pcmail if you are simply
  594. porting to a new environment. 
  595.  
  596. Please send me any new versions, diff's to get old versions working better,
  597. bug fixes etc.
  598.  
  599. Have fun and enjoy.
  600.  
  601. I would suggest that questions and comments about uupc/dcp/mail be directed
  602. to comp.mail.uucp on Usenet. This group is about "Mail in the uucp network
  603. environment." which describes uupc pretty well.
  604.  
  605. Questions, bug fixes etc
  606.  
  607. uupc, mac version, information
  608.  
  609.         Stuart Lynne
  610.         stuart.lynne@van-bc.uucp
  611.         {{seismo,ihnp4!alberta}!ubc-vision,uunet}!van-bc!Stuart.Lynne
  612.         604-937-7532
  613.  
  614. Amiga version
  615.  
  616.         Jeff Lydiatt
  617.         jl@jlami.vnet.van-bc.uucp
  618.         {{seismo,ihnp4!alberta}!ubc-vision,uunet}!van-bc!jlami!jl
  619.  
  620. Atari ST version
  621.  
  622.         Lawrence Harris
  623.         lawrence@nvanbc.uucp
  624.         {{seismo,ihnp4!alberta}!ubc-vision,uunet}!van-bc!nvanbc!lawrence
  625.  
  626. IBM PC - MS-DOS version
  627.  
  628.         Samuel Lam
  629.         skl@sklpc.vnet.van-bc.uucp
  630.         {{seismo,ihnp4!alberta}!ubc-vision,uunet}!van-bc!skl
  631.  
  632. uupc mailing list 
  633.  
  634.         uupc@van-bc.uucp                Automatically forwarded to mailing list
  635.         uupc-request@van-bc.uucp        For requests to be added to mailing list
  636.  
  637.         {{seismo,ihnp4!alberta}!ubc-vision,uunet}!van-bc!nvanbc!uupc
  638.         {{seismo,ihnp4!alberta}!ubc-vision,uunet}!van-bc!nvanbc!uupc-request
  639.         
  640. NB. Rurrently UUNET is only polled twice per week, you may wish to send
  641. any messages via both paths to ensure delivery. UUNET is probably more
  642. reliable, ubc-vision may be faster if you can reach them from your site.
  643.  
  644. ============================================================================
  645.  
  646. uupc                    June 8, 1987            Stuart Lynne
  647.  
  648. For Beta implementors only.
  649.  
  650. uupc incorporates a streamlined version of dcp to implement a uucp mail
  651. and news delivery system. 
  652.  
  653. See README.DCP for dcp info.
  654.  
  655. By moving the host dependant code into one file the other four dcp files can 
  656. hopefully be maintained easily. It should be possible to maintain one version
  657. of them which compiles and runs on all machines without conditional compilation
  658. flags.
  659.  
  660. The host file should contain:
  661.  
  662.         - serial I/O
  663.         - BSD compatible directory routines
  664.         - system call stuff
  665.  
  666. This all goes to implement a command called uupc. It is similiar to the uucico
  667. command under unix.
  668.  
  669.         uupc [-xn] [-shost]
  670.  
  671. There is also two mail source files. Pcmail is the MTA part of the mail system.
  672. It compiles in two ways, one for rmail (add only From and Received: headers), 
  673. define a simple rnews; and for lmail (add all headers). Pcmail will effect
  674. delivery of mail to local and remote users. Currently all remote mail is 
  675. directed to one smart host for forwarding.
  676.  
  677. Mail is a simple UA. It allows you to send mail and read your mailbox. It needs
  678. lots of work but is servicable.
  679.  
  680.         mail -s "subject here" user user@remote.site.domain < message
  681.  
  682.         mail -f =mailbox
  683.  
  684.         mail
  685.  
  686. will all do the obvious. Mail will append a .signature if it can find one, and
  687. will keep a copy of your outgoing mail in =mail.sent.
  688.  
  689. ToDo:
  690.  
  691.         uucp command
  692.         mail improvements
  693.         bug fixes to uupc/dcp
  694.         ports to Atari, Amiga, IBM PC, VMS
  695.  
  696.  
  697. Makefile        - sample Makefile (Macintosh Aztec C)
  698. getargs.c       - library routine
  699. lmail.c         - define LMAIL; include pcmail
  700. mail.c          - mail program (UA)
  701. pcmail.c        - mail program (MTA)
  702. rmail.c         - define RMAIL; include pcmail
  703. lib.c           - misc library routines, FOPEN, CREAT, getargs, printmsg
  704.  
  705. host.h          - prototype for host.c, includes "local/host.h"
  706. mailhost.c      - ditto for mailhost.c, includes "local/host.c"
  707. mlib.c          - ditto for mlib.c,     includes "local/mlib.c"
  708. ulib.c          - ditto for ulib.c,     includes "local/ulib.c"
  709. uuhost.c        - ditto for uuhost.c,   includes "local/host.c"
  710.  
  711. pcmail in general
  712.  
  713. Pcmail provides MTA functionality. It delivers the mail. Currently it is
  714. very dumb about forwarding mail. Local deliveries always succeed if there
  715. is room and the mail spooling directory exists. No "/etc/passwd" file list
  716. of users is used to determine if there really is a mailbox for an incoming
  717. message. Also outgoing mail is assumed to go to one smart host for 
  718. processing. This is determined by scanning for "!" or "@" in the address.
  719.  
  720. Both local and remote delivery algorithms could be souped up. Locally we
  721. should maintain a list of mailboxes. For remote we should attempt to build
  722. a path to the most reasonable host for forwarding a specific message. This
  723. will require a small version of the paths database most likely. If your 
  724. only talking to one host anyway the current scheme is not all that bad.
  725.  
  726. Pcmail has one additional capability which is not currently being exploited.
  727. It can add additional message length header lines and spool mail into a 
  728. mailbag. This mailbag could then be sent intact to your host for processing.
  729. The host must run rpcmail (availble from sl@van-bc.uucp) to unbatch the
  730. messages to rmail. This corresponds to the AT&T Mail protocol for uploading
  731. mail from PC's.
  732.  
  733. Most likely the converse capability would be more suitable. Have the host 
  734. batch incoming mail and news. Unbatch it on this side. 
  735.  
  736. pcmail / LMAiL
  737.  
  738. The mail UA is composed of the mail.c program and pcmail.c compiled without
  739. defining RMAIL (LMAIL). The LMAIL version of pcmail adds rfc822 headers
  740. to all mail, copies mail to =mail.sent etc.
  741.  
  742. pcmail / RMAIL
  743.  
  744. The uu program contains the RMAIL version of pcmail. It only adds the From 
  745. Received: headers to incoming mail. 
  746.  
  747.  
  748.  
  749. For more information, bug fixes, more commands etc:
  750.  
  751.                 Stuart.Lynne@van-bc.uucp
  752.                 604-937-7532
  753.  
  754. Directory tree
  755.  
  756. /usr
  757. /usr/lib
  758. /usr/lib/uucp
  759. /usr/lib/uucp/SEQF              - sequence numbers
  760. /usr/lib/uucp/systems           - host connection information
  761. /usr/spool
  762. /usr/spool/mail                 - mail directory
  763. /usr/spool/mail/XXXX            - user mail files
  764. /usr/spool/rnews                - rnews spool/file
  765. /usr/spool/uucp                 - spool directory
  766. /usr/spool/uucp/C.YYYYYNNNN     - copy control files
  767. /usr/spool/uucp/D.YYYYYNNNN     - uucp data files
  768. /usr/spool/uucp/dcp.log         - log file
  769. /usr/spool/uucp/X.YYYYYNNNN     - execute control files
  770. /usr/XXXX                       - user directories
  771. /usr/XXXX/.signature            - signature file
  772. /usr/XXXX/Mail                  - user mail directory
  773. /usr/XXXX/Mail/mail.sent        - sent file
  774. /tmp                            - temporary files
  775.  
  776.  
  777. Systems File 
  778.  
  779. NB. I have split the lines, in the real file they should be one line for
  780. each entry.
  781.  
  782. This entry uses the built in Hayes dialer.
  783.  
  784. van-bc Any a HAYES TD939-4782 g ogin:--ogin: uuslmac sword:-\c-sword: uuslmac
  785.  
  786.         Connect to van-bc using HAYES dialer with phone number 939-4782 with
  787.         protocol g.
  788.         Wait for ogin: if timeout send \n and wait for ogin:.
  789.         Send uuslmac (login ID).
  790.         Wait for sword:, if timeout send nothing, wait for sword:
  791.         Send uuslamc (login ID).
  792.         
  793. I use this entry to connect via a DC Hayes Smartmodem 2400, dialing explicity.
  794.  
  795. van-bc Any a DIR 2400 g "" ATZ OK-\d+++\dATZ-OK ATS7=12 OK ATTD939-4782 
  796.         CONNECT \d\c ogin:--ogin: uuslmac sword:-\c-sword: uuslmac
  797.  
  798.         Connect to van-bc at 2400 on port a with protocol g. 
  799.         Expect nothing, send ATZ to reset the modem, 
  800.         Expect OK, if not received send pause +++ pause to try and get
  801.         modems attention and wait for OK.
  802.         When OK received, send ATS7=12 to shorten connect timeout on modem.
  803.         Expect OK, send ATTD939-74782.
  804.         Expect CONNECT, send nothing but pause (\c is needed).
  805.         Expect ogin:, if not received send newline.
  806.         Send login name.
  807.         Expect sword:, send password.
  808.  
  809. This entry is used to connect directly to my Callan at 9600. It is
  810. complicated due to the Callan running a special mgetty program which
  811. thinks it is talking to a Hayes Smartmodem. So we fake it out, then
  812. tell it the connection has been made at 9600, then switch to 9600 
  813. ourselves.
  814.  
  815. van-bc Any a DIR 2400 g "" OK\r\d\dRING\r\dCONNECT\s9600\d\z9600\ 
  816.         ogin:-\r\r-ogin: uuslmac sword:-\c-sword: uuslmac "" \d\d\d\d\d\d\c
  817.  
  818.         Connect to van-bc at 2400 on port a.
  819.         Expect nothing, send OK, pause, RING, CONNECT, 9600, 
  820.         and change to 9600 bps.
  821.         Expect ogin: send login id.
  822.         Expect sword: send password.
  823.  
  824.  
  825.  
  826.