ENiGMA 1/2 + Binkd on CentOS 7

This is a quick guide …uh, set of notes so I don’t forget for configuring ENiGMA 1/2 BBS software along with Binkd on CentOS 7 in order to hook up to FTN “othernets” such as fsxNet.

Step 1: Build & Install Binkd

Clone a copy of Binkd from Github

git clone https://github.com/pgul/binkd.git  

Prepare, configure and build:

cd binkd  
cp mkfls/unix/* .  
./configure
make -j 4  
sudo make install  

Prepare Access

I’ll be running Binkd under the same account my BBS (Node.js/PM2) runs under, so create a couple directories and chown them:

sudo mkdir /var/run/binkd  
sudo mkdir /var/log/binkd  
sudo chown enigma:enigma /var/run/binkd  
sudo chown engima:enigma /var/log/binkd  

Binkd Config

Below is my current configuration script with a couple portions censored:

# Number @ end is the root zone
domain fsxnet /home/enigma/xibalba/mail/ftn_out 21

# Our fsxNet address
address 21:1/121@fsxnet

sysname "Xibalba"  
location "Salt Lake City, Utah"  
sysop "NuSkooler"

nodeinfo 115200,TCP,BINKP  
try 10  
hold 600  
send-if-pwd

log /var/log/binkd/binkd.log  
loglevel 4  
conlog 4  
percents  
printq  
 backresolv

inbound /home/enigma/xibalba/mail/ftn_in  
temp-inbound /home/enigma/xibalba/mail/ftn_in_temp

minfree 2048  
minfree-nonsecure 2048

kill-dup-partial-files  
kill-old-partial-files 86400

prescan

# Agency HUB
node 21:1/100@fsxnet -md ipv4.agency.bbs.geek.nz:24556 YOUR_SESSION_PASSWORD c

# our listening port (default=24554)
# use a different port for basic added security-ish (e.g. avoid generic scans)
iport 54554

pid-file /var/run/binkd/binkd.pid

# touch a watch file when files are received to kick of toss
flag /home/enigma/xibalba/mail/ftn_in/toss!.now *.su? *.mo? *.tu? *.we? *.th? *.fr? *.sa? *.pkt *.tic

# nuke old .bsy/.csy files after 24 hours
kill-old-bsy 43200  

ENiGMA 1/2 Config

Next, my ENiGMA 1/2 configuration (fragment) from config.hjson declaring message areas, node information, uplinks, etc.

{
    messageConferences: {
        /* ...other confs & areas ... */

        fsxnet: {
            name: fsxNet
            desc: "[F]un, [S]imple, e[X]perimental Network"
            sort: 2

            areas: {
                fsx_gen: {
                    name: General
                    desc: fsxNet chat, testing and more...
                    sort: 1
                }
            }
        }
    }

    messageNetworks: {
        originLine: Xibalba ~ xibalba.l33t.codes:44510

        ftn: {
            networks: {
                fsxnet: {
                    localAddress: "21:1/121"
                }
            }

            areas: {
                fsx_gen: {
                    network: fsxnet
                    tag: FSX_GEN
                    uplinks: [ "21:1/100" ]
                }
            }
        }
    }

    scannerTossers: {
        ftn_bso: {
            schedule: {
                import: every 1 hours or @watch:/home/enigma/mail/ftn_in/toss!.now
                export: every 1 hours or @immediate
            }

            defaultZone: 21
            defaultNetwork: fsxnet

            nodes: {
                "21:1/100": {
                    archiveType: ZIP
                    encoding: utf8
                }
            }
        }
    }

    //
    // Configure 7z, which is 7za on CentOS: just override some defaults
    //
    archivers: {
        zip: {
            compressCmd: "7za"
            decompressCmd: "7za"
        }
    }
}

Systemd

I’d like Binkd to run under Systemd. Below is my /usr/lib/systemd/system/binkd.service:

[Unit]
Description=BinkD FTN Server  
After=syslog.target network.target

[Service]
Type=forking  
ExecStart=/usr/local/sbin/binkd -D /home/enigma/xibalba/misc/binkd_xibalba.conf  
PIDFile=/var/run/binkd/binkd.pid  
ExecReload=/bin/kill -HUP ${MAINPID}  
ExecStop=/bin/kill ${MAINPID}  
User=enigma  
Group=enigma  
Restart=on-failure  
RestartSec=10

[Install]
WantedBy=multi-user.target  

Register it with the system and start!

systemctl enable binkd  
systemctl start binkd