IFCICO(8)
π IFCICO(8) β the FTN mailer, but make it make sense π
okay bestie, so this is the manual page for ifcico, section 8 of the FTN mailer manual. it's giving "your girl dials out to other FidoNet nodes and handles the whole handshake situation". let's get into it π«Ά
β¨ NAME β¨
ifcico β Establish connections with other FTN nodes.
β¨ SYNOPSIS β¨
ifcico [-h] [-x<verbosity>] [-I<file>] [-r0|1] [-n<phone>]
[-l<ttydevice>] node
ifcico [-h] [-x<verbosity>] [-I<file>] [-r0|1] [-t0|1]
-a<inetaddr>[:<port>] node
ifcico tsync | yoohoo | **EMSI_INQC816
(that last one implies slave mode, bestie β noted, we'll get there)
β¨ DESCRIPTION β¨
Ifcico stands for "Internet - Fidonet Copy In / Copy Out" and it is, no exaggeration, a FidoNet(r) compatible transport agent. iconic behavior.
right now it supports a whole roster, and I mean a roster:
- FTS-0001
- YooHoo/2U2
- EMSI handshake protocols
- Xmodem (untested π)
- Telink (untested π)
- Modem7 (untested π)
- SEAlink w/overdrive and crash recovery
- Bark file and update requests
- WaZOO protocols: DietIFNA, plain Zmodem (aka ZedZip, EMSI flag
"ZMO"), ZedZap and Hydra - WaZOO file and update requests (nodelist flag should be
XA)
Password protected requests are not implemented. periodt, don't ask. and there are plans to implement Janus protocol in the future. we'll see π
There is also a special protocol optimized to use over TCP/IP connection, contributed by Stanislav Voronyi <stas@uanet.kharkov.ua>, it is identified by EMSI proto code TCP (not registered). so if you see TCP in there, that's him, that's the guy β¨
Outbound directory structure is BinkleyTerm compatible, with domains and point subdirectories (full 5d). okay so here's the tea on inbound dirs: there are separate "listed" and "protected" inbound directories for the incoming sessions with the nodes present in the nodelist(s) and with nodes that have a password assigned respectively. Files received during an outbound session are always put into the "protected" directory. (Only "protected" directory is looked up by ifunpack by default.) so like. don't be surprised. π
"Magic" file request processors are executable files placed in the "magic" directory. If request is made for a file with matching name, the executable from the "magic" directory is run, and its stdout sent to the requester. Full requester's address, in the form "John Smith of 1:234/56.7" is passed to the executable in the command line. See "misc/FILES" for an example of a magic request processor. Non-executable files in the "magic" directory are "references". If a request is made for a file with matching name, the file is read line by line, and request re-made for the name found in each line. Up to 5 levels of recursion are allowed. no cap, five.
To run ifcico in master mode, you must make dialout devices read/writable for ifcico, -B and do the same for the directory where your uucp locks are created (usually /var/lock/). yes you literally have to go do that, it's not gonna do itself π§
To make ifcico work in answer mode, you need an FTN-able getty. Linux "standard" getty_ps, and Gert Doering's mgetty (from the mgetty+sendfax package) and later versions have fidonet support built-in. Getty must distinguish incoming FidoNet type calls, and start ifcico with one parameter:
FTS-0001 call: "ifcico tsync"
FTS-0006 call: "ifcico yoohoo"
EMSI call: "ifcico **EMSI_....."
(in the latter case the received EMSI packet should be passed without trailing CR).
If you are using getty_ps, don't forget to create the file /etc/default/uugetty with the contents similar to the following (case sensitive):
FIDO=/usr/local/lib/fnet/ifcico
EMSI=yes
When called without parameters, ifcico runs in slave mode and determines the type of inbound session itself. This mode may be used when ifcico runs as an internet or ISDN daemon. main character energy honestly π
To make ifcico scan for pending outbound mail and do appropriate calls, start it with "-r1" flag. To force polling of particular nodes, specify these nodes in the command line (addresses should be in domain notation, e.g. "ifcico f23.n5020 f155.n5020"). The latter implies master mode (-r1). Note that "hold" packets and files, as well as file requests, do not cause the node to be polled. soz, that's just how it is.
Inbound directory is created automatically if it does not exist, along with the "tmp" subdir. The latter is used while receiving files. After being successfully received, the files are moved up to the "inbound" directory. "protinbound" and "listinbound" directories accept files received during password protected sessions and session with the nodes present in the nodelist(s) respectively. π
Ifcico can use text format nodelists in original (MS/DOS) form with <CR><LF>'s as well as in UNIX form, with <LF>'s only. When you get a fresh nodelist, or change the "nodelist" statements in the config file, you must rebuild index with ifindex program. mandatory. no skipping π
For outgoing calls, status files are created for nodes, with the extention ".sts". These are ascii files containg three decimal numbers in a single line:
time retries code
timeis the last call attempt time (attempts failing with"retry time not reached"do not count). It is unsigned long representing the number of seconds since the epoch.retriesis the number of consequitve call attempts made that returned"call failed"or"could not establish session". This field is zeroed when call succeeds.codeis the return code of the last attempt.
nlpatch program compiles a new version of the nodelist from the old nodelist and nodediff.
β¨ OPTIONS β¨
-hβ Display a short help message. the little "help me" moment π«Ά-xVerbosity β Set the debug verbosity. Verbosity may be a number from0to32to set 'on' bits from 1 to number, or a string of letters where'a'= bit 1,'b'= bit 2, etc. up to bit 26.-IFile β Use the alternate configuration file File.-rRole β1- master,0- slave. default is0(slave mode) if no node is provided; else the default is1(master mode).-aInetaddr β Tell an internet address Inetaddr to make a connection by TCP/IP. A specific port can be given (-aInetaddr:Port ). The default is the one given byfidoin/etc/services.-tMode β0- TCP,1- Telnet-Vmodem. Tells the mode to use for TCP/IP connections, the default is TCP mode (-t0).-nPhone β For modem conections, this overrides the phone number given in the nodelist.-lTtyDevice β For modem connections, this overrides the tty value give in the config file.Nodeβ This is the FTN addres of the node to call. The addres must be in the format"[pNN.]fNN.nNN[.zNN[.domain]]".tsync | yoohoo | **EMSI_INQC816β Those values are typically given by an FTN-able getty (mgettyorgetty_ps), they determine the type of FTN protocol to use. They imply slave mode.
β¨ RETURN CODES β¨
ifcico returns maximum return code for all calls made. Codes are as follows:
0β Successfull call1β Dialout port unavailable2β Dial failed (no"CONNECT"or TCP connection failed)3β Could not reset the modem (no"OK")4β System locked5β Retry time not reached6β Fatal error in nodelist lookup7β Call prohibited by config options8β Phone number unavailable9β No matching ports defined10β Unused>10β Session failures (not defined yet)30β Could not establish session
bestie the >10 one literally says "not defined yet". that's the whole bit. π
β¨ FILES β¨
$IFLIBDIR/configβ Runtime configuration file./etc/servicesβ Determines the default port number forfido, the port used byifcicofor tcp connections.nodelist.???β A list of nodes in an FTN network.ifcicouses it by compiling it withifindex$BINDIR/ifindexβ compiles a nodelist soifcicocan use it.$BINDIR/ifstatβ show statistics of calls, etc.
β¨ SEE ALSO β¨
ifmail(8), ifindex(8), ifinfo(8), ifstat(8), ifpack(8), ifunpack(8), iftoss(8), mgetty(8), getty(1)
β¨ ACKNOWLEDGEMENTS β¨
Some ideas taken from Fidogate/RFmail package, written by Teemu Torma and hacked by Martin Junius. Some tcp code taken from JE version, written by Tsuneo Tanaka <ttan@twics.com>
Hydra protocol support by Christof Meerwald <cmeerw@htl.fh-sbg.ac.at>
1993, 1994 Eugene Crosser
This is free software. You can do what you wish with it as long as this copyright notice is preserved.
Manpage by Pablo Saratxaga <srtxg@chanae.alphanet.ch>
and that's the whole thing, bestie β 4th Berkeley Distribution energy, dated September 24, 1998, and yeah, the vibe check is immaculate. go poll some nodes. π β¨π
π¦ where this page comes from
- debian bookworm: ifcico 2.14tx8.10-27+b1
- debian trixie: ifcico 2.14tx8.10-32
- ubuntu jammy: ifcico 2.14tx8.10-26
- ubuntu noble: ifcico 2.14tx8.10-28
- ubuntu questing: ifcico 2.14tx8.10-32
- ubuntu resolute: ifcico 2.14tx8.10-32build1
- ubuntu stonking: ifcico 2.14tx8.10-32build1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms