AMIBINKD
Native AmigaOS 3.x port of binkd, the FTN mailer
===============================================================================
DESCRIPTION
===============================================================================
AmiBinkD is a native AmigaOS 3.x build of binkd, the FidoNet Technology
Network (FTN) mailer, used to send and receive FTN echomail/netmail
packets over TCP/IP using the BinkP protocol.
Unlike every prior Amiga build of binkd, this one does not require
ixemul.library or ixnet.library. It talks to bsdsocket.library directly,
and every place the historical Amiga port depended on ixemul's vfork()-
based process model has been replaced with a synchronous, single-session
execution path native to classic AmigaOS.
This is a from-scratch reconstruction, not a recompile of the old ixemul
Amiga port. It was built by tracing every ixemul/ixnet dependency in
upstream binkd's own historical Amiga support and replacing each one with
a direct AmigaOS/bsdsocket.library equivalent, then hardening the result
against several real behavioral differences between Amiberry's
bsdsocket_emu and genuine Roadshow/BSD sockets that only showed up under
live testing, not at compile time. See manual.txt section 17 for the
full list, if you're maintaining this on a different TCP/IP stack.
For full installation notes, configuration reference, known real-hardware
findings, and version history, see manual.txt.
FILES INCLUDED
===============================================================================
AmiBinkD Compiled AmigaOS executable (m68k, AmigaOS 3.0+)
readme.txt Quick overview and install notes
manual.txt Full SysOp documentation
amibinkd-example.cfg Example configuration file
Copy amibinkd-example.cfg to a name of your choosing (e.g. AmiBinkD.cfg,
or one file per network -- see manual.txt section 07) and edit it for
your system before running.
REQUIREMENTS
===============================================================================
* Commodore Amiga or compatible/emulated Amiga system, AmigaOS 3.0+ (m68k)
* bsdsocket.library -- Roadshow, AmiTCP, or (as tested) Amiberry's
bsdsocket_emu
* An FTN-aware BBS engine or tosser to hand packets to/from (built and
tested against C-Net/5 Amiga Pro, but AmiBinkD itself only reads/writes
standard FTN packet and outbound-flow files -- it doesn't call into
C-Net/5 directly)
* At least one FTN address and an uplink/hub willing to carry your mail
AmiBinkD is a standalone compiled executable. It has no ixemul.library or
ixnet.library dependency of any kind -- confirmed via string search on
the built binary.
IMPORTANT LIMITATION: ONE SESSION AT A TIME
===============================================================================
Classic AmigaOS has no fork()/pthreads without ixemul. AmiBinkD runs every
BinkP session -- inbound or outbound -- synchronously, one at a time, in
the same process. If you poll several networks, either use several -P
addresses in one invocation or chain separate invocations from a driver
script (see manual.txt section 09); either way, each session runs to
completion before the next one starts. This is an intentional, working
v1 design, not a bug -- see manual.txt section 05 for the reasoning.
QUICK INSTALL
===============================================================================
1. Copy the AmiBinkD folder to your BBS mail directory.
Example:
Mail:AmiBinkD/AmiBinkD
2. Copy amibinkd-example.cfg to AmiBinkD.cfg (or a per-network name --
see manual.txt section 07) and edit it: your domain(s), your FTN
address(es), sysname/location/sysop, log path, inbound directories,
and your node/hub line(s) with the real host, port, and password.
3. Create the directories your config references if they don't already
exist: the outbound directory named in each "domain" line, the
inbound/temp-inbound directories, and the log directory.
4. Test an outbound poll manually first, from a Shell:
AmiBinkD:AmiBinkD -p -P<address> AmiBinkD:AmiBinkD.cfg
5. Review the log, then set up your regular polling schedule and/or
inbound server (see manual.txt sections 09-10).
BASIC MAIL FLOW
===============================================================================
1. AmiBinkD polls (outbound) or accepts a connection (inbound), performs
the BinkP handshake, and exchanges queued files/packets over TCP.
2. Received .pkt files land in your configured inbound directory.
3. Your tosser (e.g. C-Net/5's Toss) processes them into your message
bases.
4. Outbound mail queued by your BBS/tosser into the domain's outbound
directory gets picked up and sent on the next poll.
===============================================================================
VERSION HISTORY
===============================================================================
v10.0 - Native AmigaOS Port
----------------------------
* Rebuilt from a clean upstream binkd checkout with every ixemul/ixnet
dependency replaced by native AmigaOS/bsdsocket.library equivalents,
rather than patching an incomplete existing Amiga port.
* Runs each BinkP session synchronously (no fork()/pthreads needed) --
a genuine, working single-session-at-a-time design.
* Found and fixed several real behavioral differences between
Amiberry's bsdsocket_emu and genuine BSD sockets that only surfaced
under live testing (getaddrinfo(), non-blocking I/O, accept()
blocking after a ready select(), WaitSelect() signal handling) -- see
manual.txt section 17 for the full list.
* Verified two ways before shipping: cross-compiled clean (zero
warnings) with the bebbo/amiga-gcc toolchain, and run live on a
production Amiberry instance -- confirmed both outbound (client/poll)
and inbound (server) sessions, including a full multi-network polling
run (7 networks) with real inbound file reception and successful
tosser import, not just clean-looking session logs.
* Soak-tested unattended overnight across all 7 configured networks with
no hangs, no gaps, and no recurrence of any fixed bug.
For the full technical history -- every ixemul-era assumption replaced,
every real-hardware finding, and why each fix works the way it does --
see manual.txt section 17 and 21.
SECURITY NOTES
===============================================================================
AmiBinkD accepts inbound TCP connections and moves files onto your
system based on what a remote FTN node sends it.
Recommended precautions:
* Set a real per-node password (areafix password) for every "node" line
-- don't leave a node unauthenticated unless you mean to.
* Use send-if-pwd (on by default in the example config) so an
unauthenticated session can only receive, not pull mail from you.
* Keep your inbound/outbound directories separate from directories your
BBS treats as directly executable or auto-processed without review.
* Review your log regularly.
* Keep backups.
DISCLAIMER
===============================================================================
AmiBinkD is provided as-is. It is a from-scratch reconstruction of
ixemul-dependent Amiga binkd behavior verified against one real system
(Amiberry-emulated AmigaOS 3.x, bsdsocket_emu) -- other bsdsocket.library
implementations (real Roadshow, AmiTCP) have not been tested and may
behave differently; see manual.txt section 17 before assuming a finding
there applies to your setup.
Every FTN network and BBS system is different. Test carefully before
using this on a live system carrying real mail.
The author is not responsible for lost mail, misconfigured domains/
addresses, missing passwords, or damage caused by improper setup.
Always keep backups.
CREDITS
===============================================================================
AmiBinkD is a native AmigaOS port of binkd
(https://github.com/pgul/binkd), originally written by Dima Maloff and
maintained by the binkd project. All BinkP protocol logic, FTN packet
handling, and configuration semantics are upstream binkd's; this port's
own work is the AmigaOS/bsdsocket.library integration layer and the
real-hardware fixes documented in manual.txt.
Built and tested for:
Reign of Fire BBS
C-Net/5 Amiga Pro
call.rofbbs.com:6800
Website:
https://www.rofbbs.com
SysOp / Author (Amiga port):
Gary "Spitfire" McCulloch
Networks tested against:
AmigaNet, ArakNet, CommodoreNet, DiscipleNet, FidoNet, PiNet, RetroNet
===============================================================================
END OF README.TXT SpitfireTN Entertainment
===============================================================================
|