-
Notifications
You must be signed in to change notification settings - Fork 3
Sklaffkom and FTN (Linux)
FTN (Fidonet Technology Networks) is the collective name of different messaging networks, in many ways similar to Usenet, that is based on a specific base of standards collectively known as FTN.
Sklaffkom now has support for these technologies and thus making it possible for Sklaffkom to become a node in one of the many different messaging networks still (semi) active.
This guide describes to make this work. This guide does however not describe how you apply for membership and a node number in each of these messaging networks since the application process is different for each one. You'll figure it out.
Examples of message networks includes FsxNet, Fidonet, AmigaNet, and so on. There are plenty to choose from, however most of them are dormant or nearly abandoned - much like Usenet. If you would take our advice - start with FsxNet, it's friendly and easy to get started with. If you are looking for a daily dose of pain and abuse, choose Fidonet and participate in the Fidonews echo. You have been warned.
You need some more software to get this working. The first thing you need to figure out is how to get Binkd to work. Binkd (or "The Binkley Daemon") is what is called a "mailer" - it's the transport mechanism to recieve and send messages to and from your Sklaffkom system and it operates via it's own protocol (the Binkd protocol). Back in ye olden days (sits down on the back porch and lights up a pipe) mailers like FrontDoor and BinkleyTerm used analogue modems and the POTS ("Plain Old Telephone System") to transmit this data and even while you technically can get both these software packages to work over TCP/IP, they do not support Linux.
Binkd supports Linux, it's well tested and solid as a rock. So we'll go with Binkd. Hell, Binkd is ported to everything from AmigaOS and OS/2 to Windows NT and onwards.
(Rumor has it there is a Linux version of FrontDoor in the works. We'll update this guide when it becomes available.)
You also require a "Tosser" - this is a piece of software that takes the incoming message packages recieved by Binkd, sorts them and puts them in the right directory and also collects outgoing messages and puts them in the correct directory for Binkd to send out to the world. Any sane person will use Crashmail, and so will we. Please note that Sklaffkom does not support the otherwise excellent JAM message database - we can only deal with files in the plain old .MSG format so any tosser that does not support that will not work.
Last but not least, you need software to unpack and pack the message packages. Some FTN networks still require this, some don't. This is a legacy thing from when these transfers was made via POTS and phone calls was expensive. Zip and Unzip are readily available in most Linux distributions, Lharc is not. More on compiling Lharc in the end of this guide.
If you are one of the unfortunate souls who thinks using Ubuntu Linux is a good idea, then you can simply install Binkd from the regular apt repo.
If you however value stability, order, stability and thinks long beards are a good thing, then you can use Rocky Linux 10 and you have to compile the damn thing yourself.
This is however not very hard.
Start by cloning the Binkd repo by running git clone https://github.com/pgul/binkd to somewhere reasonable. /usr/local/src for example.
Go into the Binkd directory and copy the correct config files for the Unix like operating systems by entering cp mkfls/unix/* .. Then run ./configure and unless you have messed up something in your Sklaffkom system, this stage will pass without any drama. Then run make and check for any errors, again - this should run without any drama - maybe a warning or two but you can probably ignore them for now. Then run make install.
Create a directory for the Binkd configuration file. I recommend /etc/binkd. Copy /usr/local/etc/binkd.conf-dist to /etc/binkd/bind.conf. Create a directory structure for incoming and outgoing messages - we recommend putting this in /ftn. Check /etc/binkd.conf for all directories required and check and double check you have removed the ~ from each path in /etc/binkd.conf.
This is a working example of a binkd.conf file. Make sure you change all settings (paths, node numbers, etc) to match your own. Do not use this file as-is!
log /var/log/binkd
loglevel 6
domain fsxnet /ftn/outbound 21
address your-node-number@fsxnet
sysname "Sklaffkom"
location "Vallentuna, Sweden"
sysop "Joakim Melin"
nodeinfo 115200,TCP,BINKP
conlog 4
try 10
hold 10m
send-if-pwd
percents
printq
backresolv
pid-file /ftn/binkd.pid
inbound /ftn/inbound
inbound-nonsecure /ftn/inbound
temp-inbound /ftn/inbound-temp
minfree 2048
minfree-nonsecure 2048
kill-dup-partial-files
kill-old-partial-files 1d
kill-old-bsy 12h
exec "crashmail toss settings /etc/binkd/crashmail.prefs" *
prescan
# passwords ~/ftn/binkd/passwords
defnode -nd *
Please make note of this line in the above binkd.conf example:
exec "crashmail toss settings /etc/binkd/crashmail.prefs" *
This means that any time Binkd recieves a message package, it will run Crashmail and "toss" the messages into the correct directory.
You also need to make sure Crashmail scans for outgoing packages regurarely by putting something like this in Crontab:
*/5 * * * * sh /usr/bin/crashmail scan settings /etc/binkd/crashmail.prefs >/dev/null 2>&1
More on configuring Crashmail later in this guide.
[Unit]
Description=binkd
Documentation=man:binkd(8)
After=network.target
[Service]
Restart=on-failure
ExecStart=/usr/local/sbin/binkd /etc/binkd/binkd.conf -q -C
ExecReload=/bin/kill -HUP $MAINPID
User=root
Group=root
[Install]
WantedBy=multi-user.target
Crashmail was written in ye olden times by Johan Billing for the Amiga. Later it was ported to Linux and sometimes goes under the name "Crashmail II". If you are using Ubuntu Crashmail II will probably still be available in the official Ubuntu repo (at least that was the case in Ubuntu 22.04.5 LTS). If you are using some other Linux distribution (i.e any RHEL derivate) then you need to compile Crashmail-.
Clone this Git repo:
git clone https://github.com/loppanloppis/crashmail
Move in to the crashmail directory and run make linux. This will place the binary files in /bin in the crashmail directory. Copy all those files to wherever you want to run them (/usr/local/bin is usually a good idea).
This is a working crashmail.prefs file. Again: Make sure you change all settings (paths, node numbers, etc) to match your own. Do not use this file as-is!
SYSOP "Joakim Melin"
LOGFILE /var/log/crashmail.log
LOGLEVEL 6
DUPEFILE /ftn/crashmail.dupes 200
DUPEMODE BAD
LOOPMODE IGNORE
MAXPKTSIZE 0
MAXBUNDLESIZE 0
DEFAULTZONE 21
DEFAULTORIGIN "Sklaffkom (sklaffkom.se, Vallentuna Sweden)"
; Paths
INBOUND /ftn/inbound
OUTBOUND /ftn/outbound
STATSFILE /etc/binkd/CrashMail.stats
TEMPDIR /ftn/tmp/
CREATEPKTDIR /ftn/tmp/
PACKETDIR /ftn/packets/
STRIPRE
FORCEINTL
ANSWERRECEIPT
ANSWERAUDIT
CHECKSEENBY
PATH3D
MSG_HIGHWATER
IMPORTAREAFIX
BOUNCEPOINTS
IMPORTSEENBY
AREAFIXREMOVE
ADDTID
ALLOWRESCAN
GROUPNAME A Default
PACKER LHA "/usr/local/bin/lha a %a %f" "lha x -m -M %a #?.pkt" ??-lh?-
PACKER LZH "/usr/local/bin/lha -0 a %a %f" "lha x -m -M %a #?.pkt" ??-lh?-
PACKER ZIP "/usr/bin/zip %a %f" "/usr/bin/unzip -j %a" PK
AKA YOUR-NODE-NUMBER
DOMAIN "Fsxnet"
NODE YOUR-HUB-NODE-NUMBER "" "" PACKNETMAIL AUTOADD CRASH
NODE YOUR-NODE-NUMBER "" "" AUTOADD
AREAFIXHELP /etc/ftn/areafixhelp.doc
AREAFIXMAXLINES 0
AREAFIXNAME AreaFix
AREAFIXNAME AreaMgr
AREAFIXNAME CrashMail
ROUTE 21:*/*.* YOUR-HUB-NODE-NUMBER YOUR-NODE-NUMBER
NETMAIL "NETMAIL_FSX" 21:2/130.0 MSG /ftn/netmailfsx LATIN-1 DEFAULT
AREA "FSX_GEN" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_GEN LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_DAT" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_DAT LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_MAG" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_MAG LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_NET" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_NET LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_BOT" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_NET LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_GAMING" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_GAMING LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_VIDEO" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_VIDEO LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_RETRO" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_RETRO LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_BBS" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_BBS LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_MUSIC" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_MUSIC LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_MYS" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_MYS LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_HAM" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_HAM LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_ENG" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_ENG LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_CRY" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_CRY LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_TST" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_TST LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
AREA "FSX_ADS" YOUR-NODE-NUMBER MSG /ftn/echomail/FSX_ADS LATIN-1 DEFAULT
EXPORT YOUR-HUB-NODE-NUMBER
Note that the directory for each echo (example: /ftn/echomail/FSX_ADS) needs to named exactly like the echo is named for Sklaffkom to be able to import any messages. More on that later.
Make sure you have downloaded the latest code for Sklaffkom from this repo.
Edit sklaff.h accordingly and take note of this line:
#define FTN_SPOOL "/etc/ftn/echomail"
Change this path to wherever you intend to store the FTN message files. As you may note in our crashmail.prefs example above, we store each FTN based conferance in /ftn/echomail/conferance_name and these two settings are therefor connected and must both be correct.
After you have compiled and installed the new version of Sklaffkom (make sure to copy the updated help.swe and help.eng directories to /usr/local/sklaff/etc or wherever you have installed Sklaffkom) it's time to get some more stuff done.
Create these directories and make sure the sklaff user owns them:
sudo mkdir -p /usr/local/sklaff/ftnqueue/tmp
sudo mkdir -p /usr/local/sklaff/ftnqueue/pending
sudo chown -R sklaff /usr/local/sklaff/ftnqueue
sudo chmod -R og-rwx /usr/local/sklaff/ftnqueue
Insert these lines in your crontab file:
*/5 * * * * /usr/local/bin/ftnqueue-runner >/dev/null 2>&1
*/5 * * * * /usr/local/bin/ftntoss --import-all-areas --include-unsafe >/dev/null 2>&1
A complete crontab file will look something like this:
*/5 * * * * sh /etc/newstoss.sh >/dev/null 2>&1
*/5 * * * * sh /etc/mailtoss.sh >/dev/null 2>&1
*/5 * * * * sh /usr/local/bin/ftnqueue-runner > /dev/null 2>&1
*/5 * * * * sh /usr/local/bin/ftntoss --import-all-areas --include-unsafe >/dev/null 2>&1
*/5 * * * * sh /usr/bin/crashmail scan settings /etc/binkd/crashmail.prefs >/dev/null 2>&1
/etc/newstoss.sh and /etc/mailtoss.sh are two scripts that we run to import Usenet news and incoming email for each user.
Since we are executing Crashmails tossing of new incoming packages this does not need to be run via Crontab.
Create a new meeting as usual and select FTN as the meeting type. Make sure you name the meeting exactly like it's named in the network you participate in. Example: If the echo is named FSX_GEN, you need to name the meeting FSX_GEN and this name need to match the name of the directory you configured in Crashmail.
Lharc (or "Lhasa") on Rocky Linux 10:
sudo dnf groupinstall "Development Tools"
sudo dnf install autoconf automake libtool
git clone https://github.com/fragglet/lhasa.git
cd lhasa
autoreconf -fi
./configure
make
make install
This documentation is provided as-is. It makes no claims beyond "it works for us and it may not work for you".
This documentation may also contain certain attempts at humor and may contain opinions you may or may not agree with. This is a "you" problem, not a "we" problem.
Please adhere to the old rule: read twice, type once. Do not copy commands and configuration data blindly, analyze what it actually means before you try it.
Thanks,
The management.