302 lines
12 KiB
HTML
302 lines
12 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
|
<HTML>
|
||
|
<HEAD>
|
||
|
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||
|
<META http-equiv="Content-Style-Type" content="text/css">
|
||
|
<META NAME="Language" content='en'>
|
||
|
<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 - mbcico">
|
||
|
<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>
|
||
|
<!-- MBSEADVERT -->
|
||
|
<div align="right"><h5>Last update 23-May-2011</h5></div>
|
||
|
<div align="center"><H1>mbcico - The Fidonet mailer.</H1></div>
|
||
|
|
||
|
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 with zlib compression extension (FSP-xxxx),
|
||
|
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.
|
||
|
<P>
|
||
|
There is also a special protocol optimized to use over TCP/IP connections,
|
||
|
contributed by Stanislav Voronyi <stas@uanet.kharkov.ua>, it is
|
||
|
identified by EMSI proto code TCP (not registered) and nodelist flag IFC.
|
||
|
The default port is 60179. A telnet variant is installed at port 60177, the
|
||
|
nodelist flag is ITN:60177. The port number is needed because the default port
|
||
|
in the nodelist is port 23.
|
||
|
<P>
|
||
|
There is also a <strong>Binkp/1.1</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 uses zlib packet
|
||
|
compression opt PLZ (FSP-1032) to increase the transfer speed and to lower
|
||
|
the network bandwith usage. There is also support for the stream compression
|
||
|
modes GZ and BZ2 (compatible with binkd).
|
||
|
<P>
|
||
|
Since januari 2011 mbcico can use both IPv4 and IPv6 TCP/IP connections.
|
||
|
<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. An example of
|
||
|
such file is on my system, the filename in the magic directory is <b>STATUS</b>.
|
||
|
<pre>
|
||
|
echo " Hello $1 $2,"
|
||
|
echo ""
|
||
|
echo " Status report for MBSE BBS Development"
|
||
|
echo " --------------------------------------"
|
||
|
echo ""
|
||
|
echo "Date : `date`"
|
||
|
echo "System: `uname -mrs`"
|
||
|
echo "Uptime: `uptime`"
|
||
|
echo ""
|
||
|
echo "`df -T`"
|
||
|
echo ""
|
||
|
echo "`free`"
|
||
|
echo ""
|
||
|
echo "Gtx, Michiel Broek"
|
||
|
</pre>
|
||
|
If you file request STATUS from my system you will get something like:
|
||
|
<pre>
|
||
|
Hello John Doe,
|
||
|
|
||
|
Status report for MBSE BBS Development
|
||
|
--------------------------------------
|
||
|
|
||
|
Date : Sat Nov 8 17:29:07 CET 2003
|
||
|
System: Linux 2.4.20 i586
|
||
|
Uptime: 17:29:07 up 88 days, 20:02, 1 user, load average: 0.00, 0.00, 0.00
|
||
|
|
||
|
Filesystem Type 1k-blocks Used Available Use% Mounted on
|
||
|
/dev/hda2 ext3 5921096 3405184 2210276 61% /
|
||
|
/dev/hdb1 ext3 6198404 5133056 750476 88% /opt
|
||
|
|
||
|
total used free shared buffers cached
|
||
|
Mem: 94280 91360 2920 0 13152 46276
|
||
|
-/+ buffers/cache: 31932 62348
|
||
|
Swap: 136512 32380 104132
|
||
|
|
||
|
Gtx, Michiel Broek
|
||
|
</pre>
|
||
|
|
||
|
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
|
||
|
fido stream tcp nowait mbse /opt/mbse/bin/mbcico mbcico -t ifc
|
||
|
tfido stream tcp6 nowait mbse /opt/mbse/bin/mbcico mbcico -t itn
|
||
|
</PRE><P>
|
||
|
The tfido line is configured to answer on IPv4 and IPv6.
|
||
|
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
|
||
|
flags = IPv6
|
||
|
}
|
||
|
|
||
|
service fido
|
||
|
{
|
||
|
socket_type = stream
|
||
|
protocol = tcp
|
||
|
wait = no
|
||
|
user = mbse
|
||
|
instances = 10
|
||
|
server = /opt/mbse/bin/mbcico
|
||
|
server_args = -t ifc
|
||
|
}
|
||
|
</PRE><P>
|
||
|
If you want to use IPv6, add the line flags = IPv6 to the protocol
|
||
|
like in the example of tfido.
|
||
|
In the file /etc/services the following lines must be present:
|
||
|
<P><PRE>
|
||
|
binkd 24554/tcp # mbcico IBN mode
|
||
|
fido 60179/tcp # mbcico IFC mode
|
||
|
tfido 60177/tcp # mbcico ITN mode
|
||
|
</PRE>
|
||
|
<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.
|
||
|
100 - Commandline error.
|
||
|
101 - Configuration error.
|
||
|
103 - Disk full.
|
||
|
108 - File transfer error.
|
||
|
111 - Node not in nodelist.
|
||
|
112 - Node may not be called (Hold, Down, not ZMH).
|
||
|
113 - Could not make connection.
|
||
|
114 - Cannot open tty port.
|
||
|
115 - Node is locked.
|
||
|
116 - No IP address.
|
||
|
117 - Unknown session type.
|
||
|
118 - Not Zone Mail Hour.
|
||
|
119 - Modem error.
|
||
|
120 - Not port available.
|
||
|
121 - Session error.
|
||
|
122 - EMSI session error.
|
||
|
123 - FTSC session error.
|
||
|
124 - Wazoo session error.
|
||
|
125 - YooHoo session error.
|
||
|
126 - Outbound scan error.
|
||
|
127 - Cannot poll.
|
||
|
</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.14 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.
|
||
|
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.html"><IMG SRC="../images/larrow.png" ALT="Index" Border="0">Back to index</A>
|
||
|
<A HREF="../index.html"><IMG SRC="../images/b_arrow.png" ALT="Main" Border="0">Back to Main index</A>
|
||
|
</BLOCKQUOTE>
|
||
|
</BODY>
|
||
|
</HTML>
|
||
|
|