MultiMail(1)

πŸ“¦
version 0.52 Β· 2 versions
  • 0.52 Β· debian bookworm, debian trixie, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking (latest)
  • 0.49 Β· ubuntu jammy
, in debian bookworm, debian trixie, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– MultiMail(1) πŸ’–

okay bestie, this is MultiMail(1) from the General Commands Manual, and the command itself is mm β€” say hi to your new fave offline mail bestie. ✨

✨ NAME ✨

mm β€” offline mail reader for Blue Wave, QWK, OMEN, SOUP and OPX packets. periodt. πŸ‘‘

πŸ› οΈ SYNOPSIS πŸ› οΈ

mm [-option1 value] [-option2 value] [...] [filename1] [filename2] [...]

🌈 DESCRIPTION 🌈

MultiMail is an offline mail packet reader, and it supports the Blue Wave, QWK, OMEN, SOUP and OPX formats. It uses a simple curses-based interface. lowkey iconic. πŸ’…

SOUP is used for Internet email and Usenet. The other formats are primarily used with dialup (or telnet) BBSes, to save connect time and to provide a better interface to the message base. no cap. 🫢

πŸŽ€ USAGE πŸŽ€

On most screens, a summary of the available keystroke commands is displayed in the lower part of the screen. (You can disable this, and reclaim some screen real estate, by turning on ExpertMode.) Note that for lack of space, not all commands are listed on every screen where they're available. For example, the search functions, which are available everywhere, are summarized only in the packet list and address book. The principle, albeit not one that's consistently implemented, is that the summary need appear only on the first screen where the commands are available. When in doubt, try one and see if it works. :-)

In the letter window or ANSI viewer, pressing F1 or ? will bring up a window listing the available commands.

The basic navigation keys, available throughout the program, consist of the standard cursor and keypad keys, with <Enter> to select. For terminals without full support for these keys, aliases are available for some of them:

ESC   = Q
PgDn  = B
PgUp  = F
Right = +
Left  = -

(Although shown in capitals, these may be entered unshifted.)

With "Lynx-style navigation", activated by the UseLynxNav option, the Left arrow key backs out from any screen, while the Right arrow key selects. The plus and minus keys are no longer aliases for Right and Left, but perform the same functions as in the traditional navigation system.

Of special note is the space bar. In most screens, it functions as an alias for PgDn; but in the letter window, it works as a combination PgDn/Enter key, allowing you to page through an area with one key.

In the area list, the default view (selectable in the .mmailrc) is of Subscribed areas only, or of Active areas (i.e., those with messages) if the Subscribed areas are unknown. By pressing L, you can toggle between Active, All, and Subscribed views. (Some formats, like plain QWK, don't have any way to indicate subscribed areas. In other cases, you may have received an abbreviated area list, so that the Subscribed and All views are the same.) In all modes, areas with replies always appear, flagged with an R in the leftmost column.

In the letter list, only unread messages are displayed, by default; but you can toggle this by pressing L. If there are any marked messages, L first switches to a marked-only mode, then to all messages, then back to unread-only. Also, the default mode -- unread or all -- can be set in the .mmailrc.

Multiple sort modes are available in the packet and letter lists; you can cycle through them by pressing $. The default sort modes are set in the .mmailrc.

Options can be specified on the command line as well as in the .mmailrc. Option names are the same as those which appear there, though they must be prefaced by one or two dashes, and should not be followed by a colon. There must be a space between the option name and the value; values which include spaces must be quoted. All options must be specified before any packet names or directories on the line. Finally, options which take a filename or path should always include the full path. (This is not, however, necessary for packet names.)

Packet names may be specified on the command line, bypassing the packet menu. If multiple packets are named, they'll be opened sequentially. If a directory is specified instead of a file, the packet window will by opened on that directory, and no further items will be read from the command line. T in the packet menu may need clarification: it stamps the highlighted file with the current date and time.

You can abort the program immediately from any screen with CTRL-X. You won't be prompted to confirm the exit, but you will still be prompted to save replies and pointers (unless autosaving is set). Note that if you've specified multiple packets on the command line, this is the only way to terminate the sequence prematurely.

You can obtain a temporary command shell anywhere by pressing CTRL-Z. In the DOSish ports (MS-DOS, OS/2, Windows), it spawns a command shell, and you return to MultiMail via the exit command. In Unix, it relies on the shell to put MultiMail in the background; you return with fg. (This has always been available in the Unix versions; however, it won't work if MultiMail wasn't launched from an interactive shell, or if the shell doesn't support it.)

πŸ–±οΈ MOUSING πŸ–±οΈ

MultiMail is mousable on many platforms: X, SDL, the Linux console (with gpm), Windows, DOS and OS/2. (You can still use selection with X and gpm, too; to select or paste, hold down the shift key.)

In each list window, button 1 highlights a line, or selects it (the same as pressing Enter) if it's already highlighted. Double-click to select it immediately. Click on the scrollbar to page up or down, or on the line just above or below it to scroll a line at a time. In the packet, area, and letter lists, click on the appropriate part of the window title to change the sort or list type.

In the letter window, page up by clicking in the top half of the message text, or down (and on to the next message) by clicking in the bottom half (equivalent to the space bar). Scroll the message a single line up or down by clicking on the status bars at top and bottom. The status flags "Read" and "Marked" can be toggled by clicking on them; clicking on "Save" saves, clicking on "Repl" starts a reply (followup; i.e., the same as R), and "Pvt" starts a private reply (email or netmail; i.e., same as N).

In text-entry windows, button 1 works the same as the Enter key; and the dialog boxes work in the obvious way.

Button 3 backs out of any screen, equivalent to ESC.

πŸ” SEARCHING πŸ”

A case-insensitive search function is available on all screens. Press / to specify the text to look for, or > or . to repeat the last search.

New searches (specified with /) always start at the beginning of the list or message. Repeat searches (with > or .) start with the line below the current one. You can take advantage of this to manually adjust the starting point for the next search.

Searches started in the letter, area or packet lists allow the searches to extend below the current list. "Full text" searches all the way through the text of each message; "Headers" searches only the message headers (the letter list), "Areas" only the area list, and "Pkt list" only the packet list. So, a "Full text" search started from the packet list will search every message in every packet (but only in the current directory).

When scanning "Full text", the automatic setting of the "Read" marker is disabled. However, if you find a search string in the header of a message and then select it manually, the marker will be set. But if you start scanning from the packet list, and exit the packet via a repeat search, the last-read markers won't be saved.

Scans of "Headers" or "Full text" that start from the area list or packet list will automatically expand the letter lists they descend into. Similarly, scans that start at the packet list will expand the area lists. Otherwise, if you're viewing the short list, that's all that will be searched.

I hope the above makes some sense. :-) The searching functions are difficult to explain, but easy to use.

🧚 FILTERING 🧚

A new twist on searching, as of version 0.43, is filtering. This is available in all of the list windows, but not the letter or ANSI viewer. Unlike searching, it always applies only to the current list.

Press | to bring up the filter prompt, and specify the text to filter on. To clear a filter, press |, and then press return at a blank filter prompt. (A string that's not found in the list will have the same effect.) Press ESC to leave the filter as it was.

The list will now be limited to those items that contain the text you entered, and that text will appear at the end of the window's title as a reminder. The filter will be retained through lower levels, but will be cleared by exiting to a higher level. Note that a search in, e.g., the letter list will search only the message headers (and only those which are visible in the list), and not the bodies.

When the filter is active in the letter list, the "All" option in the Save menu will save only the items that match the filter. This can be used as a quick alternative to marking and saving. You can also combine filtering and marking.

Changing modes and sort types will not clear the filter. A search in a filtered list will search only the items that match the filter.

πŸ’… OFFLINE CONFIGURATION πŸ’…

Offline config is limited to subscribe (add) and unsubscribe (drop) functions. The Blue Wave, OPX, OMEN, QWKE, and QWK Add/Drop (with DOOR.ID) methods are supported. (The QMAIL "CONFIG" method is not supported.) Offline config is not available in SOUP mode.

In the area list, press U or Del to unsubscribe from the highlighted area. To subscribe to a new conference, first expand the list (L), then highlight the appropriate area and press S or Ins. Dropped areas are marked with a minus sign (-) in the first column; added areas with a plus (+). In the expanded area list, already-subscribed areas are marked with an asterisk (*). (This and also applies to the little area list. With plain QWK packets, the asterisk should not be relied upon; other areas may also be subscribed.) Added or dropped areas are highlighted in the "Area_Reply" color. Yeah, I'll have to change that name now. ;-)

Pressing S on an area marked with -, or U on an area marked + turns the flag off again.

In Blue Wave, OPX, OMEN or QWKE mode, the list of added and dropped areas is read back in when the reply packet is reopened. If the reply packet has already been uploaded, and you're reading a packet with the altered area list, this is benign. If it's an older packet, you can alter the list before uploading, as with reply messages. In QWK Add/Drop mode, the changed area flags are converted to reply messages when the reply packet is saved. Note: Adding or dropping areas sets the "unsaved replies" flag, like entering a reply message, but does not invoke automatic reply packet saving until you exit the packet.

Unfortunately, the OMEN mode has not actually been tested; but I believe it conforms to the specs. Reports welcome.

πŸ™ˆ HIDDEN LINES AND ROT13 πŸ’€

So in the letter window, you can toggle whether you're seeing Fidonet "hidden" lines β€” those are the ones marked with a ^A sitting in the very first position β€” just by hitting x. They show up as part of the text, but in a different color, so you can clock them immediately. And for Internet email and Usenet areas, the full headers of messages are available the same exact way (that's if they were provided in the packet, bestie β€” generally, full headers come through in SOUP, and you get partial extra headers in Blue Wave).

Then there's d, which toggles rot13 encoding. It's the crude "encryption" method used for spoiler warnings and that kind of thing, primarily over on Usenet. Yes it's literally just the alphabet rotated, no it's not security, it's a vibe πŸŒ€


🎨 ANSI VIEWER ✨

If a message has ANSI color codes all up in it, you may be able to view it exactly as it was meant to be seen by activating the ANSI viewer. Press v to start it up. Press q to leave the ANSI viewer β€” the navigation keys are the same as in the mail-reading window, so you already know them 🫢

The ANSI viewer also supports animation. While you're inside the ANSI viewer, press v again to animate the picture. Press any key to abort the animation.

It's also the thing that displays the new files list and bulletins, if any are present.

New in version 0.43 is support for the '@' color codes used by PCBoard and Wildcat. This is on by default in the ANSI viewer, but you can toggle it β€” either to strip the codes, or to pass them through untranslated β€” by pressing '@'.

As of version 0.46, the ANSI viewer also includes limited support for AVATAR (level 0) and BSAVE (text only) screens. Those can be toggled via ^V and ^B, respectively.


🌈 CHARACTER SETS πŸ¦‹

MultiMail supports automatic translation between two character sets: the IBM PC set (Code Page 437), and Latin-1 (ISO 8859-1). Messages can be in either one; which set it is gets determined by the area attributes β€” Internet and Usenet areas default to Latin-1, while all others default to IBM β€” and by a CHRS or CHARSET kludge, if one is present. OMEN packets indicate their character set in the INFOxy.BBS file. MultiMail translates when displaying messages and when creating replies.

The Unix versions of MultiMail assume that the console uses Latin-1, while the DOSish versions (DOS, OS/2, and Windows) assume the IBM PC set. You can override this via the .mmailrc option "Charset", or on a temporary basis by pressing 'c'.

You can also use a different character set by disabling the conversion in MultiMail and letting your terminal handle it. For SOUP packets, and for Internet or Usenet areas in other packets, everything will be passed through unchanged if you set MultiMail to "Latin-1". For most other packet types, setting MultiMail to "CP437" will have the same effect.

Beginning with version 0.33, there's a new character set variable available: "outCharset". It's a string that MultiMail puts into the MIME identifier lines in SOUP replies if the text includes 8-bit characters. It's also used for the pseudo-QP headers which are generated under the same conditions; and when displaying such headers, MultiMail only converts text back to 8-bit if the character set matches. The default is "iso-8859-1".

By default, if a header line in a SOUP reply contains 8-bit characters, MultiMail now writes it out with RFC 2047 (pseudo-QP) encoding. You can disable this for mail and/or news replies via the "UseQPMailHead" and "UseQPNewsHead" options, though I don't recommend it, fr fr. The bodies can also be encoded in quoted-printable; this is now on by default for mail, and off for news. The options "UseQPMail" and "UseQPNews" toggle QP encoding. (The headers and bodies of received messages will still be converted to 8-bit, don't worry.)

Heads up πŸ‘€ QP decoding is temporarily disabled when you toggle the display of hidden lines ('X') in the letter window, so that you can see the raw text of the message.

πŸ“– ADDRESS BOOK πŸ’–

The address book in MultiMail is intended primarily for use with Fido-style Netmail or Internet email areas, in those packet types which support these. When you're entering a message (other than a reply) into such an area, the address book comes up automatically. It's also possible to use the name portion of an address from the address book even when Fido/Internet addressing isn't available β€” you do that by starting a new message via CTRL-E instead of 'E'.

You can pull up the address book from most screens by pressing 'A', which lets you browse or edit the list. And while you're reading in the letter window, you can grab the current "From:" address by invoking the address book and pressing 'L'. Chef's kiss πŸ‘‘


πŸŽ€ TAGLINE WINDOW πŸ“

From most screens, you can pull up the tagline window to browse or edit the list by pressing CTRL-T. As of version 0.43, you can toggle sorting of the taglines by pressing '$' or 'S'.


βœ‚οΈ REPLY SPLITTING πŸ’…

Replies may be split β€” either automatically, or manually via CTRL-B in the reply area. For automatic splitting, the default maximum number of lines per part is set in the .mmailrc. The split occurs whenever the reply packet is saved. That means you can defer the split and still re-edit the whole reply as one single thing. However, with autosave on, the split will occur immediately after entering a reply (because the save does, too).

Setting MaxLines in the .mmailrc to 0 disables automatic splitting; manual splitting is still allowed. And attempts to split at less than 20 lines are assumed to be mistakes and are just ignored. No notes πŸ’€


🌍 ENVIRONMENT ⭐

MultiMail uses the HOME or MMAIL environment variable to find its configuration file, .mmailrc; and EDITOR for the default editor. MMAIL takes precedence over HOME if it's defined. If neither is defined, the startup directory is used.

The use of EDITOR can be overridden in .mmailrc; however, environment variables can't be used within .mmailrc.

You should also make sure that your time zone is set correctly. On many systems, that means setting the TZ environment variable. A typical value for this variable is of the form "EST5EDT" (that one's for the east coast of the U.S.A.).


πŸ“ FILES 🧚

The only hardwired file is the configuration file: .mmailrc (mmail.rc in DOS, OS/2 or Windows). It's used to specify the pathnames to MultiMail's other files, and the command lines for external programs (the editor and the archivers).

By default, the other files are placed in the MultiMail home directory ($HOME/mmail or $MMAIL). Directories specified in the .mmailrc are created automatically; the default Unix values are shown here:

  • ~/mmail β€” To store the tagline file, netmail addressbook, etc.
  • taglines β€” A plain text file, one tagline per line.
  • addressbook (address.bk in DOS, OS/2 or Windows) β€” A list of names and corresponding Fido netmail or Internet email addresses. Note that Internet addresses are prefaced with an 'I'.
  • colors β€” Specifies the colors to use. (See COLORS.md.)
  • ~/mmail/down β€” To store the packets as they came from the bbs.
  • ~/mmail/up β€” To store the reply packet(s) which you have to upload to the bbs.
  • ~/mmail/save β€” The default directory for saving messages.

βš™οΈ CONFIG FILE πŸ‘‘

The config file (see above) is a plain text file with a series of values, one per line, in the form "KeyWord: Value". The case of the keywords is not signifigant. Additional, comment lines may be present, starting with '#'; you can remove these or add your own. (But note that the comments are replaced by the defaults when you upgrade to a new version.) If any of the keywords are missing, default values will be used.

As of version 0.41, any of these keywords except "Version" may also be specified on the command line. Command-line options take precedence over those in the config file, but their effect is not guaranteed β€” some internal pathnames are initialized before the command line is read, for example.

Here are the keywords and their functions:

  • Version β€” Specifies the version of MultiMail which last updated the file. This is used to check whether the file should be updated and the "new version" prompt displayed. Note that old values are preserved when the file is updated; the update merely adds any keywords that are new. This keyword is also used in the colors file.
  • UserName β€” Your name in plain text, e.g., "UserName: William McBrine". This is used together with InetAddr to create a default "From:" line for SOUP replies; and by itself in OMEN for display purposes (the actual From name is set on upload), and for matching personal messages.
  • InetAddr β€” Your Internet email address, e.g., "InetAddr: wmcbrine@gmail.com". This is combined with the UserName in the form "UserName <InetAddr>" ("William McBrine <wmcbrine@gmail.com>") to create a default "From:" line for SOUP replies. Note that if neither value is specified, and nothing is typed manually into the From: field when creating a message, no From: line will be generated β€” which is perfectly acceptable to at least some SOUP programs, like UQWK.
  • QuoteHead, InetQuote β€” These strings are placed at the beginning of the quoted text when replying in normal or Internet/Usenet areas, respectively. (The distinction is made because the quoting conventions for BBSes and the Internet are different.) Replaceable parameters are indicated with a '%' character, as follows:
    • %f = "From" in original message
    • %t = To
    • %d = Date (of original message)
    • %s = Subject
    • %a = Area
    • %n = newline (for multi-line headers)
    • %% = insert an actual percent character

Note that you can't put white space at the start of one of these strings (it will be eaten by the config parser), but you can get around that by putting a newline first.

  • mmHomeDir β€” MultiMail's home directory.
  • TempDir β€” This is the directory where MultiMail puts its temporary files β€” by default, as of 0.45, the same as mmHomeDir. The files are actually created within a subdirectory of this directory; the subdirectory is named "workNNNN", where NNNN is a random number (checked against any existing files or directories before being created).
  • signature β€” Path to optional signature file, which should be a simple text file. If specified, it will be appended to every message you write. You should give the full path, not just the name.
  • editor β€” The editor MultiMail uses for replies, along with any command-line options. This may also be a good place to insert spell-checkers, etc., by specifying a batch file here. Note that the default value is just the editor that's (almost) guaranteed to be available, for a given OS (although the Unix "EDITOR" environment variable is checked first), and is in no way a preferred editor; you can and should change it.
  • PacketDir β€” where your packet files chill by default. πŸ“¦
  • ReplyDir β€” the default hangout spot for your reply packets. πŸ’Œ
  • SaveDir β€” the default folder where saved messages get tucked away. πŸ—‚οΈ
  • AddressBook β€” the path + filename of your address book. Lowkey you could point this at another install's book so y'all share one, but honestly? This keyword isn't doing much for you. 😌
  • TaglineFile β€” path + filename of your tagline file. You can swap this from a batch file to rotate between different tagline sets. ⚠️ Careful though: this value is only read at startup, so no mid-session glow-ups. You could also share taglines with another program, but watch yourself β€” MultiMail truncates lines at 76 characters.
  • ColorFile β€” path + filename of the colors file. Peep COLORS.md for the deets. 🌈
  • UseColors β€” Yes/No. Governs whether you get color or straight-up monochrome. When colors are off, the terminal's default foreground and background colors are used instead. It's also a kinda crude way to do transparency (and literally the only way if you're not on ncurses or PDCurses/SDL) β€” the entire background goes transparent when you're using a terminal that supports it. ✨
  • Transparency β€” Yes/No. Only actually available in ncurses or PDCurses for SDL. (On non-ncurses, non-PDCurses platforms the option will still show up, it just won't do anything. πŸ™ˆ) Set it to Yes and every area where the background color matches the background color set in the "Main_Back" line of the colors file gets switched to the default background color instead β€” which makes those areas transparent in terminal programs that support it, like Eterm and Gnome Terminal. πŸ«₯
  • BackFill β€” Yes/No. Normally the background area gets filled with a checkerboard pattern (ACS_BOARD characters, in curses terms). You can turn that off here and leave those areas as flat background color instead. It's mostly meant to make transparency work better, but it might help with any color scheme, ngl. 🏁
  • *UncompressCommand, *CompressCommand β€” command lines (program name, options, and optionally the path) for the archivers that compress and uncompress packets and reply packets. ZIP, ARJ, RAR, LHA and tar/gzip are all recognized. The "unknown" values are a catch-all β€” MultiMail tries them for anything that isn't one of the other four types, so if you gotta deal with ARC or ZOO files, define the archiver for them right here. πŸ—œοΈ
  • PacketSort β€” your packet list can be sorted either in inverse order of packet date and time (newest at the top πŸ‘‘) or alphabetically by filename. "Time" picks the first one, "Name" picks the second. (Tbh only the first letter is checked, and case is not significant. That goes for the other keywords of this type too β€” the kind with a fixed set of values to pick from.) The sort you set here is just the default, and you can toggle it from the packet window by pressing '$'. πŸ”€
  • AreaMode β€” the default mode for the area list: "All", "Subscribed", or "Active". This is what gets used the first time you open a packet, but you can change it by pressing L while you're in the area list or the little area list. Wanna know what the modes actually mean? See USAGE. πŸ—ΊοΈ
  • LetterSort β€” the sort used by default in the letter list. Can be "Subject" (subjects sorted alphabetically, case-insensitive compare), "Number" (sorted by message number), "From" or "To". And yeah, this can be overridden, just like in the packet list. πŸ“¬
  • LetterMode β€” the default mode for the letter list: "All" or "Unread". This is the mode used the first time you open an area, and you can toggle it by pressing L. (The Marked view is also available in the letter list, but it can't be set as the default here. Sorry bestie. 😭)
  • ClockMode β€” the display mode for the clock up in the top right corner of the letter window: "Time" (time of day), "Elapsed" (since MultiMail started running), or "Off". ⏰
  • Charset β€” the character set your console is assumed to use. Either "CP437" (code page 437, the U.S. standard for the IBM PC and clones) or "Latin-1" (aka ISO-8859-1, the standard for most other systems). Heads up: the character set of messages is figured out separately (q.v.). πŸ”€
  • UseTaglines β€” Yes/No. If no, the tagline window doesn't show up at all while you're composing. πŸŽ€
  • AutoSaveReplies β€” Yes/No. If yes, the reply packet gets saved automatically β€” the equivalent of pressing F2, but with no confirmation prompt β€” every single time the contents of the reply area change. That can be convenient, and honestly kind of a safety feature if your power supply is out here being irregular ⚑, but it gives you less room to take a change back (like deleting a message). If no, you get prompted about whether to save the changes when you exit the packet. ⚠️ And note: if you say no to that prompt, nothing you wrote during that session gets saved (unless you saved it manually with F2).
  • StripSoftCR β€” Yes/No. Some messages on Fido-type networks contain spurious instances of character 141, which shows up as an accented 'i' in code page 437. These are really so-called "soft returns" β€” where the message got wrapped while composing it, but wasn't meant to signal a paragraph break. The catch is that the character can also appear legitimately as that accented 'i', so this option defaults to no. You can toggle it temporarily with the 'I' key in the letter window, and it doesn't apply to messages in the Latin-1 character set. Also, this is now applied only in Blue Wave mode. πŸ’…
  • BeepOnPers β€” Yes/No. If yes, MultiMail beeps at you when you open a message addressed to or from yourself in the letter window. (These are the same messages that get highlighted in the letter list. πŸ‘€)
  • UseLynxNav β€” Yes/No. See the description under USAGE. 🐾
  • ReOnReplies β€” Yes/No. By popular demand. :-) Setting this to "No" disables the automatic prefixing of "Re: " to the Subject when you reply β€” except in areas flagged as Internet email or Usenet, where that's the standard and it's still upheld. βœ‰οΈ
  • QuoteWrapCols β€” Numeric. The right margin for quoted material in replies (including the quote indicator). πŸ“
  • MaxLines β€” Numeric. See the description under REPLY SPLITTING. βœ‚οΈ
  • outCharset β€” String. See the description under CHARACTER SETS. πŸ”‘
  • UseQPMailHead β€” Yes/No. Controls the use of RFC 2047 encoding in outgoing mail headers. πŸ“§
  • UseQPNewsHead β€” Yes/No. Controls the use of RFC 2047 encoding in outgoing news headers. πŸ“°
  • UseQPMail β€” Yes/No. Controls the use of quoted-printable encoding in outgoing mail. πŸ“¨
  • UseQPNews β€” Yes/No. Controls the use of quoted-printable encoding in outgoing news. πŸ—žοΈ
  • ExpertMode β€” Yes/No. If you set it to No, the onscreen help menus aren't shown β€” instead that space gets used to stretch the info windows a few lines bigger. 🧠
  • IgnoreNDX β€” Yes/No. This one applies only to QWK packets. If set to yes, the *.NDX files are always ignored in favor of the "new" indexing method that depends only on MESSAGES.DAT. That method is a lil bit slower than the *.NDX-based indexing method (though tbh that delay is dwarfed by packet decompression time), but the most common problem with QWK packets is corrupt *.NDX files. MultiMail now recognizes some cases where the *.NDX files are corrupt and switches over automatically β€” but it doesn't catch them all. πŸ’€

πŸ’Ύ UPGRADING ✨

okay so the glow-up process is genuinely so simple bestie. you literally just copy the new executable over the old one. that's it. no other files needed. πŸ’…

and the first time you run a new version of MultiMail (0.19 or later, iykyk), it automatically updates your .mmailrc and ColorFile with any new keywords. your old keywords and all the values you set for them? preserved. iconic. but β€” and this is the one sad part β€” comments are lost. 😭

some notes on specific upgrades, because every era had its moment:

  • Version 0.48 adds the .mmailrc option "Mouse", which lets you enable or disable mouse input (for instance, if you don't want to see the mouse cursor).
  • Version 0.45 adds "TempDir". note that temporary files are handled differently in this version, and the TEMP and TMP environment variables are ignored. "homeDir" has been removed.
  • Version 0.43 adds "ClockMode", and makes "UseColors" available in all ports. also note that CPU usage while idle may be higher in some configurations.
  • Version 0.41 adds the option "IgnoreNDX".
  • Version 0.39 changes the function of the "Transparency" option slightly. it now operates on the color set in "Main_Back", rather than Black. also, if you're accustomed to using the mouse to cut and paste under X or gpm, note that you now have to hold down the shift key while doing this.
  • Version 0.38 adds "ExpertMode", "Transparency", "UseColors", and "BackFill", while removing the options "BuildPersArea", "UseScrollBars", "MakeOldFlags", and "AutoSaveRead".
  • Version 0.37 adds "tarUncompressCommand" and "tarCompressCommand".
  • Version 0.36 adds "LetterMode" and "AreaMode".
  • Version 0.33 adds "ReOnReplies", "outCharset", "UseQPMailHead", "UseQPNewsHead", "UseQPMail" and "UseQPNews"; changes some default values.
  • Version 0.32 adds "BuildPersArea" and "MakeOldFlags".
  • Version 0.30 adds "UserName", "InetAddr", "QuoteHead", "InetQuote", and "QuoteWrapCols".
  • Version 0.29 adds "UseScrollBars" and "UseLynxNav".
  • Version 0.28 adds "MaxLines", "StripSoftCR", and "BeepOnPers".
  • Version 0.26 adds "AutoSaveReplies", "AutoSaveRead", and "UseTaglines".
  • Version 0.25 adds "Charset", "PacketSort", and "LetterSort". the default packet sort is now by time instead of name.

if you're upgrading from 0.19 to 0.20 or later, and you have a customized ColorFile, be sure to note the new options. πŸ‘€

the ColorFile is new in 0.19. check it out (~/mmail/colors, by default). πŸŽ€

as of 0.16, the HOME environment variable can be overridden with MMAIL, or omitted altogether.

if you're upgrading from a version before 0.9, and you have existing reply packets (.rep or .new) whose names are partly or wholly in uppercase, you must rename them to lowercase before version 0.9 or higher will recognize them. (downloaded packets are not at issue.) πŸ“

if you're upgrading from a version below 0.8, you may want to manually delete the /tmp/$LOGNAME directory created by previous versions. (0.8 and higher clean out their own temp directories, and use different names for each session.)

if you're upgrading from a version prior to 0.7, please note the changes in the default directories; previously they were "~/mmail/bwdown", etc.


πŸ“Œ NOTES 🌸

unlike the other archive types, tar/gzip recompresses the entire packet when updating the .red flags, so it can be a bit slow. also, the supplied command lines assume GNU tar, which has gzip built-in. separated gunzip/tar and tar/gzip command lines are possible, but would require a (simple) external script. MultiMail only checks for the gzip signature, and does not actually verify that the gzipped file is a tar file.

OPX reply packets are always created with a .rep extension, which differs from the behavior of some other readers. if you switch from QWK packets to OPX packets on the same board, MultiMail will not open an old QWK .rep in OPX mode, nor vice versa. (it will try, and will terminate with "Error opening reply packet".) πŸ’€

SOUP reply packets are created with the name "basename.rep", where basename is the part of the original packet name before the first period. (unlike other formats, there's no actual standard for this in SOUP, but this seems to be the most common form among the SOUP readers I surveyed.) also, not that I expect anyone to try this, but currently MultiMail is only able to read reply packets generated by other SOUP readers if the replies are in 'b' or 'B' mode, and are one to a file within the packet. most readers meet the first criterion, but some of them batch all mail and news replies into a single file for each type.

when re-editing a reply, it gets pushed to end of the list of replies.

the R)ename function in the packet window can also be used to move files between directories; however, the destination filename must still be specified along with the path.

if you're using the XCurses (PDCurses) version, and your editor isn't an X app, it will work better if you set MultiMail's "editor" keyword to "xterm -e filename" (instead of just "filename"). I decided not to do this automatically because someone might actually use it with an X editor.

editing and deletion of old replies are available through the REPLY area, which always appears at the top of the area list. this differs from Blue Wave and some other readers.

the Escape key works to back out from most screens, but after you press it, you'll have to wait a bit for it to be sensed (with ncurses; not true with PDCurses).

only Blue Wave style taglines (beginning with "...") are recognized by the tagline stealer. the tagline must be visible on the screen to be taken. πŸ‘€

Netmail only works in Blue Wave, OMEN and OPX modes, and is still slightly limited. Netmail from points includes the point address. Internet email is available in Blue Wave and OPX modes, for those doors that support it, and in SOUP mode, using the same interface as Fido netmail.


πŸ‘‘ AUTHORS πŸ’œ

MultiMail was originally developed under Linux by Kolossvary Tamas and Toth Istvan. John Zero was the maintainer for versions 0.2 through 0.6; since version 0.7, the maintainer is William McBrine <wmcbrine@gmail.com>.

additional code has been contributed by Peter Krefting, Mark D. Rejhon, Ingo Brueckl, Robert Vukovic and Mark Crispin. shoutout to the whole crew fr fr 🫢


πŸ’€ BUGS AND KNOWN PROBLEMS πŸ›

Red Hat Linux 6.0 (and possibly 6.x) comes with a defective installation of ncurses. when linked to this, MultiMail mostly works, but odd effects appear when scrolling. (users describe it as double-spaced.) the problem can be fixed by reinstalling ncurses from the source -- not the source RPM that comes with Red Hat, but the original source from the ncurses site (see INSTALL). 😭

SOUP area type 'M' is not recognized. I have yet to find a program that can generate one. :-)

the ANSI viewer eats a lot less memory than it used to, but it can still be a problem. (each character/attribute pair takes up four bytes in memory. but lines which have the same attribute throughout are stored as plain text.)

the new file list and bulletin viewer is a hack.

if you find any bugs, please write to me. πŸ™ˆ


and that's the whole page bestie!! ✨ this one's from February 14, 2019, and it's the MultiMail(1) manual page β€” a genuine valentine's day gift to all of us. go forth and read your mail, you absolute icon. πŸ’–πŸŽ€πŸ¦‹