| Recommend this page to a friend! |
| Packages of Matthew Asham | Binkterm PHP | docs/QWK.md | Download |
|
|||||||||||||||||||||
QWK Offline MailQWK is an offline mail format originating from the BBS era. Instead of reading and writing messages while connected, you download a packet containing all new messages, disconnect, read and reply at your leisure in a local reader application, then reconnect and upload the reply packet. BinktermPHP supports the standard QWK format and the QWKE (QWK Extended) variant which carries full FidoNet metadata. Table of Contents
How It Works
The same workflow is also available through the optional FTP daemon:
You must download a QWK packet at least once before uploading a REP packet. The download establishes the conference map that BinktermPHP uses to route your replies back to the correct echo areas. Packet FormatsQWKThe standard QWK format encodes message text in CP437 (PC character set). Conference and message header fields are limited to 25 characters for To, From, and Subject. QWK is supported by virtually all offline readers. QWKEQWKE (QWK Extended) is a backward-compatible extension that carries full
FidoNet metadata inside the packet. BinktermPHP signals QWKE support via
Both QWK and QWKE export message bodies in CP437. Differences in QWKE:
QWKE is recommended for readers that support it. Use plain QWK for maximum compatibility with older readers. Choosing QWK vs QWKEHTTP downloads can choose the format explicitly with
FTP downloads do not currently expose a separate path or filename for choosing
the format. Instead, ConferencesPersonal Mail (Conference 0)Conference 0 is always Personal Mail ? netmail addressed to you. Messages in
this conference are marked private ( Echo AreasEach echo area you subscribe to is assigned a stable, BBS-wide conference number (stored persistently on the echo area record). These numbers are consistent across all users and across downloads ? subscribing or unsubscribing from other areas does not change the conference numbers you already know. Conference names in Message LimitsEach download is limited to a configurable number of messages across all conferences combined: | Setting | Value | |---|---| | Default per-download limit | 2,500 messages | | Hard cap | 10,000 messages | You can choose a preferred limit (500 ? hard cap) in the web UI; the preference
is saved to your account. The limit can also be overridden per-request via the
When the limit is reached, messages are included in conference order (Personal Mail first, then echo areas in conference-number order) and older messages within each conference are prioritised over newer ones. Composing MessagesSubject LinesThe QWK message header has a fixed 25-character subject field. In QWKE mode,
BinktermPHP writes a plain-text In plain QWK mode subjects are hard-limited to 25 characters. Sending NetmailReplies to received netmail are automatically routed to the FTN address of the original sender via the message index ? no special action is needed. To compose new netmail to an arbitrary FTN address, put the destination in the To field using the following format:
Examples:
The address portion after If no address is embedded and no reply reference is present, the message is routed to the system address as a fallback. Uploading a REP PacketREP upload parsing is shared across the web UI, the HTTP API, and FTP. There is no separate "QWKE upload mode" switch. BinktermPHP inspects the uploaded packet's contents and imports QWKE extended headers when they are present. ValidationBinktermPHP validates the REP packet before importing any messages:
Messages with an empty body are silently skipped. Messages with activity flag
DeduplicationBinktermPHP computes a SHA-256 hash of each imported message's content (conference number, To name, Subject, and body). If an identical message has been imported before, it is skipped. This means re-uploading the same REP packet is safe ? no duplicate messages will be posted. Reply ThreadingEach QWK download records a message index mapping QWK logical message numbers
(1-based, sequential across all conferences) to internal database IDs. When a
reply packet references a message number in the The index is replaced on every download, so reply references are only valid against the most recent packet. API Endpoints| Method | Path | Description |
|---|---|---|
| All endpoints require authentication and return JSON (except If the optional FTP daemon is enabled, the equivalent FTP paths are:
Recommended Readers| Reader | Platform | QWK | QWKE | |---|---|---|---| | MultiMail | Linux, Windows, macOS | ? | ? | | OLX | DOS | ? | ? | | Yarn | Cross-platform | ? | Partial | QWKE support in readers varies. MultiMail reads and writes QWKE extended
subject, to, and from headers and passes |