minor update on manuals
[spider.git] / html / adminmanual-3.html
index 42605ab71c415958d2efdde47554a9aa554a531c..44f0857ba5175cb03250560dcc898f3a6f2d1d3b 100644 (file)
 <HTML>
 <HEAD>
  <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
- <TITLE>The DXSpider Installation and Administration Manual : Configuration</TITLE>
+ <TITLE>The DXSpider Administration Manual v1.49: Mail</TITLE>
  <LINK HREF="adminmanual-4.html" REL=next>
  <LINK HREF="adminmanual-2.html" REL=previous>
  <LINK HREF="adminmanual.html#toc3" REL=contents>
+<link rel=stylesheet href="style.css" type="text/css" title="default stylesheet">
 </HEAD>
 <BODY>
 <A HREF="adminmanual-4.html">Next</A>
 <A HREF="adminmanual-2.html">Previous</A>
 <A HREF="adminmanual.html#toc3">Contents</A>
 <HR>
-<H2><A NAME="s3">3. Configuration</A></H2>
+<H2><A NAME="s3">3. Mail</A></H2>
 
-<H2><A NAME="ss3.1">3.1 Allowing ax25 connects from users</A>
+<P>DXSpider deals seamlessly with standard AK1A type mail.  It supports both
+personal and bulletin mail and the sysop has additional commands to ensure
+that mail gets to where it is meant.  DXSpider will send mail almost
+immediately, assuming that the target is on line.  However, only one
+mail message is dealt with at any one time.  If a mail message is already
+being sent or recieved, then the new message will be queued until it has
+finished.
+<P>The cluster mail is automatically deleted after 30 days unless the sysop
+sets the "keep" flag using the <EM>msg</EM> command.
+<P>
+<H2><A NAME="ss3.1">3.1 Personal mail</A>
 </H2>
 
-<P>As stated previously, the aim of this document is not to tell you how to configure Linux or the ax25 utilities.  However, you do need to add a line in your ax25d.conf to allow connections to DXSpider for your users.  For each interface that you wish to allow connections on, use the following format ...
+<P>Personal mail is sent using the <EM>sp</EM> command.  This is actually the
+default method of sending mail and so a simple <EM>s</EM> for send will do.
+A full list of the send commands and options is in the <EM>command set</EM>
+section, so I will not duplicate them here.
 <P>
-<BLOCKQUOTE><CODE>
-<PRE>
-default  * * * * * *  - sysop /spider/src/client client %u ax25
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>
-<H2><A NAME="ss3.2">3.2 Allowing telnet connects from users</A>
+<H2><A NAME="ss3.2">3.2 Bulletin mail</A>
 </H2>
 
-<P>Allowing telnet connections is quite simple.  Firstly you need to add a line in /etc/services to allow connections to a port number, like this ....
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-spdlogin   8000/tcp     # spider anonymous login port
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>Then add a line in /etc/inetd.conf like this ....
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-spdlogin stream tcp nowait root /usr/sbin/tcpd /spider/src/client login telnet
-</PRE>
-</CODE></BLOCKQUOTE>
+<P>Bulletin mail is sent by using the <EM>sb</EM> command.  This is one of the
+most common mistakes users make when sending mail.  They send a bulletin
+mail with <EM>s</EM> or <EM>sp</EM> instead of <EM>sb</EM> and of course
+the message never leaves the cluster.  This can be rectified by the sysop
+by using the <EM>msg</EM> command.
 <P>
-<P>This needs to be added above the standard services such as ftp, telnet etc.  Once this is done, you need to restart inetd like this ....
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-killall -HUP inetd
-</PRE>
-</CODE></BLOCKQUOTE>
+<P>Bulletin addresses can be set using the Forward.pl file.
 <P>
-<P>
-<P>Now login as <EM>sysop</EM> and cd spider/perl. You can test that spider is accepting telnet logins by issuing the following command ....
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-client.pl login telnet
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>You should get a login prompt and on issuing a callsign, you will be given access to the cluster.  Note, you will not get a password login.  There seems no good reason for a password prompt to be given so it is not asked for.
-<P>
-<P>Assuming all is well, then try a telnet from your linux console ....
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-telnet localhost 8000
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>
-<P>You should now get the login prompt and be able to login as before.
-<P>
-<H2><A NAME="ss3.3">3.3 Setting up node connects</A>
+<H2><A NAME="ss3.3">3.3 Forward.pl</A>
 </H2>
 
-<P>In order to allow cluster node connections, spider needs to know that the connecting callsign is a cluster node.  This is the case whether the connect is incoming or outgoing.
-In spider this is a simple task and can be done in runtime.
-<P>
-<P>Start up the cluster as you did before and login as the sysop with client.pl.
-The cluster node I am wanting to make a connection to is GB7BAA but you would obviously use whatever callsign you required.
-At the prompt type ...
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-set/node gb7baa
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>
-<P>The case does not matter as long as you have a version of DXSpider later than 1.33.  Earlier versions required the callsign to be in upper case.
-<P>
-<P>That is now set, it is as simple as that.  To prove it, login on yet another console as sysop and issue the command ...
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-client.pl gb7baa (using the callsign you set as a node)
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>
-<P>You should get an initialisation string from DXSpider like this ...
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-client.pl gb7baa
-PC38^GB7MBC^~
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>If the callsign you just set up as a cluster node is for an incoming connect, this is all that needs to be done.  If the connection is to be outgoing then a connection script needs to be written.
-<P>
-<H3>Connection scripts</H3>
+<P>DXSpider receives all and any mail sent to it without any alterations needed
+in files.  Because personal and bulletin mail are treated differently, there
+is no need for a list of accepted bulletin addresses.  It is necessary, however,
+to tell the program which links accept which bulletins.  For example, it is
+pointless sending bulletins addresses to "UK" to any links other than UK
+ones.  The file that does this is called forward.pl and lives in /spider/msg.
+At default, like other spider files it is named forward.pl.issue.  Rename it
+to forward.pl and edit the file to match your requirements.
+The format is below ...
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+#
+# this is an example message forwarding file for the system
+#
+# The format of each line is as follows
+#
+#     type    to/from/at pattern action  destinations
+#     P/B/F     T/F/A     regex   I/F    [ call [, call ...] ]
+#
+# type: P - private, B - bulletin (msg), F - file (ak1a bull)
+# to/from/at: T - to field, F - from field, A - home bbs, O - origin 
+# pattern: a perl regex on the field requested
+# action: I - ignore, F - forward
+# destinations: a reference to an array containing node callsigns
+#
+# if it is non-private and isn't in here then it won't get forwarded 
+#
+# Currently only type B msgs are affected by this code.
+# 
+# The list is read from the top down, the first pattern that matches
+# causes the action to be taken.
+#
+# The pattern can be undef or 0 in which case it will always be selected
+# for the action specified
+#
+# If the BBS list is undef or 0 and the action is 'F' (and it matches the
+# pattern) then it will always be forwarded to every node that doesn't have 
+# it (I strongly recommend you don't use this unless you REALLY mean it, if
+# you allow a new link with this on EVERY bull will be forwarded immediately
+# on first connection)
+#
 
-<P>Because DXSpider operates under Linux, connections can be made using just about any protocol;  AX25, NETRom, tcp/ip, ROSE etc are all possible examples.  Connect scripts live in the /spider/connect directory and are simple ascii files.  Writing a script for connections is therefore relatively simple.  
-<P>
-<P>The connect scripts consist of lines which start with the following keywords or symbols:-
-<P>
-<P>
-<PRE>
-        
-#               All lines starting with a # are ignored, as are wholly blank lines.
+package DXMsg;
 
-timeout         timeout followed by a number is the number of seconds to wait for a 
-                command to complete. If there is no timeout specified in the script 
-                then the default is 60 seconds.
-
-abort           abort is a regular expression containing one or more strings to look 
-                for to abort a connection. This is a perl regular expression and is 
-                executed ignoring case.
-
-connect         connect followed by ax25 or telnet and some type dependent 
-                information. In the case of a telnet connection, there can be up to 
-                two parameters.
-                The first is the ip address or hostname of the computer you wish to 
-                connect to and the second is the port number you want to use (this 
-                can be left out if it is a normal telnet session).
-                In the case of an ax25 session then this would normally be a call to
-                ax25_call or netrom_call as in the example above. It is your
-                responsibility to get your node and other ax25 parameters to work 
-                before going down this route!
-
-'               ' is the delimiting character for a word or phrase of an expect/send 
-                line in a chat type script. The words/phrases normally come in pairs, 
-                either can be empty. Each line reads input from the connection until 
-                it sees the string (or perl regular expression) contained in the
-                left hand string. If the left hand string is empty then it doesn't 
-                read or wait for anything. The comparison is done ignoring case.
-                When the left hand string has found what it is looking for (if it is) 
-                then the right hand string is sent to the connection.
-                This process is repeated for every line of chat script. 
-
-client          client starts the connection, put the arguments you would want here 
-                if you were starting the client program manually. You only need this 
-                if the script has a different name to the callsign you are trying to 
-                connect to (i.e. you have a script called other which actually 
-                connects to GB7DJK-1 [instead of a script called gb7djk-1]).
-</PRE>
-<P>
-<P>There are many possible ways to configure the script but here are two examples, one for a NETRom/AX25 connect and one for tcp/ip.  
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-        timeout 60
-        abort (Busy|Sorry|Fail)
-        # don't forget to chmod 4775 netrom_call!
-        connect ax25 /usr/sbin/netrom_call bbs gb7djk g1tlh
-        'Connect' ''
-        'Connect' 'c np7'
-        'Connect' 'c gb7dxm'
-        # you can leave this out if you call the script 'gb7dxm'
-        client gb7dxm ax25
+@forward = (
+'B',    'T',    'LOCAL',        'F',    [ qw(GB7MBC) ],
+'B',    'T',    'ALL',          'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
+'B',    'T',    'UK',           'F',    [ qw(GB7BAA GB7ADX) ],
+'B',    'T',    'QSL',          'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
+'B',    'T',    'QSLINF',       'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
+'B',    'T',    'DX',           'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
+'B',    'T',    'DXINFO',       'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
+'B',    'T',    'DXNEWS',       'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
+'B',    'T',    'DXQSL',        'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
+'B',    'T',    'SYSOP',        'F',    [ qw(GB7BAA GB7ADX) ],
+'B',    'T',    '50MHZ',        'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
+);
 </PRE>
 </CODE></BLOCKQUOTE>
+<P>Simply insert a bulletin address and state in the brackets where you wish
+that mail to go.  For example, you can see here that mail sent to "UK" will
+only be sent to the UK links and not to PA4AB-14.
 <P>
+<P>To force the cluster to reread the file use load/forward
 <P>
 <P>
-<BLOCKQUOTE><CODE>
-<PRE>
-        timeout 15
-        connect telnet dirkl.tobit.co.uk
-        'login' 'gb7djk'
-        'word' 'gb7djk'
-        # tell GB7DJK-1 that it is connected to GB7DJK
-        # you can leave this out if you call this script 'gb7djk'
-        client gb7djk telnet
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>
-<P>Both these examples assume that everything is set up properly at the other end.  You will find other examples in the /spider/examples directory.
-<P>
-<H3>Starting the connection</H3>
+<H2><A NAME="ss3.4">3.4 The msg command</A>
+</H2>
 
-<P>You start the connection, from within a sysop enabled cluster login, by typing in the word <EM>connect</EM> followed by a script name like this ....
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-G0VGS de GB7MBC 13-Dec-1998 2041Z >connect gb7djk-1
-connection to GB7DJK-1 started
-G0VGS de GB7MBC 13-Dec-1998 2043Z >
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>This will start a connection using the script called <EM>gb7djk-1</EM>.  You can follow the connection by watching the term or console from where you started <EM>cluster.pl</EM>.  You should see something like this ...
+<P>The <EM>msg</EM> command is a very powerful and flexible tool for the
+sysop.  It allows the sysop to alter to and from fields and make other
+changes to manage the cluster mail.
+<P>Here is a full list of the various options ...
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-&lt;- D G1TLH connect gb7djk-1
--> D G1TLH connection to GB7DJK-1 started
--> D G1TLH G1TLH de GB7DJK 13-Dec-1998 2046Z >
-timeout set to 15
-CONNECT sort: telnet command: dirkl.tobit.co.uk
-CHAT "login" -> "gb7djk"
-received "
-Red Hat Linux release 5.1 (Manhattan)
-Kernel 2.0.35 on an i586
-"
-received "login: "
-sent "gb7djk"
-CHAT "word" -> "gb7djk"
-received "gb7djk"
-received "Password: "
-sent "gb7djk"
-Connected to GB7DJK-1, starting normal protocol
-&lt;- O GB7DJK-1 telnet
--> B GB7DJK-1 0
-GB7DJK-1 channel func  state 0 -> init
-&lt;- D GB7DJK-1 
-&lt;- D GB7DJK-1 Last login: Sun Dec 13 17:59:56 from dirk1
-&lt;- D GB7DJK-1 PC38^GB7DJK-1^~
-&lt;- D GB7DJK-1 PC18^ 1 nodes, 0 local / 1 total users  Max users 0  Uptime 0 00:00^5447^~
-    etc
+  MSG TO &lt;msgno> &lt;call>     - change TO callsign to &lt;call>
+  MSG FRom &lt;msgno> &lt;call>   - change FROM callsign to &lt;call>
+  MSG PRrivate &lt;msgno>      - set private flag
+  MSG NOPRrivate &lt;msgno>    - unset private flag
+  MSG RR &lt;msgno>            - set RR flag
+  MSG NORR &lt;msgno>          - unset RR flag
+  MSG KEep &lt;msgno>          - set the keep flag (message won't be deleted ever)
+  MSG NOKEep &lt;msgno>        - unset the keep flag
+  MSG SUbject &lt;msgno> &lt;new> - change the subject to &lt;new>
+  MSG WAittime &lt;msgno>      - remove any waiting time for this message
+  MSG NOREad &lt;msgno>        - mark message as unread
+  MSG REad &lt;msgno>          - mark message as read
+  MSG QUeue                 - queue any outstanding bulletins
+  MSG QUeue 1               - queue any outstanding private messages
 </PRE>
 </CODE></BLOCKQUOTE>
+<P>These commands are simply typed from within the cluster as the sysop user.
 <P>
-<P>With later versions of Spider there is a set/login command for users.  This tells them when a user or node logs in or out.  If you do not add a line to your scripts after the final line (or before the client line which should always be last if needed) then the login/logout information will be sent to users <I>before</I> the login actually completes.  This means if a node is unreachable, it will continue sending logins and logouts to users even though it is not actually connecting.  To avoid this use the following line ...
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-'connect' ''
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>
-<P>In a script, this might look like ...
+<H2><A NAME="ss3.5">3.5 Message status</A>
+</H2>
+
+<P>You can check on a message from within the cluster by using the command
+<EM>stat/msg</EM>.  This will give you additional information on the
+message number including which nodes have received it, which node it
+was received from and when etc.  Here is an example of the output of
+the command ...
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-timeout 35 
-abort (Busy|Sorry|Fail)
-connect telnet mary 3000
-'ogin:' 'gb7mbc'
-'>' 'telnet 44.131.93.96 7305'
-'connect' ''
+G0VGS de GB7MBC 28-Jan-2001 1308Z >
+stat/msg 6869
+        From: GB7DJK
+    Msg Time: 26-Jan-2001 1302Z
+       Msgno: 6869
+      Origin: GB7DJK
+        Size: 8012
+     Subject: AMSAT 2line KEPS 01025.AMSAT
+          To: UK
+Got it Nodes: GB7BAA, GB7ADX
+     Private: 0
+Read Confirm: 0
+  Times read: 0
+G0VGS de GB7MBC 28-Jan-2001 1308Z >
 </PRE>
 </CODE></BLOCKQUOTE>
 <P>
-<H2><A NAME="ss3.4">3.4 Automating things</A>
+<H2><A NAME="ss3.6">3.6 Filtering mail</A>
 </H2>
 
-<P>Ok, you should now have DXSpider running nicely and allowing connects by cluster nodes or users.  However, it has to be shutdown and restarted manually and if connection scripts fail they have to be started again manually too, not much use if you are not at the console!
-So, in this section we will automate both.  Firstly starting the cluster.
+<P>This is described in the section on <EM>Other filters</EM> so I will not
+duplicate it here.
 <P>
-<H3>Autostarting the cluster</H3>
+<H2><A NAME="ss3.7">3.7 Distribution lists</A>
+</H2>
 
-<P>This is not only a way to start the cluster automatically, it also works as a watchdog, checking the sanity of DXSpider and respawning it should it crash for any reason.
-Before doing the following, shutdown the cluster as you did earlier.
-<P>
-<P>Login as root and bring up the /etc/inittab file in your favourite editor.  Add the following lines to the file near the end ...
+<P>Distribution lists are simply a list of users to send certain types of
+mail to.  An example of this is mail you only wish to send to other
+sysops.  In /spider/msg there is a directory called <EM>distro</EM>.  You
+put any distibution lists in here.  For example, here is a file called
+SYSOP.pl that caters for the UK sysops.
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-##Start DXSpider on bootup and respawn it should it crash
-DX:3:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
+qw(GB7TLH GB7DJK GB7DXM GB7CDX GB7BPQ GB7DXN GB7MBC GB7MBC-6 GB7MDX
+   GB7NDX GB7SDX GB7TDX GB7UDX GB7YDX GB7ADX GB7BAA GB7DXA GB7DXH 
+   GB7DXK GB7DXI GB7DXS)
 </PRE>
 </CODE></BLOCKQUOTE>
+<P>Any mail sent to "sysop" would only be sent to the callsigns in this list.
 <P>
-<P>This will automatically start DXSpider on tty7 (ALT-F7) on bootup and restart it should it crash for any reason.
-<P>
-<P>As root type the command <EM>telinit q</EM>.  DXSpider should start up immediately.  You will see the output on tty7 and if you login as <EM>sysop</EM> you should find everything running nicely.
-<P>
-<P>So far so good, now to automate script connections...
-<P>
-<H3>The crontab file</H3>
-
-<P>Login as <EM>sysop</EM> and create a file in /spider/local_cmd called crontab.  Edit it with your favourite editor and add a line like this (I have included a comment)
-<P>
-<BLOCKQUOTE><CODE>
-<PRE>
-# check every 10 minutes to see if gb7xxx is connected and if not
-# start a connect job going
+<H2><A NAME="ss3.8">3.8 BBS interface</A>
+</H2>
 
-0,10,20,30,40,50 * * * * start_connect('gb7xxx') if !connected('gb7xxx')
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>
-<P>The callsign involved will be the callsign of the cluster node you are going to connect to.  This will now check every 10 minutes to see if gb7xxx is connected, if it is then nothing will be done.  If it is not, then a connect attempt will be started.
-<P>
-<P>There are probably lots of other things you could use this crontab file for.  If you want to know more about it, look at the 
-<A HREF="http://www.dxcluster.org/cron.html">DXSpider</A> website at the cron page where it is explained more fully.
+<P>Spider provides a simple BBS interface.  No input is required from the sysop
+of the cluster at all.  The BBS simply sets the cluster as a BBS and pushes
+any required mail to the cluster.  No mail can flow from Spider to the BBS,
+the interface is one-way.
+<P>
+<P>Please be careful not to flood the cluster network with unnecessary mail.
+Make sure you only send mail to the clusters that want it by using the
+Forward.pl file very carefully.
 <P>
 <HR>
 <A HREF="adminmanual-4.html">Next</A>