251 lines
10 KiB
HTML
251 lines
10 KiB
HTML
<HTML>
|
|
<!-- $Id$ -->
|
|
<HEAD>
|
|
<META http-equiv="Content-Type" content="text/html; charset=ISO 8859-1">
|
|
<META http-equiv="Content-Style-Type" content="text/css">
|
|
<META name="author" lang="en" content="Michiel Broek">
|
|
<META name="copyright" lang="en" content="Copyright Michiel Broek">
|
|
<META name="description" lang="en" content="MBSE BBS Manual">
|
|
<META name="keywords" lang="en" content="MBSE BBS, MBSE, BBS, manual, fido, fidonet, gateway, tosser, mail, tic, mailer">
|
|
<TITLE>MBSE BBS Programs - mbcico - The Fidonet mailer.</TITLE>
|
|
<LINK rel=stylesheet HREF="../manual.css">
|
|
</HEAD>
|
|
<BODY>
|
|
<BLOCKQUOTE>
|
|
<h5>Last update 03-Mar-2002</h5>
|
|
<P> <P>
|
|
|
|
<H1>mbcico - The Fidonet mailer.</H1>
|
|
|
|
<P>
|
|
This is work in progress....
|
|
<P>
|
|
|
|
<h3>Synopsis.</H3>
|
|
<P>
|
|
<code>-a<inetaddr> -l<ttydevice> <node> ...</code><br>
|
|
<code>-n<phone> </code>forced phone number<br>
|
|
<code>-l<ttydevice> </code>forced tty device<br>
|
|
<code>-t<tcpmode> </code>telnet TCP/IP mode, must be one of ifc|itn|ibn, forces TCP/IP<br>
|
|
<code>-a<inetaddr> </code>supply internet hostname if not in nodelist<br>
|
|
<code> <node> </code>should be in domain form, e.g. f11.n22.z3<br>
|
|
<code>-h </code>show this help message<br>
|
|
<br>
|
|
or: <code>mbcico tsync|yoohoo|**EMSI_INQC816|-t ibn|-t ifc|-t itn</code> (this is answer mode)
|
|
<P> <P>
|
|
|
|
<H3>Description.</H3>
|
|
<P>
|
|
<strong>mbcico</strong> stands for MBse "Internet - Fidonet Copy In /Copy Out",
|
|
this is a FidoNet(r) compatible transport agent. It is based on <strong>
|
|
ifcico</strong> written by Eugene G. Crosser, <crosser@average.org>,
|
|
2:5020/230@FidoNet. I changed the name of the program to make the difference
|
|
between <strong>ifcico</strong> and <strong>mbcico</strong>. Nowadays it is
|
|
quite different then ifcico.
|
|
<P>
|
|
Currently it supports FTS-0001, YooHoo/2U2 and EMSI handshake protocols,
|
|
Xmodem, Telink, Modem7, Hydra, SEAlink with and without overdrive and
|
|
crash recovery, Bark file and update requests, WaZoo protocols: DietIFNA,
|
|
plain Zmodem (aka ZedZip, EMSI flag "ZMO") and ZedZap, WaZoo file and
|
|
update requests (nodelist flag should be XA). WaZoo file and update requests
|
|
do also work with FTS-0001 sessions, this is supported by several well known DOS
|
|
mailers also.
|
|
Password protected requests and update requests are implemented (but not
|
|
yet full tested).
|
|
<P>
|
|
There is also a special protocol optimized to use over TCP/IP connections,
|
|
contributed by Stanislav Voronyi <stas@uanet.kharkov.ua>, it is
|
|
identiefied by EMSI proto code TCP (not registered) and nodelist flag IFC.
|
|
The default port is 60179. There is a telnet variant on this, the default
|
|
port is 23, and nodelist flag is ITN. The telnet variant is written by
|
|
T. Tanaka.
|
|
<P>
|
|
There is also a <strong>Binkp</strong> implementation, this is a
|
|
bi-directional TCP/IP protocol.
|
|
This protocol is prefferred over the IFC protocol because it is
|
|
more efficient. Nodelist flag is IBN, the default port is 24554, and the
|
|
nodelist request flag is XX. This Binkp implementation supports multiple
|
|
batches, however this is only tested against another <strong>mbcico.</strong>
|
|
I don't know if any other mailer supports this option, but it is documented
|
|
in the spec's. (Irex uses it).
|
|
<P>
|
|
Outbound directory structure is BinkleyTerm compatible, with domains and
|
|
point subdirectories (full 5d). There are separate "protected" and
|
|
"unprotected" inbound directories for the incoming sessions with the nodes
|
|
that are in your setup. Files received during outbound sessions are always
|
|
stored in the "protected" inbound.
|
|
<P>
|
|
"Magic" file request processors are executable files placed in the "magic"
|
|
directory. If a request is made for a file with matching name, the
|
|
executable from the "magic" directory is run, and its stdout output is mailed
|
|
to the requestor. Full requestor's address, in the form of "John Smith of
|
|
1:234/56/7" is passed to the executable in the command line. Non-executable
|
|
files in the magic directory contain the full names to magic filenames. The
|
|
magic NODELIST can thus point to the full path and filename of your latest
|
|
nodelist. These magic names are automatic maintained by the <strong>mbfido</strong>
|
|
program when the magic name is set in the .tic file that you receive.
|
|
<P>
|
|
To run <strong>mbcico</strong> in master mode, you need to make dialout
|
|
devices read/writeable for <strong>mbcico</strong>, and do the same for
|
|
the directory where your uucp locks are created (usually /var/locks).
|
|
<P> <P>
|
|
|
|
<h3>Answer Mode.</h3>
|
|
<P>
|
|
To make <strong>mbcico</strong> work in answer mode, you need <strong>
|
|
mgetty</strong> written by Gert Doering. <strong>mbcico</strong> must be
|
|
started with one of the following parameters:
|
|
<P><PRE>
|
|
FTS-0001 call: "/opt/mbse/bin/mbcico tsync"
|
|
FTS-0006 call: "/opt/mbse/bin/mbcico yoohoo"
|
|
EMSI call: "/opt/mbse/bin/mbcico **EMSI_....."
|
|
</PRE><P>
|
|
In the latter case the received EMSI packet should be passed whitout trailing
|
|
CR). To make this work <strong>mgetty</strong> must be compiled with the
|
|
-DFIDO option. Other getty programs might work.
|
|
<P>
|
|
To answer TCP/IP calls the following lines should be added to /etc/inetd.conf:
|
|
<P><PRE>
|
|
binkd stream tcp nowait mbse /opt/mbse/bin/mbcico mbcico -t ibn
|
|
tfido stream tcp nowait mbse /opt/mbse/bin/mbcico mbcico -t itn
|
|
fido stream tcp nowait mbse /opt/mbse/bin/mbcico mbcico -t ifc
|
|
</PRE><P>
|
|
If your system uses xinetd the file /etc/xinetd.d/mbsebbs could be:
|
|
<P><PRE>
|
|
#:MBSE BBS services are defined here.
|
|
|
|
service binkp
|
|
{
|
|
socket_type = stream
|
|
protocol = tcp
|
|
wait = no
|
|
user = mbse
|
|
instances = 10
|
|
server = /opt/mbse/bin/mbcico
|
|
server_args = -t ibn
|
|
}
|
|
|
|
service tfido
|
|
{
|
|
socket_type = stream
|
|
protocol = tcp
|
|
wait = no
|
|
user = mbse
|
|
instances = 10
|
|
server = /opt/mbse/bin/mbcico
|
|
server_args = -t itn
|
|
}
|
|
|
|
service fido
|
|
{
|
|
socket_type = stream
|
|
protocol = tcp
|
|
wait = no
|
|
user = mbse
|
|
instances = 10
|
|
server = /opt/mbse/bin/mbcico
|
|
server_args = -t ifc
|
|
}
|
|
</PRE><P>
|
|
In the file /etc/services the following lines must be present:
|
|
<P><PRE>
|
|
binkd 24554/tcp # mbcico IBN mode
|
|
tfido 60177/tcp # mbcico ITN mode
|
|
fido 60179/tcp # mbcico IFC mode
|
|
mbse 60180/tcp # MBSE BBS deamon
|
|
</PRE><P>
|
|
In this case I installed the ITN mode at port 60177 instead of 23 like most
|
|
sysops do.
|
|
<P> <P>
|
|
|
|
|
|
<h3>Calling Mode.</h3>
|
|
<P>
|
|
You never need to call nodes with <b>mbcico</b> by hand, <b>mbtask</b> will
|
|
start <b>mbcico</b> with the right commandline.<BR>
|
|
<B>Note:</B> you should not call nodes with mbcico directly, let
|
|
<b>mbtask</b> do the calling.
|
|
If you want to call a node make a <a href="mbout.html">poll</a> command.
|
|
<P> <P>
|
|
|
|
<h3>Environment.</H3>
|
|
<P>
|
|
In order to run the mbcico you need to set one global environment variable
|
|
<strong>$MBSE_ROOT</strong>
|
|
This variable must point to the root of the bbs directoy structure.
|
|
<P> <P>
|
|
|
|
<H3>Return Codes.</H3>
|
|
<P>
|
|
<pre>
|
|
0 - No errors
|
|
1..32 - OS errors, SIGHUP, SIGKILL, etc.
|
|
101 - No dialout ports available.
|
|
102 - Dial failed (no CONNECT or TCP connection failed).
|
|
103 - Could not reset the modem (no OK).
|
|
104 - System is locked.
|
|
105 - not used?
|
|
106 - Nodelist lookup failed.
|
|
107 - Call prohibited by config options.
|
|
108 - Phone number unavailable.
|
|
109 - No matching ports defined.
|
|
110 - Tried to call a CM system outside ZMH.
|
|
111..129 - Session failures (not defined).
|
|
130 - Could not establish session, system is marked undialable.
|
|
</pre>
|
|
These codes are also stored in status files for nodes, with the extension
|
|
of ".sts". These are small datafiles containing three decimal numbers.
|
|
<ol>
|
|
<li>Time retry code, this is the next call attempt time. This is an unsigned
|
|
long representing the number of seconds since the epoch. Before this time
|
|
the node may not be called. This is set after a failed call, a random time
|
|
in the near future is selected.
|
|
<li>Retries, this is the number of consequtive call attempts made that returned
|
|
"call failed" or other errors. This field is zeroed when the call succeeds and
|
|
when a new "poll" is created. If the value is 30, the node won't be called
|
|
anymore.
|
|
<li>Code, this is the return code of the last attempt.
|
|
</ol>
|
|
<p> <p>
|
|
|
|
<h3>Configuration.</H3>
|
|
<P>
|
|
The behaviour of mbcico can be configured with <strong>mbsetup</strong>,
|
|
section 1.17 If something doesn't do what you want, set the debug on for
|
|
that problem. This will produce huge logfiles, but also a lot of information.
|
|
Important flags are Device IO, EMSI debug, File forward, Locking, Outboundscan
|
|
and Session.
|
|
<P> <P>
|
|
|
|
<h3>Bugs.</H3>
|
|
<P>
|
|
Incoming calls from McMail mailers, McMail is quite hasty
|
|
to establish an EMSI session, and times out in less than a second. So
|
|
if your system is heavy loaded, or not too fast, McMail cannot connect
|
|
with your system. This is a known problem with McMail 1.0 and older,
|
|
later versions are ok.
|
|
<P> <P>
|
|
|
|
<H3>Authors.</H3>
|
|
<P>
|
|
<pre>
|
|
Eugene G. Crosser <crosser@average.org> Orginal ifcico.
|
|
Stanislav Voronyi <stas@uanet.kharkov.ua> TCP/IP code.
|
|
T. Tanaka Telnet mode.
|
|
Martin Junius Rewrite of opentcp().
|
|
Omen Technology Inc Zmodem protocol.
|
|
Arjen G. Lentz, Joaquim H. Homrighausen Hydra transfer protocol.
|
|
Cristof Meerwald Implementation of Hydra in ifcico.
|
|
P. Saratxaga Tty driver code, yoohoo extensions.
|
|
Dima Maloff Binkp protocol.
|
|
Michiel Broek Rewrite for MBSE BBS.
|
|
</pre>
|
|
<P>
|
|
|
|
<A HREF="index.htm"><IMG SRC="../images/larrow.gif" ALT="Index" Border="0">Back to index</A>
|
|
<A HREF="../index.htm"><IMG SRC="../images/b_arrow.gif" ALT="Main" Border="0">Back to Main index</A>
|
|
</BLOCKQUOTE>
|
|
</BODY>
|
|
</HTML>
|
|
|