Last update 18-Sep-1999

# mbcico - the Fidonet mailer.

This is work in progress....

### SYNOPSIS

    -r<role> -a<inetaddr> <node> ...
    -r 0|1          1 - master, o - slave [0]
    -n<phone>       forced phone number
    -l<ttydevice>   forced tty device
    -t              telnet TCP/IP mode
    -a<inetaddr>    use TCP/IP instead of modem
       <node>       should be in domain form, e.g. f11.n22.z3
                    (this implies master mode)
    -h              show this help message

     or: mbcico tsync|yoohoo|**EMSI_INQC816
             (this implies slave mode)

### DESCRIPTION

mbcico stands for MB "Internet - Fidonet Copy In /Copy Out", this is a FidoNet(r) compatible transport agent. It is based on ifcico written by Eugene G. Crosser, <crosser@average.org>, 2:5020/230@FidoNet. I changed the name of the program to make the difference between ifcico and mbcico.

Currently it supports FTS-0001, YooHoo/2U2 and EMSI handshake protocols, Xmodem (untested), Telink (untested), Modem7 (untested), Hydra, SEAlink w/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). Password protected requests and update requests are implemented (but not yet full tested).

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.

Telnet over TCP/IP. This was written by T. Tanaka. Nodelist flag ITN. This is not yet tested.

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.

"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.

To run mbcico in master mode, you need to make dialout devices read/writeable for mbcico, and do the same for the directory where your uucp locks are created (usually /var/locks).

### ANSWER MODE

To make mbcico work in answer mode, you need mgetty written by Gert Doering. mbcico must be started with one of the following parameters:

    FTS-0001 call:       "/opt/mbse/bin/mbcico tsync"
    FTS-0006 call:       "/opt/mbse/bin/mbcico yoohoo"
    EMSI call:           "/opt/mbse/bin/mbcico **EMSI_....."

In the latter case the received EMSI packet should be passed whitout trailing CR). To make this work mgetty must be compiled with the -DFIDO option.

### MASTER MODE

To make mbcico scan for pending outbound mail and do appropriate calls, start it with -r1 flag. It will check for Zone Mail Hour, outside ZMH only crash mail is delivered or systems are polled if there is a poll request in the outbound. During ZMH all non-compressed mail is send. File requests in the outbound do not force calling a system. If you make a filerequest, you must also make a poll for that node to really start the request.

### ENVIRONMENT

In order to run the bbs you need to set one global environment variable $MBSE_ROOT This variable must point to the root of the bbs directoy structure.

### RETURN CODES

    0        - No errors
    1..32    - Linux 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.

These codes are also stored in status files for nodes, with the extension of ".sts". These are ascii files containing three decimal numbers in a single line:

1: Time retry code, this is the last call attempt time. This is an unsigned long representing the number of seconds since the epoch.

2: 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.

3: Code, this is the return code of the last attempt.

### CONFIGURATION

The behaviour of mbcico can be configured with mbsetup, 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. Watch out with the TTY debug, this is really a lot because almost everything send and received is logged.

### BUGS

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. Nodes running McMail should switch off EMSI or use a mailer that follows EMSI specifications (this is not the only EMSI bug in McMail).

### AUTORS

    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.
    Michiel Broek                             Rewrite for MBSE BBS.

Back to index Back to Main index