This file briefly describes the QWK file format. The following is an abbreviated version of Appendix G of DELUXE.DOC: DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD All of the messages in a mail packet are contained in a file named MESSAGES.DAT. The file's logical record length is 128 bytes. The first record of MESSAGES.DAT always contains Sparkware's copyright notice produced by The Qmail Door. Messages start in record #2 and use this format: Starting Position,Length Description ------------------------ ---------------------------- 1,1 Message status flag 2,7 Message number 9,8 Date (MM-DD-YY) 17,5 Time (HH:MM) 22,25 To 47,25 From 72,25 Subject 97,12 Password 109,8 Message reference number 117,6 Number of blocks 123,1 Message status 124,2 Conference number The text of message continues in the next record. You can find out how many blocks make up one message by looking at the value of "Number of blocks". Message text is delimited by a pi symbol (ASCII 227) between lines. The xxx.NDX files contain record numbers that point into the MESSAGES.DAT file for actual messages. Each conference that contains messages has its own "xxx.NDX" file. The "xxx" is the conference number for the index file. Each .NDX file uses a five byte logical record length and is formatted to: Starting Position,Length Description ------------------------ ------------------------ 1,4 Record number of message in MKS$ format. 5,1 Conference number. DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD The formula for converting x, a LONGINT in MKS$ format, to MKSToNum, a binary integer, is: MKSToNum := ((x AND NOT $ff000000) OR $00800000) SHR (24 - ((x SHR 24) AND $7f)); It's not pretty but it works (and it only handles positive numbers). The CONTROL.DAT is a text file containing information about the host BBS and conference information. Here is a sample one with comments: Ivo Andric Memorial BBS ;bbs name Victoria, BC, CANADA ;bbs location 604-380-0297 ;bbs number Gwen Barnes, Sysop ;format is "First Last, Sysop" 20001,ANDRIC ;DOOR_SERIAL,PACKET_ID 01-09-1991,14:54:44 ;mm-dd-yyyy,hh:mm:ss ..pkt time GREG HEWGILL ;user name ;name of QMENU file if exists 0 ;unknown 0 ;unknown 254 ;total # of conferences - 1 0 ;# of first conf Local ;name of conf (10 chars max) 1 ;# of second conf I_Central ;etc...for 255 confs ... 255 ;this is the 255'th conf (#24 U_C_Prog ; is omitted from this packet) HELLO ;filename of welcome file NEWS ;filename of news file GOODBYE ;filename of goodbye file If you're looking at a real CONTROL.DAT, any further lines you can ignore because current mail doors don't generate it (it's obsolete).