Skip to content

v0.0.6

Compare
Choose a tag to compare
@mjl- mjl- released this 16 Aug 15:24
· 468 commits to main since this release
v0.0.6
0b94752

Update instructions:

Make a backup, replace the binary and restart.

After the upgrade, the first time an account is opened with this new version,
new message indexes are created and mailbox message count statistics are
calculated. For large mailboxes, the time and memory this takes can be
noticable. The upgrade tests take about 15 seconds on 570k messages on a
thinkpad x1 from 2018, and run with a max memory data size of 768MB.

Don't forget to make a backup of the data directory with your currently running
mox before upgrading (e.g. "mox-v0.0.5 backup data/tmp/backup"). You can
dry-run the upgrade by making a separate backup ("mox-v0.0.5 backup
data/tmp/testupgrade") and running the "verifydata" command with the new mox
version ("mox-v0.0.6 verifydata data/tmp/testupgrade"). Running "verifydata"
with a newer mox will make changes to the database files, so don't run it on a
backup you may need to restore.

It is recommended to run the new "mox reparse" command after upgrading. It will
reparse all messages with the improved message parsing code.

For existing installations, the new webmail must be enabled manually in mox.conf
with config options "WebmailHTTP" and/or "WebmailHTTPS", similar to
"AccountHTTP(s)". See the example config printed by "mox config
describe-static".

If you are forwarding email to an address hosted with mox, you may want to
configure the new "IsForward" and possibly "AcceptRejectsToMailbox" options in
a delivery ruleset for better junk handling/analysis.

If your mox is behind a NAT, and your mox.conf uses config option IPsNATed, you
should switch to new config option NATIPs, and specify the public IPs that are
NATed.

New features:

  • Webmail, for reading/writing messages. It is similar to other regular and
    webmail clients, with a decent set of features for a first version (with more to
    come in the future). Webmail is enabled for new installs created with the
    quickstart. For more details about the implementation, see
    849b4ec.
  • IMAP extensions CONDSTORE and QRESYNC have been implemented. With CONDSTORE,
    changes to messages are tracked with a modification sequence, "modseq".
    This is used by mail clients both to efficiently find changes when reconnecting,
    and for conditionally storing updated message flags (only if modseq is still as
    expected). QRESYNC is an additional extension for faster full mailbox
    synchronization. These are useful by themselves, but keeping track of the
    "modseq" will also help with JMAP.

Improvements:

  • Faster IMAP "STATUS" command (which checks mailbox status), because mox now
    keeps track of total/unseen/deleted number of messages in mailboxes. Noticable
    in larger mailbox (>50k messages).
  • Be less strict by default when parsing messages, and handle non-ascii/utf-8
    encodings in message subjects. We already accepted messages with problems, but
    stored them mostly unparsed. IMAP clients would parse the message themselves so
    users wouldn't notice anything, but now that we have webmail it is more
    important to have parsed forms of messages for problematic messages.
  • Properly decode character encodings other than ASCII and UTF-8 when
    returning/searching text in messages.
  • Be more lenient for (authenticated) submission of email over SMTP (but not
    during regular SMTP delivery). Before, we were strict about certain protocol
    violations, but that wasn't helpful behaviour for legitimate users. In pedantic
    mode, mox still rejects these violating commands.
  • New config options "AcceptRejectsToMailbox" and "IsForward" in Rulesets, for
    handling incoming messages that are forwards from another address. By setting
    "AcceptRejectsToMailbox", if the junk analysis says a message is junk, the
    message is accepted during SMTP instead of rejected, but delivered to the
    configured mailbox. It isn't always a good idea to reject forwarded messages
    that are junk. By setting "IsForward", the junk analysis and future
    classification based on such a message is done differently. See the config
    option for details. (PR #50 by bobobo1618)
  • Add a KeepRejects options to account configurations, so the Rejects mailbox
    isn't automatically cleaned up. (PR #49 by bobobo1618)
  • Add option NATIPs to a listener in mox.conf for better handling when mox is
    configured behind a NAT.
  • "mox verifydata" now checks for more potential issues, and mox gained a few
    subcommands to fix those issues.

Bug fixes:

  • Fix showing the progress while importing messages. Messages were still
    imported, but the SSE connection with progress updates was broken.
  • Fix potential delays in propagating changes to IMAP IDLE connections.
  • IMAP compliance: add missing space after continuation line ("+").
  • IMAP compliance: add missing empty untagged response for SEARCH in case of no
    matches.
  • Fix the -existing-webserver flag for "mox quickstart". Its TLS key/cert check
    tripped it up.
  • And many more small fixes and improvements.

Special thanks for contributions and/or feedback from: Mendel, bobobo1618,
hmfaysal, x8x, kikoreis, gerben, andrii, liesbeth, morki, gedw99 and everyone I
forgot. More feedback/bug reports welcome!

To download, see https://github.com/mjl-/mox#download