{"Changes":[{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"xhBO1bhtTaJRgwgktymoBcRhqmEASiSc7kDzGEOJCnaGP8KuA/M+AhHHgHbNT9BGeYmS6GmTCONRyvX2FVanAg==","Text":"version: v0.0.15\ndate: 2025-04-18\n\n# New features\n\n- Implement IMAP NOTIFY extension from RFC 5465. Where IDLE is for monitoring a\n  single mailbox, NOTIFY allows monitoring many/all mailboxes in an account at\n  once. (8bab38eac4c5)\n- Implement IMAP UIDONLY extension, RFC 9586, greatly reducing data\n  accounting and memory use for IMAP connections (once clients support it).\n  (507ca73b96ac)\n- Implement IMAP MULTISEARCH extension, searching multiple mailboxes with a single\n  command. (479bf2912489)\n- Implement IMAP PREVIEW extension (RFC 8970), and store previews in\n  the message database. Automatically generated and stored on first request for\n  existing messages, or during delivery for new messages. (aa631c604c19,\n  6ab31c15b798, 3ac38aacca27)\n- Implement IMAP REPLACE extension, RFC 8508, used for replacing drafts\n  as they are typed. (92a87acfcbb5)\n- Implement MULTIAPPEND extension, RFC 3502, for appending multiple messages in\n  a single command, useful for importing messages into a mailbox.  (78e0c0255f8d)\n- Implement IMAP METADATA extension, RFC 5464 (f30c44eddb20,\n  28091364514e, #290)\n- Implement RFC 9590, returning metadata in the IMAP extended list\n  command (0ed820e3b084)\n- Implement IMAP \"INPROGRESS\" response code (RFC 9585) for keepalive\n  and progress reportng during long search. (cc5e3165eaf6)\n- Announce support for IMAP NAMESPACE extension in imap\n  capabilities line. (95d2002e7762)\n- Implement IMAP WITHIN extension, RFC 5032, for additional search command\n  criteria. (5e4d80d48e1d)\n- Implement IMAP CREATE-SPECIAL-USE extension for the mailbox\n  create command, part of RFC 6154. (dcaa99a85c00)\n- Implement IMAP SAVEDATE extension, RFC 8514. (7288e038e67f)\n\n- Keep track of login attempts, both successful and failures. Now shown in\n  account and admin interfaces. (1277d78cb1a0)\n\n- Add config domain option for multiple localpart catch all separators, e.g.\n  both \"+\" and \"-\", for addresses you+anything@example.com and\n  you-anything@example.com. (#301, 9a8bb1134b1b)\n- Add account config option to prevent the account for setting their own custom\n  password, only allowing mox to generate a new password, and enable by default\n  for new accounts. Should prevent password reuse and users picking weak\n  passwords, but does not prevent password phishing. (#286, 3e53abc4dbed)\n- Add config options to disable a domain and to disable logins for an account.\n  (#175, 2d3d726f0580)\n- Add account config option to reject incoming deliveries with an error during\n  the smtp transaction. Useful for rejecting deliveries to specific addresses when\n  a catchall is configured. (#156, 3e2695323c1e)\n\n- webmail: Add buttons to download a message as eml, and export 1 or more\n  messages as mbox/maildir in zip/tgz/tar, like for entire mailboxes.\n  (a5d74eb7185c)\n- webmail: Add button to create a mailbox below another one, for convenience.\n  (ef77f58e086b)\n- webmail: Add button to mark a mailbox and its children as read.\n  (ad26fd265d58)\n\n\n# Improvements\n\n- Write base64 message parts with 76 data bytes on a line instead of 78, as\n  required by RFC 2045 (MIME). The 78 byte lines work as well, except that\n  SpamAssassin gives them a higher spam score.\n  (69d269996168)\n- Change \"mox backup $destdir\" from storing only data files to $destdir to\n  storing them under $destdir/data and now also copying config files, to\n  $destdir/config. (#150, 76e96ee673f8)\n- quickstart: Check if domain was registered recently using RDAP, and warn\n  about potential deliverability issues. (2f0997682beb)\n- Hide version number from smtp banner and imap ID command response (when\n  unauthenticated), and web interfaces. (68729fa5a312, 3a3a11560e17, #322)\n- When adding a new domain, only set up RSA DKIM keys, not ed25519. The ed25519\n  key is causing admin confusion due to many other mail servers not recognizing\n  the keys and sending DMARC reports containing unhelpful DKIM verification\n  errors. (#299, 2fc75b5b7b7b)\n- webmail: Reconnect automatically in more cases, changing the \"stop\n  reconnection automatically\" period from 10 minutes to 5 seconds. (5dcf67476166)\n- webmail: For \"cid\"/content-id's used in html, look for them in all other\n  parts, not just when there is a multipart/related in the message. Fixes\n  displaying messages sent by the gmail app, which sends messages with a MIME form\n  of multipart/mixed containing text/html and image/jpeg. We were only resolving\n  \"cid\"s in multipart/related, now we resolve them anywhere in the message. (#327,\n  462568d878e7)\n- Add support for negotiating IMAP and SMTP on the HTTPS port 443 using TLS\n  ALPN \"imap\" and \"smtp\". Intended for future use with chatmail servers. (#255,\n  3c77e076e228)\n- imapserver: Return all the optional extensible fields for \"fetch\" attribute\n  \"bodystructure\", notably for content-disposition. Makes the gmail apps show\n  image attachments properly, instead of rendering the image bytes as (garbled)\n  text. This requires reparsing all messages, which is done automatically, in the\n  background, on first account open after the upgrade (2defbce0bc05, 31c22618f5de,\n  07533252b33b, #327, #217)\n- webmail: When composing, no longer remove the last remaining To address with\n  the ctrl+backspace shortcut. Too easy to trigger accidentally, almost never done\n  intentionally. (70aedddc9096)\n- Improve expunged message/UID tracking in IMAP sessions, track synchronization\n  history for mailboxes/annotations. We now delay removing message files from disk\n  until the last reference in any session goes away (e.g. after sending an IMAP\n  EXPUNGE/VANISHED response to all connected IMAP clients with the mailbox open).\n  (577944310cb6)\n- When removing an account, wait until the last account reference has gone away\n  before removing the account files. We store intent to remove in the database,\n  until we get to it, possibly at next startup in case of sudden shutdown.\n  (ac4b006ecd91)\n- imapserver: Don't keep account write-locked during IMAP FETCH command, for\n  responsiveness during large mailbox syncs. (#128, b822533df31d)\n- Add prometheus metrics for errors when getting certificates through ACME\n  (typically from let's encrypt), and add alerting rule. (e5e15a3965c2)\n- webmail: When forwarding a message, include the\n  subject,date,from,reply-to,to,cc headers in the message (1c4bf8909c45)\n- Also unicode-normalize usernames (email addresses) when logging into the\n  imapserver and webapps. (c7354cc22b22)\n- When delivering over smtp, do not require the other server to announce the\n  8bitmime extension for 8-bit data unless in pedantic mode. (#287, 46c1693ee935)\n- Do not use results from junk filter if we have less than 50 positive\n  classifications to base the decision on. Useful for new accounts, we don't want\n  to start rejecting incoming messages when there's too little information to\n  decide. (#64, 6aa2139a54c9)\n- Admin check: Do not raise error when forward-confirmed reverse dns does not\n  match hostname. Probably relatively common with setups involving NAT. (#239,\n  acc1c133b022)\n- Add config option to an account destination to reject messages that don't\n  pass a dmarc-like aligned spf/aligned dkim check. (6da5f8f586ac)\n- cli: Add subcommand \"mox admin imapserve $preauthaddress\", for admins to open\n  a preauthenticated imap connection for an account, even if it is disabled for\n  logins (useful for migrations). (#175, 49e2eba52bb0)\n- webmail: In message view, under More, add button to open currently displayed\n  part (either text or html) as raw text (but decoded if in\n  base64/quoted-printable/etc). (008de1cafb34)\n- cli: Add subcommand \"mox config account list\", printing all accounts and\n  whether they are disabled. (1b2b152cb5d3)\n- For the web interfaces, ensure the effective configured http paths end in a\n  slash to prevent 404's and/or errors accessing the web interfaces, preventing\n  admin confusion. (#325, 3e128d744e7f)\n\n\n# Bug fixes\n\n- smtp: Add data reader fuzzer + fix OOB read. (f10bb2c1ae22)\n- webmail: When completing a recipient address, quote the \"name\" if necessary\n  for proper interpretation. (#305, 1c58d382803c)\n- After queueing a message in the web api's, prevent context cancelation (e.g.\n  aborted http connections) from completing the operation in full. (b37faa06bdd2)\n- smtpserver: In localserve mode, don't reject messages \"From\" domain\n  \"localhost\" if localhost doesn't resolve to an IP through DNS. (d0b241499fc3)\n- webserver: Don't raise a 500 server error for static file requests with\n  overlong names. (aa2b24d861fd)\n- webmail: Fix parsing search filter \"start:\u003cdate\u003e\" and \"end:\u003cdate\u003e\".\n  (091faa8048e0)\n- webmail: Fix dark mode, broken since v0.0.14. (#278, d08e0d3882dd)\n- webmail: Fix nil pointer dereference when searching for attachment types, eg\n  \"a:spreadsheet\" (#272, 0203dfa9d981)\n- imapserver: Return proper response for FETCH of \"BODY[1.MIME]\" where 1 is a\n  message (39c21f80cd31)\n- imapserver: Properly accept literal8 for APPEND, since we claim to implement\n  the BINARY extension (88a68e91439d)\n- In domain/dns self-check, for unused services, check in SRV records that port\n  is 0 like how we told users to configure it and fix checking for errors during\n  srv lookups, and show the value we got but didn't expect; show config snippet\n  for HostTLSRPT if it isn't configured; don't warn about reverse dns resolving to\n  multiple names. (9dff879164b3, 3d0dc3a79db8, 6f678125a56d, 1d6f45e59229)\n\n\n# Update procedure\n\nBefore upgrading, do a dry-run first.\n\n- Make a temporary backup with the old mox version:\n        `mox-v0.0.14 backup data/tmp/testupgrade`\n- Verify that all is well with the old version:\n        `mox-v0.0.14 verifydata data/tmp/testupgrade`\n- Verify the state with the new version:\n        `mox-v0.0.15 verifydata data/tmp/testupgrade`\n\nWith a successful dry-run, the upgrade should go smoothly.  Make a new backup\nagain with `mox-v0.0.14 backup data/tmp/backup` (the previous backup was\nmodified by the dry-run, so couldn't be used to restore!), replace the binary\nand restart.  For further details, see\nhttps://www.xmox.nl/faq/#hdr-how-do-i-upgrade-my-mox-installation\n\nIf you run into any problems, please create a bug report.\n\n\n# Manual update actions\n\nAdditional manual actions to consider:\n\n- You may want to modify your backup scripts: \"mox backup\" now writes a data/\n  and config/ directory to the backup destination directory. Previously it only\n  wrote data files, directly to the backup destination directory. \n- You may want to disable signing with ed25519 DKIM keys to reduce noise in\n  DMARC reports from other mail servers that often don't understand ed25519 keys.\n  Make sure you do keep signing with an RSA key.\n- You may want to add the new prometheus alerting rule for\n  \"mox_autotls_cert_request_errors_total\", alerting on errors when\n  fetching/refreshing certificates with ACME. See prometheus.rules in the mox\n  repository.\n\n\n# Thanks\n\nThanks to everyone on irc/matrix/slack and the issue tracker for providing\nfeedback, and asking \u0026 answering questions. Much appreciated!  In particular:\nulrichwisser, eric l, kjetilho, Myp3a, mattfbacon, janc13, dstotijn, Eygem,\nmartin, rawtaz, ilijamt, skyguy, mattanja, BlankEclair, gdunstone, unguamorray,\nDanielG, RobSlgm, ally9335, x8x, exander77, s0ph0s-dog, odama626, wneessen,\nomartijn, sam-willsey, QuadrupleA, hrstoyanov, mtgxx, martinjanda, shleeable,\nharaldrudell, and more.\n\nIf you have open bug reports/issues mentioned in this release, please verify\nthe issue is resolved and either close the issue or write a comment. Thanks!\n\nSpecial thanks to NLnet foundation for sponsoring development.\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"poS6El7vnmp043x+fCB89DOaNxwUWA4R9IxnFs50oZkR2+NXC2uR3z6f/2S8Tezovy6aQdNcDTR1GYiBPhugDw==","Text":"version: v0.0.14\ndate: 2025-01-20\n\n# New features\n\n- Implement TLS client certificate authentication using their public keys (not\n  other certificate properties, so no name/expiration/constraint validation).\n  Accounts can add multiple TLS public keys, e.g. one for each mail client. For\n  use with SMTP/IMAP and the \"external\" SASL authentication mechanism. IMAP\n  \"preauth\" is enabled with TLS certificate authentication, but can be disabled\n  per key. (8804d6b60ec0)\n\n\n# Improvements\n\n- quickstart: Write all output to a file \"quickstart.log\" for later reference\n  (2255ebcf1186)\n- smtpserver: Add an option for the smtp delivery listener to enable/disable tls\n  session tickets. (issue #237, e59f894a94c2)\n- smtpserver: Add prometheus metric and alerting rule for failing starttls\n  handshakes for incoming deliveries. (related to issue #237, afb182cb14de)\n- webmail: Split pasted address into multiple address, by commas. (PR #252,\n  501f594a0af5)\n- Clarify that \"aliases\" are more small-scale lists, not additional addresses\n  for an account. And make \"public posting\" the default for new aliases. (issue\n  #244, 0e338b0530c3, cbe418ec5934)\n- smtpserver: When doing slow writes due to spammy incoming delivery, try a bit\n  harder to prevent a timeout for the other side (if it is mox/itself!)\n  (5a14a5b067ac)\n- quickstart: For -existing-webserver, also add tls key/cert placeholder for\n  mail.$domain. (5320ec1c5bc8)\n- Do not try to get a tls cert for autoconfig.\u003cdomain\u003e at startup if there is no\n  listener with autoconfig enabled. Reduces needless logging in setups that don't\n  use autoconfig. (35af7e30a6ad)\n- \"mox retrain\" command: Make the \"account\" parameter optional, retraining all\n  accounts when absent. (94fb48c2dc02)\n- webmail: Move config options for showing keyboard shortcuts and for showing\n  additional headers from localstorage to the settings popup, storing their values\n  on the server. (3f727cf38094)\n- webmail: Don't bind to shortcuts ctrl-l, ctrl-u and ctrl-I since they are\n  commonly used in browsers. (4d3c4115f823)\n- webapi: Add Content-Disposition and Filename to the payload of incoming\n  webhooks (issue #258, 42793834f8b6)\n- Add ability to include custom CSS \u0026 JS in web interfaces (webmail, webaccount,\n  webadmin), and use css variables in webmail for easier customization.\n  (96d86ad6f1e6, related to issue #114)\n- webmail: When marking message as unread, also clear its (non)junk flags\n  (1f604c6a3db4)\n- webaccount: Update text about opening apple mobileconfig profile files, it has\n  gotten harder to use in iOS18. (636bb91df6d8)\n- admin: Better handling of disabled MTA-STS during self-check. (7f5e1087d42d)\n- admin: In self-check for SPF records against our IPs, don't try checking the\n  unspecified addresses (0.0.0.0 and ::), and warn if there are no explicitly\n  configured IPs. (726c0931f77d)\n- autoconfig: More RFC compliant SRV service not available DNS records (issue\n  #240, 355488028db4)\n\n\n# Bug fixes\n\n- Fix verifying DANE-TA connections for outgoing email deliveries where the\n  DANE-TA record is not for the first certificate in the chain after the leaf\n  certifiate. (f7666d1582fe)\n- junk filter: Fix adjusting word counts after train/untrain. (17baf9a8830c)\n- Log when mox root process cannot forward signals to unprivileged child and\n  give the mox.service permissions to send such signals. (32d4e9a14c25)\n- webadmin: When loading page with webserver routes, internal services would\n  always be shown with \"admin\" as internal services, and saving the handler would\n  overwrite the correct setting. (issue #264, 965a2b426fae)\n- When opening an account by email address, such as during login attempts, and\n  the address is an alias, fail with proper error \"no such credentials\" instead of\n  with error \"no such account\" and printing a stack trace. (for issue #238,\n  3d4cd0043094)\n- webmail: Fix using the compose window/popup after saving a draft message\n  failed. (issue #256, ee48cf0dfd46)\n- webmail: Fix css to not show text on button (actually html \"a\" element for\n  links) for downloaded (visited) attachments in blue. (f7193bd4c321)\n\n\n# Update procedure\n\nAfter updating, run \"mox retrain\" to retrain the bayesian junk filter for all\naccounts. Retraining an account with many messages can require quite some\nworking memory. Due to a bug (now fixed), reclassifying messages as (non)-junk\nupdated the scores of words incorrectly, sometimes resulting in very high\n(non)-junk reputation of some words. The junk filter should perform better\nafter retraining.\n\nIf you are using the mox.service systemd unit file on Linux, you should add\n\"CAP_KILL\" to CapabilityBoundingSet (and reload \u0026 restart the service) so\ngraceful shut downs are faster.\n\n\nBefore upgrading, do a dry-run first.\n\n- Make a temporary backup with the old mox version:\n        `mox-v0.0.13 backup data/tmp/testupgrade`\n- Verify that all is well with the old version:\n        `mox-v0.0.13 verifydata data/tmp/testupgrade`\n- Verify the state with the new version:\n        `mox-v0.0.14 verifydata data/tmp/testupgrade`\n\nWith a successful dry-run, the upgrade should go smoothly.  Make a new backup\nwith `mox-v0.0.13 backup data/tmp/backup` (the previous backup was modified by\nthe dry-run, so couldn't be used to restore!), replace the binary and restart.\nFor further details, see\nhttps://www.xmox.nl/faq/#hdr-how-do-i-upgrade-my-mox-installation\n\nIf you run into any problems, please create a bug report.\n\n\n# Thanks\n\nThanks for all the contributions/bug reports/feedback/discussions, much\nappreciated!  Special thanks to: exander77, bwbroersma, Robby-, wneessen,\nkiekerjan, robbo5000, morki, laura-lilly, ally9335, spectral369, mattfbacon,\nmwyvr, s0ph0s-dog, soheilpro and many more!\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"1lZ1FGfel4ztBV2wr3Kj1Jyii1bghz1hMUfxaz9j+vG6uR1CvNBZYIGocWJHvGLEalSR09pG3A6rvfrwP1hCCw==","Text":"version: v0.0.13\ndate: 2024-11-06\n\nThis release fixes TLS interoperability with incoming deliveries from Microsoft\nservers by disabling TLS session tickets. If you have MTA-STS and/or DANE\nenabled, TLS is required for successful delivery, and updating to v0.0.13 is\nrequired to receive messages from Microsoft again. TLS session tickets may be\nenabled again in a future release, possibly per port/service.\n\n# Improvements\n\n- In the IMAP server, for the \"bodystructure\" response item to a \"FETCH\"\n  command, add the content-type parameters for multiparts so IMAP clients will\n  get the MIME boundary without having to parse the message themselves. (issue\n  #217, 8fa197b19dfe)\n- Add an HTTP handler for the acme http-01 validiation mechanism to all plain\n  http (non-tls) webservers (ports), not only to the one listening on port 80.\n  (#issue 218, 0fbf24160c65)\n- Properly link to matrix room so users can find it. (issue #226, 76f7b9ebf64c)\n\n# Bug fixes\n\n- Disable session tickets for tls to workaround deliverability issues with\n  incoming email from Microsoft over smtp with starttls. Without this fix,\n  email from Microsoft is no long coming in. (issue #237, 22c8911bf3f7)\n- In the SMTP server, when logging about problems with recipients, actually\n  show which recipients were present in the session. (issue #232,\n  598c5ea6ac9f).\n- Webmail: During \"send and archive\", don't fail with error message when\n  message that is being responded to is already in archive folder. (issue #233,\n  879477a01f72)\n- Webmail: if we don't have loaded account settings yet, abort loading the\n  popup after showing an error that the settings aren't available yet. (issue\n  #218, 04305722a783)\n\n\n# Update instructions\n\nBefore upgrading, do a dry-run first.\n\n- Make a temporary backup with the old mox version:\n        `mox-v0.0.12 backup data/tmp/testupgrade`\n- Verify that all is well with the old version:\n        `mox-v0.0.12 verifydata data/tmp/testupgrade`\n- Verify the state with the new version:\n        `mox-v0.0.13 verifydata data/tmp/testupgrade`\n\nWith a successful dry-run, the upgrade should go smoothly.  Make a new backup\nwith `mox-v0.0.12 backup data/tmp/backup` (the previous backup was modified by\nthe dry-run, so couldn't be used to restore!), replace the binary and restart.\nFor further details, see\nhttps://www.xmox.nl/faq/#hdr-how-do-i-upgrade-my-mox-installation\n\nIf you run into any problems, please create a bug report.\n\n\n# Thanks\n\nThanks for all the contributions/bug reports/feedback/discussions, much\nappreciated!  Special thanks to mdavids, danieleggert, startup-001-steve,\nsnabb, mattfbacon, mgkirs, exander77.\n\nDevelopment on mox is funded through the NLnet NGI0 Entrust Fund,\nhttps://nlnet.nl/entrust/, with financial support from the European\nCommission's Next Generation Internet programme.\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"k+Z6GyAqFGtzagbfp0PmU1jGcBPjppLM6bDy3ybtof0P+AmIxZ7w6Bu7Pvtmqlr0mpueFK0kwb34Cry04JilCw==","Text":"version: v0.0.12\ndate: 2024-10-06\n\n# Improvements\n\n- webmail: Change many inline styles to using css classes, and add dark mode.\n  (#163 by mattfbacon, a16c08681b71)\n- webmail: In compose window, merge close \u0026 cancel button, and align buttons on\n  the right. (4d28a02621f2)\n- mox backup: Add hint about systemd ReadWritePaths if hardlinking fails on\n  linux due to cross-device link. (#170 by rdelaage, 44a6927379cd)\n- mox backup: Clarify behaviour with destination directory, and exit code.\n  (#172 by RobSlgm, 1fc8f165f75e)\n- When removing account, remove its data directory instead of leaving it\n  around. (#162 by RobSlgm \u0026 x8x, 30ac690c8f64)\n- Give more helpful pointers for dns-related setup, such as troubleshooting dns\n  resolving, and multi-line dkim dns records. (#158, #164, vipas84, RobSlgm,\n  83004bb18e3c)\n- Improve http request handling for internal services (web interfaces) and\n  multiple domains. The handler for /admin/ is now only enabled on the listener\n  (machine) host name by default, no longer all hosted domains. The internal\n  handlers (for admin, account, webmail, webapi), can now also be explicitly\n  configured in the webserver section, for additional/custom endpoints to serve\n  those services on. (#160 by TragicLifeHu, 614576e409a6)\n- During DNS self-check, if the SRV records with just a dot (for a non-existent\n  service), is missing, show as warning, not as error. (#184 by morki,\n  e350af7eed68)\n- During DNS self-check, warn when DANE is not configured (through static host\n  keys), instead of showing \"OK\". (#185 by morki, 73373a19c134)\n- Systemd service file now syslogs as facility \"mail\". (by kiekerjan,\n  151bd1a9c044)\n- Add favicon to web interfaces. Admins can use the webserver config to serve a\n  different file. (#186 by morki, c629ae26afee)\n- Attempts at improving interoperability with SMTP clients and the \"login\" SASL\n  authentication mechanism. (#51 by hmfaysal, #223 by gdunstone \u0026 wneessen,\n  aead73883601, 7ecc3f68ce92)\n- Recognize more charsets than utf-8/iso-8859-1/us-ascii when parsing message\n  headers with addresses. (#204 by morki, 5678b0332486)\n- webapi: Implement adding \"alternative files\" to messages sent with the Send\n  method. (#188 by morki, 6c488ead0b9e)\n- webmail: Add setting to show html version of a message by default, instead of\n  text version. (#196 by GildedHonour, b77f44ab5819)\n- When login sessions to admin/account/webmail interfaces expiry or are no\n  longer valid, explain the reason in the message above the login form. (#202\n  by ally9335, a977082b89db)\n- webapi: Add \"RcptTo\" to webapi MessageGet result. (mattanja on matrix,\n  b0c4b090102c)\n- webadmin: At managing aliases, mention an alias member won't receive a\n  message if the member address is in the message From header. (#220 by\n  wneessen, bbc419c6ab91)\n- In ACME port config option, explain why using a HTTPS reverse proxy will not\n  work for ACME tls-alpn-01 verification. (#218 by mgkirs, 7d3f3071561b)\n- Add more details to X-Mox-Reason message header added during delivery, for\n  understanding why a message is accepted/rejected. (#179 by Fell, #157 by\n  mattfbacon, 32b549b260a1)\n- Many small improvements.\n\n\n# Bug fixes\n\n- webadmin: Propagate error when quota size cannot be parsed, improve parsing\n  and hint in error message. (#115 by pmarini-nc, 72be3e8423f6)\n- webadmin: Don't show js runtime typecheck errors for invalid values in DMARC\n  and TLS reports. (#161 by RobSlgm, a2c9cfc55be6)\n- webmail: In list of From address to use in compose window, don't add the\n  catchall address. (1a0a396713ab)\n- webmail: Only show \"edit\" button on drafts, and similar for \"e\" shortcut.\n  (8254e9ce66d2)\n- webadmin: Show correct host TLSRPT record in dns selfcheck, and make all\n  suggested dns records absolute. (#182 by mdavids, 9bab3124f6fa)\n- Show the same SPF record for a domain in the dnsrecords and dnscheck\n  output/pages. (#176 by rdelaage \u0026 RobSlgm, 7e54280a9d9d)\n- Fix parsing message headers with addresses that need double quotes. (#199 by\n  gene-hightower, 016fde8d7832)\n- Reject attempts at STARTTLS for SMTP \u0026 IMAP when no TLS config is present.\n  Instead of dereferencing a nil pointer, which is caught by the go runtime,\n  with fallback error handling gracefully closing the SMTP connection.\n  (a7bdc41cd407)\n- For certain errors during SCRAM authentication, handle errors more gracefully\n  instead of aborting the connection. (#222 by wneessen, c7315cb72d65)\n- For messages retired from the delivery queue, set \"success\" field properly,\n  and include the SMTP code/enhanced code on success too (not only on failure).\n  (fdc0560ac4e7)\n- webmail: Fix loading a \"view\" (messages in a mailbox) when the \"initial\"\n  message cannot be parsed. (#219 by wneessen, fb65ec0676ab)\n- smtpclient: Handle server closing connection after writing its response to\n  RCPT TO in pipelined mode. (#198 by soheilpro, 17346d6def1d)\n- imapserver: Prevent unbounded memory allocations when handling a command\n  (solves same problem as in CVE-2024-34055). (aef99a72d8f8)\n- For incoming SMTP deliveries with STARTTLS, use certificate of hostname if\n  SNI hostname is unknown. Instead of failing the connection because no\n  certificates are available. Fixes interoperability with SMTP clients that do\n  opportunistic SMTP without sending a hostname. (#206 by RobSlgm, 62bd2f442731)\n\n\n# Update instructions\n\nBefore upgrading, do a dry-run first.\n\n- Make a temporary backup with the old mox version:\n        `mox-v0.0.11 backup data/tmp/testupgrade`\n- Verify that all is well with the old version:\n        `mox-v0.0.11 verifydata data/tmp/testupgrade`\n- Verify the state with the new version:\n        `mox-v0.0.12 verifydata data/tmp/testupgrade`\n\nWith a successful dry-run, the upgrade should go smoothly.  Make a new backup\nwith `mox-v0.0.11 backup data/tmp/backup` (the previous backup was modified by\nthe dry-run, so couldn't be used to restore!), replace the binary and restart.\nFor further details, see\nhttps://www.xmox.nl/faq/#hdr-how-do-i-upgrade-my-mox-installation\n\nIf you run into any problems, please create a bug report.\n\nAfter upgrading, you may want to run \"mox reparse\" to parse the message headers\nof all messages in all accounts. Message headers for addresses with character\nsets other than us-ascii/utf-8/iso-8859-1 will be fixed.\n\n\n# Thanks\n\nThanks for all contributions, bug reports, feedback and discussions. It improves\nmox, keep it coming!\n\nDevelopment on mox is funded through the NLnet NGI0 Entrust Fund,\nhttps://nlnet.nl/entrust/, with financial support from the European\nCommission's Next Generation Internet programme.\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"dJXFmtKhnGLA9slGIzutonc3Xbt+BGyTLxTrtjVxCiqTW349VrWdY6VoDXxNTo4B11WyRfEHUD1uuRFlSmmWDw==","Text":"version: v0.0.11\ndate: 2024-04-30\n\n# New features\n\n- Improve queue management (40ade995a5e5)\n\t- Add option to put messages in the queue \"on hold\", preventing delivery\n\t  attempts until taken off hold again.\n\t- Add \"hold rules\", to automatically mark some/all submitted messages as \"on\n\t  hold\", e.g. from a specific account or to a specific domain.\n\t- Add operation to \"fail\" a message, causing a DSN to be delivered to the\n\t  sender. previously we could only drop a message from the queue.\n\t- Update admin page \u0026 add new cli tools for these operations, with new\n\t  filtering rules for selecting the messages to operate on. In the admin\n\t  interface, add filtering and checkboxes to select a set of messages to operate\n\t  on.\n- Add a webapi and webhooks for a simple HTTP/JSON-based API, helps with\n  sending transactional email. (for issue #31 by cuu508, 09fcc492234e)\n\t- Webapi allows submitting messages without having to compose the message\n\t  yourself, and without having to know SMTP.\n\t- Webhooks makes it easy to process delivery failure/success updates, without\n\t  needing IMAP and process DSNs.\n\t- History about outgoing/sent messages can be kept for a configurable interval,\n\t  per account. Also for the new webhook queue.\n\t- Messages can be delivered with a \"unique SMTP MAIL FROM\" address, using a\n\t  unique id after the localpart catchall separator, e.g.\n\t  `you+\u003cunique\u003e@example.org`.\n\t- Automatic suppression list management, protecting server reputation.\n\t- Extra metadata can be attached through the webapi, or through\n\t  X-Mox-Extra-\u003ckey\u003e: \u003cvalue\u003e headers during SMTP submission.\n\t- Most settings are per-account, configurable through config file and \n\t  account web interface. The webapi must be enabled in mox.conf through field\n\t  WebAPIHTTP(s).\n\t- Gopherwatch.org was created to validate this functionality, and it can now\n\t  operate either with SMTP/IMAP or webapi/webhooks.\n- Add aliases/lists: when sending to an alias, the message gets delivered to all\n  members. (for issue #57 by hmfaysal, issue #99 by naturalethic, feedback by\n  damir \u0026 marin, 960a51242d51).\n- IMAP quota extension (RFC 9208), so mail clients can show disk usage (issue\n  #115 by pmarini, 4dea2de34374)\n- Webmail: when moving a single message out of/to the inbox, ask if user wants\n  to create/remove a rule to automatically do that server-side for future\n  deliveries, either based on list-id header if present, or message-from address.\n  (6c0439cf7b9e)\n- Webmail: add server-side stored settings, initially for signature, top/bottom\n  reply and showing the security indicator bars below address input fields.\n  (for issue #102 by nixigaj, 70adf353ee07)\n- Webmail: for replies/forwards, add button \"send and archive thread\" next to\n  the \"send\" button, and give it a control+shift+Enter shortcut. (for issue #135\n  by mattfbacon, 5229d01601ad)\n- Webmail: store composed message as draft until send, ask about unsaved changes\n  when closing compose window. (9529ae0bd4f7)\n- Webmail: remember server-side per from-address whether we should show the\n  text/html/html-with-external-resources version of a message. (0f735a17100b)\n\n\n# Improvements\n\n- Add account config option to skip first-time sender delay for incoming\n  messages over SMTP. (8b2c97808d88)\n- In quickstart, check if outgoing SMTP connection on port 25 can be made. New\n  cloud machines tend to have the port blocked, early warning is helpful.\n  (reported by arnt, 0262f4621e13)\n- In quickstart, use \"postmaster@\" for the contact address with the ACME account\n  for Let's Encrypt if the initial address has a non-ASCII localpart, to prevent\n  account registration from failing. (reported by arnt, f4b6e14cb9f7)\n- Add a \"direct\" transport, that allows influencing behaviour of the normal\n  delivery mechanism of dialing MX records: The IP address family can be limited\n  to IPv4 or IPv6 (either may not have proper reverse DNS set up). (for issue\n  #149, PR #153 by lmeunier, be570d1c7d3d)\n- Also give delivery another try with 5xx response when it happens during MAIL\n  FROM/RCPT TO, not only EHLO as before. (related to #149, PR #152 by lmeunier,\n  feb8e6c37947)\n- Make error messages around syntax errors in config files related to\n  spurious spaces more helpful/understandable. (reported by arnt, 6516a27689cb)\n- In SMTP server, reevaluate if SMTPUTF8 extension is needed for delivery, to\n  prevent potential delivery problems to servers that don't implement SMTPUTF8.\n  (issue #145, by lmeunier, 9c5d2341629f)\n- When importing maildir, use file mtime as received timestamp if no timestamp\n  is available in filename. (based on message from abdul h, 6d38a1e9a4bb)\n- If webauth login cookie is missing, and forwarding was configured, hint that\n  reverse proxy may be stripping path. (for issue #151 by naturalethic,\n  afc47c8108f8)\n- Webmail: When adding submitted message to Sent mailbox, keep any Bcc address\n  in Bcc header.  (c9451d4d065e)\n- Make more of the dynamic config options (in domains.conf) configurable through\n  the web interfaces, instead of requiring editing the config file. (baf4df55a6cd,\n  a69887bfabe3, e702f45d32d3)\n- Webmail: Allow resizing of compose window, and remember width/height for\n  viewport dimension. (e8bbaa451b13)\n- Webmail: Show all images (inline and attachment) below the text part (for the\n  text view, not for html view). (3a58b2a1f49f)\n- Webmail: Add export functionality, similar to existing option in account web\n  interface, but not also possible per mailbox or hierarchy. (bf5cfca6b99f)\n- Webmail: ctrl+Backspace on empty address input field removes the field (b54e903f015a)\n- Localserve: delivery from queue now goes through the smtp server instead of\n  directly from queue to local accounts. To go through the full regular delivery\n  paths. (1cf747764266)\n- Many small improvements.\n\n\n# Bug fixes\n\n- Always properly escape values in Authentication-Results header added to\n  incoming messages. Some generated values could have characters that weren't\n  escaped. (2c9cb5b847a7)\n- Fix logging in on account and webmail interface for account names (not email\n  addresses) with non-ASCII characters. (reported by arnt, 666f84edead6)\n- Update to latest bstore with a fix for ordering of certain database results.\n  Only a single query in mox would have triggered the issue, with no expected\n  impact. (d34dd8aae6ca)\n- For incoming TLS connections (HTTPS, but also SMTP and IMAP) for unrecognized\n  domain names (for which we don't have a TLS certificate), don't respond with an\n  \"internal error\" TLS alert, but with an \"unrecognized name\" alert. More helpful\n  to user figuring out what's going on. (reported by arnt, 89a9a8bc9796).\n\n\n# Update instructions\n\nBefore upgrading, do a dry-run first.\n\n- Make a temporary backup with the old mox version:\n\t`mox-v0.0.10 backup data/tmp/testupgrade`\n- Verify that all is well with the old version:\n\t`mox-v0.0.10 verifydata data/tmp/testupgrade`\n- Verify the state with the new version:\n\t`mox-v0.0.11 verifydata data/tmp/testupgrade`\n\nWith a successful dry-run, the upgrade should go smoothly.  Make a new backup\nwith `mox-v0.0.10 backup data/tmp/backup` (the previous backup was modified by\nthe dry-run, so couldn't be used to restore!), replace the binary and restart.\nFor further details, see\nhttps://www.xmox.nl/faq/#hdr-how-do-i-upgrade-my-mox-installation\n\nIf you run into any problems, please create a bug report.\n\n\n# Thanks\n\nThanks for contributions and/or feedback from: pmarini, tabatinga0xffff,\nlmeunier, alex, arnt, abdul h, cuu508, naturalethic, nixigaj, mattfbacon,\njsfan3, hmfaysal, damir \u0026 marin from sartura, RobSlgm, daftaupe, vipas84,\nTragicLifeHu, manaus0xff, jdlawrie, Bloomers7577, kbrgmn (and all those I\nmissed).\n\nFeedback, feature requests, bug reports, contributions (start small!) are all\nwelcome. An easy way to help mox is to use it and spread the word!\n\nDevelopment on mox is funded through the NLnet NGI0 Entrust Fund,\nhttps://nlnet.nl/entrust/, with financial support from the European\nCommission's Next Generation Internet programme.\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"e6Ay8byLf0iH2ukH9SSDUrP/AgBw65b0eYjixpbMH8t9dMq3lCnxf8vVvxlXQYW1rIvoK+IABl/jJ1PV8vYIAg==","Text":"version: v0.0.10\ndate: 2024-03-09\n\n# New features\n\n- Implement SMTP \"FUTURERELEASE\" extension in SMTP server. For submitting a\n  message for delivery from the queue at a time in the future, e.g. tomorrow\n  morning 9:00. (93c52b01a02d)\n- Delivery from the queue to multiple recipients in a single SMTP transaction,\n  transferring data only once. This is only done for recipients with the same\n  recipient domain. The maximum recipients limit from the RFC 9422 SMTP LIMITS is\n  honored and mox now announces its own limit. (47ebfa81526c)\n- Allow configuring DNS blocklists (DNSBLs) only for monitoring, without using\n  them for incoming email. Previously, mox would only monitor DNSBLs that are\n  used for incoming connections. But it is useful to know if your IPs are on a\n  blocklist, unrelated to whether you're using the blocklist. (15e450df6117)\n\n# Improvements\n\n- Mox has a separate website now, https://www.xmox.nl. It should be more\n  friendly for first-time visitors than the github page. It also has an initial\n  video, with more to come. Content, except images/videos, is in the mox git\n  repository, so functionality and documentation can be changed together.\n  (0bc30729440c)\n- Fix interpreting a per-account negative total size quota as \"no limit\",\n  overriding the global/default setting. (issue #115 by pmarini-nc)\n- Webmail: When Q/B-word-decoding attachment filenames, recognize more\n  character set encodings. (issue #113 by jsfan3)\n- Webmail: show unicode for internationalized email addresses by default. Not\n  the xn-- names, which are not user-friendly. A hover still shows the xn--\n  names. After talking to arnt at FOSDEM.\n- Localparts of addresses are now normalized to Unicode NFC throughout mox,\n  including for incoming deliveries. Previously, incoming SMTPUTF8 deliveries\n  with non-NFC-normalized unicode localparts (e.g. with separate code points for\n  accents and such (NFD)) would not be accepted. (8e6fe7459b6f)\n- The PRECIS (RFC 8265) password profile is now applied when setting/using\n  passwords. It prevents confusing users who use unusual unicode whitespace\n  codepoints in their passwords. (c57aeac7f09e)\n- Webmail: Implement registering \"mailto:\" links. Click the new button in the\n  Help popup to register. From Hans-Jörg. (ee1db2dde705)\n- In DSNs, show the full (multiline) SMTP response, not just the first line. It\n  often has helpful details. (50c13965a72b)\n- More DSN improvements: put the full SMTP reply in field Diagnostic-Code\n  (1c934f0103d5), when delivering a local DSN add Delivered-To header\n  (79da4faaa1e7), when parsing an incoming DSN set the Action field (e.g. failed,\n  delayed) (f6497b1aaf65), match DSN to threads based on Referenced/In-Reply-To\n  only, not subject (13923e4b7bfe).\n- In quickstart and self-check, improve the check whether resolver verifies\n  DSNSEC. We were looking up NS on \".\", but some DNSSEC-verifying resolvers\n  respond to that with unauthentic data. (issue #139 by triatic)\n- More helpful instructions about setting up a DNSSEC-verifying resolver, and\n  how to test it. (issue #131 by romner-set)\n- Relevant for reusable components: the \"slog\" package from golang.org/x/exp is\n  now replaced with slog from the standard library. Function signatures have\n  changed. (d1b87cdb0da1)\n\n\n# Bug fixes\n\n- smtpserver: Spurious \\r were sometimes injected when fixing up crlf line\n  endings for incoming messages. The check could look at wrong a buffer,\n  seemingly randomly incorrectly concluding a \\r was missing before a \\n. \n  Messages with the extra \\r added shouldn't cause any trouble.\n  You can find these messages with \"grep -rn $'\\r\\r$'\n  data/accounts/$youraccount/msg/\", remove one \\r manually and run \"mox fixmsgsize\n  $youraccount\" to reparse the message. (issue #117, by haraldrudell)\n- Deliveries could seemingly randomly but consistencly fail with an incorrect\n  diagnostic about the message containing a bare newline. It would happy due to\n  crlf handling around buffer starts/ends.  (issue #129 by x8x)\n- When adding a message to the queue for delivery, set the correct local\n  account, so DSNs about delivery failures go to the correct user, not the\n  postmaster account. (dc83ad1df559)\n- imapserver: In a sequence/uid pattern, the \"*\" would in some cases be interpreted\n  as the first message, but it should always be the last message in a mailbox.\n  (14aa85482e0e).\n- Fix displaying DMARC reports with empty values for some fields. The\n  TypeScript checks would reject them for being invalid enums, empty strings\n  are now part of the enum. (20812dcf62af)\n- In outgoing TLS reports, always use DNS ASCII A-labels, not unicode U-labels.\n  (62be829df078)\n- For domains configured only for TLS/DMARC reporting, don't reject messages to\n  that domain during submission, but deliver them as normal. (1d9e80fd7059)\n- smtpclient: Treat server's size limit of SIZE=0 as \"no limit\", instead of\n  failing to deliver. (39bfa4338a12)\n- Accept TLS reports that reference multiple domains, and that mix reports\n  about hosts and recipient domains. (e0c36edb8f1b)\n- Admin: Prevent writing out an invalid domains.conf that cannot be parsed\n  again. Happened when the last address of an account was removed through the\n  admin web interface. (issue #133 by ally9335)\n- Webmail: sending to invalid addresses could result in (failing) attempts to an\n  empty address instead of returning an error message to the user. (63cef8e3a59b)\n\n\n# Update instructions\n\nBefore upgrading, do a dry-run first.\n\n- Make a temporary backup with the old mox version:\n\t`mox-v0.0.9 backup data/tmp/testupgrade`\n- Verify that all is well with the old version:\n\t`mox-v0.0.9 verifydata data/tmp/testupgrade`\n- Verify the state with the new version:\n\t`mox-v0.0.10 verifydata data/tmp/testupgrade`\n\nWith a successful dry-run, the upgrade should go smoothly.  Make a new backup\nwith `mox-v0.0.9 backup data/tmp/backup` (the previous backup was modified by\nthe dry-run, so couldn't be used to restore!), replace the binary and restart.\nFor further details, see\nhttps://www.xmox.nl/faq/#hdr-how-do-i-upgrade-my-mox-installation\n\nIf you run into any problems, please create a bug report.\n\n\n# Thanks\n\nThanks for contributions and/or feedback from: haraldrudell, x8x, romner-set,\ntriatic, mteege, Hans-Jörg, arnt, jsfan3, pmarini-nc, ArnoSen, andreasheil,\ntheduke, daluntw, lmeunier, ally9335, p-rintz, daftaupe (and everyone at the\nFOSDEM email devroom, and all those I missed).\n\nFeedback, feature requests, bug reports, contributions (start small!) are all\nwelcome. An easy way to help mox is to use it and spread the word!\n\nDevelopment on mox is funded through the NLnet NGI0 Entrust Fund,\nhttps://nlnet.nl/entrust/, with financial support from the European\nCommission's Next Generation Internet programme.\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"ZBX3Y0w8GlFP8WlYEWGzCwV8IOMcn+wihDBRTNMNdccqqcFCIcvPJJTNyyKkq6fGYdYP4r/0gt8Qlh3BvSZIDw==","Text":"version: v0.0.9\ndate: 2024-01-09\n\n# New features\n\n- Per-account disk space quota. Mox now tracks the total size of messages in an\n  account (overhead from the message index database or file system is not\n  included). A maximum disk usage can be configured globally and/or per account.\n  If configured, the maximum allowed disk usage is enforced. By default, no\n  maximum is configured. Setting quota for accounts can prevent a single account\n  from filling up the disks. (d73bda751119)\n- When suggesting CAA DNS records (specifying which Certificate Authorities are\n  allowed to sign certificates for a domain), suggest variants that bind to the\n  ACME account ID, and restricts the validation methods to those used by mox.\n  Should prevent MitM close to a machine from requesting TLS certificates through\n  ACME as seen on the internet recently. (db3fef4981f2)\n- Add config file fields for ACME external account binding (EAB). Some ACME\n  providers require EAB to link an ACME account with a non-ACME account at the\n  provider. With EAB, more ACME providers can be used with mox. (ee1094e1cb7c)\n- Implement the PLUS-variants of the SCRAM authentication mechanisms:\n  SCRAM-SHA-256-PLUS and SCRAM-SHA-1-PLUS. The PLUS variants add TLS channel\n  binding: Authentication only succeeds if the client and server are on the same\n  TLS connection. Authentication will fail if there is a MitM (that has a valid\n  TLS certificate). (e7478ed6acb9)\n- Use a `mail.\u003cdomain\u003e` CNAME for the SMTP (submission) and IMAP servers of a\n  domain, pointing to the mail server host name. Before, clients were instructed\n  to configure the mail server host name directly, but that makes it harder to\n  migrate the domain to another mail server in the future: All clients would need\n  to update their settings. A CNAME can be pointed to a new server without\n  requiring changes to client settings. (da3ed38a5cb0)\n\n# Improvements\n\n- The admin, account and mail web interfaces now use session cookie-based\n  authentication (with csrf) instead of HTTP authentication. These interfaces\n  now have a \"logout\" button (not possible with HTTP authentication). (#58,\n  0f8bf2f22088)\n- Webmail: Don't automatically mark unclassified messages in the Rejects mailbox\n  as non-junk when reading them. For all other mailboxes the behaviour is\n  unchanged. (416113af723a)\n- Webmail: Ask user to reload the application when the server version has\n  changed. (8e37fadc1310)\n- Webmail: In the message view, show the DMARC status of the domain of the\n  message \"From\" address. (fb81effe45cf)\n- Webmail: When composing, leave out our own address when replying. (7c1879da828c)\n- Junk filtering: Make content-based filtering for first-time senders more\n  strict for messages delivered over non-TLS connections, or when the addressee\n  isn't in a To/Cc message header. Common for junk, uncommon for non-junk.\n  (2ff87a0f9c84)\n- SMTP server: after \"MAIL FROM:\" and \"RCPT TO:\" commands, allow a space (which\n  is invalid syntax) also for delivery. We only allowed it for submission,\n  assuming only (submitting) mail clients or spammers had sloppy SMTP\n  implementations. In practice, also legitimate delivering mail servers have\n  sloppy implementations. (#101, af5da176239b)\n- When generating a Authentication-Results message header (with results for\n  SPF/DKIM/DMARC/etc), put each result on a new line for better readability.\n  (2710a5b97122)\n- Make many non-server Go packages more easily reusable. Package imports were\n  changed so more packages can be imported without pulling in mox internals. See\n  https://github.com/mjl-/moxtools for a tool that reuses Go packages. It is\n  deployed publicly at https://tools.xmox.nl/. As part of this change, mox now\n  uses Go's slog package for logging. Changes in the API's between releases are\n  tracked at https://github.com/mjl-/mox/tree/main/apidiff. (5b20cba50aa1,\n  72ac1fde29fb, f3a35a67663e)\n- SMTP server: for submission, if a message has a Return-Path header, only fail\n  in pedantic mode. (#103, 57fc37af2296)\n- Webmail: For messages in the Sent mailbox, show To/Cc/Bcc in italic, and show\n  all correspondents in collapsed threads. (#104, 802dcef192c0)\n- The admin and account web interfaces were changed from JavaScript to\n  TypeScript, making it easier to maintain. (a9940f9855d4).\n- Implement IMAP-UTF-7 more fully, and allow creating mailboxes with \"special\"\n  characters: \"\u0026\" (the IMAP-UTF-7 escape character), \"#\" (the IMAP namespace\n  character), \"*\" and \"%\" (matching characters). These were not allowed out of\n  caution, but occur in real-world mailbox names. Mox now uses IMAP-UTF-7 when\n  sending mailbox names for clients that did not enable IMAP4rev2 or UTF8=ACCEPT.\n  Before, mox would always send UTF-8, but not all clients understand that, and it\n  can cause confusion with IMAP-UTF-7 and \"\u0026\" escaping. (#110, d84c96eca585)\n- IMAP server: Add STATUS=SIZE as capability. It was already implemented as\n  part of IMAP4rev2, but older clients won't recognize that. (59bffa470153)\n- And more smaller improvements.\n\n\n# Bug fixes\n\n- SMTP server and SMTP smuggling: Mox was itself not vulnerable to SMTP\n  smuggling, treating only \"\\r\\n.\\r\\n\" as end of transaction. But two\n  improvements have been made: (1f9b640d9ae8)\n\t1. Bare carriage returns are no longer accepted during SMTP transactions. Bugs\n\t   in other mail servers can lead them to accept other sequences as\n\t   end-of-transaction, notably \"\\r.\\r\". Mox would accept submitted messages with\n\t   that sequence for delivery. Such messages could trigger bugs in other mail\n\t   servers causing them to materialize non-existent messages. By no longer\n\t   accepting bare carriage returns in submitted messages, mox can no longer be used\n\t   to trigger the \"\\r.\\r\"-bug in other mail servers. SMTP transactions with a bare\n\t   carriage return now result in an error mentioning SMTP smuggling. Mox can still\n\t   store messages with bare carriage returns, e.g. from imports. Mox already added\n\t   missing carriage returns to bare newlines.\n\t2. A bug in mox caused sequences of \"\\nX\\n\" for any X (including \"\\n.\\n\") to\n\t   result in a temporary processing error. For \"\\n.\\n\" this accidentially was fine\n\t   behaviour, for other characters the bug has been fixed. Any sequence of\n\t   \"\\r\\n.\\r\\n\" where one or both carriage returns are missing now result in an\n\t   error mentioning SMTP smuggling.\n- IMAP server: The on-disk message size was not correctly calculated for messages\n  added with the APPEND command (typically used for imported messages and when a\n  mail client sends a message) when bare newlines (\"\\n\") got a missing carriage\n  return added (\"\\r\\n\"). This would cause errors when attempting to read the\n  message. If you are affected by this, run \"mox fixmsgsize \u003caccount\u003e\" to fix up\n  incorrect message sizes. Reported by daftaupe. (02eb7b50330e)\n- SMTP server: When writing \"slow responses\" (when a message is deemed junk),\n  ensure the total response time isn't too long (slightly less than 30 seconds).\n  Slow responses were writing 1 byte per second. With a long response (e.g. long\n  error message), a sending mail server may not consume a full response. If mox\n  was the sending server, it would report a timeout after 30 seconds. Report by\n  naturalethic. (fbc18d522d29)\n- IMAP server: Only send \"OLDNAME\" in a response to the LIST command when\n  IMAP4rev2 is enabled. IMAP4rev1 clients (most common) don't understand it. From\n  duesee with imap-flow. (41e3d1af1057)\n\n\n# Update instructions\n\nBefore upgrading, do a dry-run first.\n\n- Make a temporary backup with the old mox version:\n\t`mox-v0.0.8 backup data/tmp/testupgrade`\n- Verify that all is well with the old version:\n\t`mox-v0.0.8 verifydata data/tmp/testupgrade`\n- Verify the state with the new version:\n\t`mox-v0.0.9 verifydata data/tmp/testupgrade`\n\nWith a successful dry-run, the upgrade should go smoothly.  Make a new backup\nwith `mox-v0.0.8 backup data/tmp/backup` (the previous backup was modified by\nthe dry-run, so couldn't be used to restore!), replace the binary and restart.\nFor further details, see\nhttps://github.com/mjl-/mox#how-do-i-upgrade-my-mox-installation\n\nIf you run into any problems, please create a bug report.\n\nAfter upgrading, you may want to:\n\n- Run \"mox fixmsg \u003caccount\u003e\" if you've imported messages over IMAP that have\n  bare newlines (\"\\n\" instead of \"\\r\\n\").\n- Configure your email clients to use authentication mechanism\n  SCRAM-SHA-256-PLUS for SMTP (submission) and IMAP, if they support it. If mail\n  clients have trouble logging in after upgrading, they may be picking a SCRAM\n  PLUS variant without properly supporting it. Explicitly configuring the non-PLUS\n  authentication mechanism should fix the problem and ensures a MitM cannot\n  downgrade the chosen authentication mechanism by altering the list of supported\n  authentication mechanisms.\n- Change the CAA records for your domains to include the ACME account id and\n  allowed validation methods. See the suggested DNS records for each configured\n  domain.\n- Set disk usage quota, either globally for all accounts or per account. See\n  QuotaMessageSize in mox.conf, https://pkg.go.dev/github.com/mjl-/mox/config.\n- Add `ClientSettingsDomain: mail.\u003cyourdomain\u003e` to each domain in domains.conf,\n  add the CNAME record as afterwards suggested in the DNS records page, and\n  update client account settings to use the new host name.\n- For mox setups configured behind an existing webserver, add \"Forwarded: true\"\n  to the (Admin|Account|Webmail)HTTP(S) sections in mox.conf. It causes them to\n  use X-Forwarded-* headers for determining if HTTPS was active (for secure\n  cookies), and for the IP used for rate limiting.\n\n\n# Thanks\n\nThanks for contributions and/or feedback from: Fell, duesee (and\nhttps://github.com/duesee/imap-flow/), daftaupe, naturalethic, jsfan3, Halyul,\nmattfbacon, jsaponara, pmarini (and those I missed).\n\nFeedback, feature requests, bug reports, contributions (start small!) are all\nwelcome. An easy way to help mox is to use it and spread the word!\n\nDevelopment on mox is funded through the NLnet NGI0 Entrust Fund,\nhttps://nlnet.nl/entrust/, with financial support from the European\nCommission's Next Generation Internet programme.\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"wgkBVML0TTvXQGC4o/UsDdn9z2oWjjLq3WYaPvd/62jpR+ol99jcDqf7BrqnmBhff8ZSngOc7f6NbnKPfnyOCQ==","Text":"version: v0.0.8\ndate: 2023-11-22\n\n# New features\n\n- DNSSEC-awareness throughout the code base, based on\n  https://github.com/mjl-/adns, a fork of Go's DNS resolver.  DNSSEC\n  is a requirement for DANE (see below).  If you don't have a\n  DNSSEC-verifying stub resolver configured, DNS lookups are regarded\n  as unverified.  Installing unbound and and is still the recommended\n  action.\n- DANE for incoming and outgoing delivery (RFCs 7672, 6698 and 7671).\n  DANE is a mechanism to require verified TLS (with STARTTLS) for delivery\n  over SMTP.  Verification with DANE does not use the global WebPKI/PKIX\n  pool of Certificate Authorities.  With DANE, verification is done based\n  on DNS records of type TLSA.  These records specify (hashes of) public\n  keys to allow (DANE-EE), ignoring expiration/hostname-match/issuing\n  party, and/or they specify (hashes of) certificates of allowed\n  certificates authorities (DANE-TA), regardless of whether those\n  authorities are in the globally trusted WebPKI/PKIX CA pool.\n  DANE requires that DNS records are DNSSEC-protected, both to protect\n  the MX records and the TLSA records.  MTA-STS (already implemented)\n  has similar goals, but does use the WebPKI/PKIX Certificate Authorities\n  pool, both to verify TLS certificates and to protect MX records.\n  DANE and MTA-STS can coexist: In the default configuration, mox\n  generates private keys, then retrieves certificates from Let's Encrypt\n  for these private keys (through https://github.com/mjl-/autocert, a\n  fork of golang.org/x/crypto/acme/autocert).  These certificates are\n  valid for MTA-STS, and TLSA records are generated for the keys for\n  verification with DANE.  For inbound delivery with DANE protection,\n  your DNS records must be DNSSEC-protected.  For outbound delivery with\n  DANE protection, a trusted DNSSEC-verifying stub resolver is required.\n- Mox now compiles on Windows, so \"mox localserve\" and most other\n  commands to work, but \"mox serve\" (the actual mail server) does not\n  yet work.\n- \"SMTP Require TLS Option\" (RFC 8689), consisting of two mechanisms:\n  1. A REQUIRETLS SMTP extension to require verified TLS along each hop\n     in message delivery, either through MTA-STS or DANE.\n  2. A message header \"TLS-Required: No\", that overrides any TLS\n     requirement along the way as specified by any MTA-STS or DANE\n     policy.\n  These mechanisms can be used to ensure secure delivery, or to work\n  around delivery issues due to TLS requirements.  Mox remembers whether\n  an SMTP server offered the REQUIRETLS extension.  Webmail automatically\n  selects it if all recipients support it. Webmail also lets the user\n  select the \"TLS-Required: No\" header.\n- Outgoing DMARC reports (RFC 7489).  Mox now stores the results of DMARC\n  evaluations for inbound messages.  These results can be viewed in the\n  admin web pages.  Reports are typically sent every 24 hours (covering a\n  24 UTC day), but will be sent for up to 1 hour intervals if requested\n  by a domain.  Sending DMARC reports is enabled by default, but can\n  be disabled through new option NoOutgoingDMARCReports in mox.conf.\n  Reporting addresses can be added to a suppression list, to reduce\n  noise due to deliverability issues.  Incoming DMARC reports were\n  already implemented.\n- Outgoing SMTP TLS reporting (RFC 8460).  When delivering outbound\n  messages, the SMTP client will look up MTA-STS and/or DANE policies\n  for TLS requirements, with a fallback to opportunistic TLS.\n  The evaluated security policies, (TLS) connection success/failure\n  counts, and any failure details, are stored.  Reports are sent once\n  per day to reporting addresses in the TLSRPT DNS record of a domain,\n  over a 24 hour UTC day period.  By default, reports are only sent\n  if there was a failure.  The pending results can be viewed in the\n  admin web pages.  Sending reports can be disabled with new option\n  NoOutgoingTLSReports in mox.conf.  Reports with only successes can be\n  enabled through OutgoingTLSReportsForAllSuccess.  Reporting addresses\n  can be added to a suppression list to reduce noise due to delivery\n  failures.\n\n# Improvements\n\n- Webmail: Recognize encoded file names in message attachments. Either with\n  RFC2231-encoding (as specified) or Q/B-word encoding (as used in practice).\n  (#82)\n- Webmail: For portait images, don't let image extend beyond window height.\n- Webmail: Wrap long header lines, instead of showing horizontal scrollbar.\n- Webmail: Replying without having text selected now starts a top-post\n  with an \"On ... wrote:\"-line. Replying with text selected still starts\n  a bottom-post containing only the selected text, quoted. (#83)\n- Webmail: In the compose window, autoresize address input fields to\n  match the content.\n- Webmail: When composing a message, show security properties of recipient\n  addresses: Whether STARTTLS is known to be offered by the SMTP server\n  (historically), whether MTA-STS is implemented, whether MX records are\n  DNSSEC-signed, whether DANE is implemented, and whether REQUIRETLS is\n  offered by the SMTP server (historically).\n- Webmail: Add clear marker between message header and body, so an\n  HTML message cannot fake being part of the UI.\n- Webmail: If a \"display name\" of an address contains address-like\n  characters (\"@\" or \"\u003c\" or \"\u003e\"), only display the actual email address\n  in the message listing, not the display name. Should prevent confusion\n  attacks with messages specifying an unrelated email address in the\n  display name.\n- The suggested SRV DNS record for autodiscovery now points directly to\n  the host name, not to a CNAME (which is technically invalid, but seems\n  to work in practice).\n- When ACME-validation for a new TLS certificate fails, log error messages that\n  may explain the reason. E.g. \"your CAA record forbids Let's Encrypt from\n  issuing certificates\".\n- SMTP server: workaround for Windows Mail that has invalid additional space in\n  its \"AUTH PLAIN\" command.\n- Fix delivery to recipient domains with an MX host containing an underscore,\n  such as \"_dc-mx.\u003cid\u003e.\u003cdomain\u003e\" as apparently used by cloudflare. From\n  richard g.\n- When generating a DSN message (for delivery failure), try harder to DKIM-sign\n  it: With a configured domain, also when sending from\n  postmaster@mailhost.\u003cdomain\u003e.\n- For incoming messages, track whether TLS and REQUIRETLS was used during\n  delivery, and whether the message matched a forwarding or mailing list rule,\n  and show it in the webmail.\n- In logging, change \"fatal io error\" to just \"io error\". The \"fatal\" sounds\n  too serious, it's just the connection that will be closed. (#39)\n- Add rfc/xr.go to generate HTML pages with cross-referenced code and\n  RFC. These HTML pages are published at https://www.xmox.nl/xr/dev/\n- Webmail: In case of long lists of addresses in To/Cc/Bcc headers, only show\n  the first 4 addresses along with a \"More\" button. (#98)\n- Clarify documentation on importing messages from the command-line,\n  which can be unintuitive due to systemd service file mount points. (#79)\n- Implement obsolete SASL LOGIN for submission, for interoperability with the\n  new cloud Outlook.\n- Fix IMAP ESEARCH response for clients before IMAP4rev2, notably cloud\n  Outlook.\n- Many small improvements.\n\n# Bug fixes\n\n- Security: When looking up MTA-STS policies, don't follow CNAME records\n  for the recipient domain.  A single unauthenticated CNAME response\n  could redirect policy lookup to another domain.\n- Webmail: When replying to selected text consisting of characters in multiple\n  unicode blocks, don't loose some of the selected text in the reply.\n- Don't parse DKIM \"selectors\" as IDNA domains.  They are just DNS\n  labels.  Based on email from richard g.\n- Update to latest bstore (database library) to fix a bug with\n  deleting/updating records.  Problem found during development of new\n  features, behaviour not seen in any committed version.\n- Webmail: Fix the date shown in the message headers.  It was off by the timezone.\n- Fix concurrency bug with accessing a math/rand PRNG with Read.  Mostly\n  replaced with crypto/rand.  Found during development and tests.\n- The queue page on the webadmin would fail with a JS error when a message was\n  in the queue and no transport was configured (which is the default).\n- For domains configured only to accept DMARC reports, don't request an\n  autoconfig TLS certificate through ACME at startup.\n- For incoming messages, convert bare newlines to carriage\n  return+newline.  The import code already did this.  Having bare newlines\n  could cause imapserver's fetch command to fail with a (connection)\n  panic in some cases.\n\n\n# Update instructions\n\nBefore upgrading, you should do a dry-run first:\n\n- Make a temporary backup with the old mox version:\n\tmox-v0.0.7 backup data/tmp/testupgrade\n- Verify that all is well with the old version:\n\tmox-v0.0.7 verifydata data/tmp/testupgrade\n- Verify the state with the new version:\n\tmox-v0.0.8 verifydata data/tmp/testupgrade\n\nWith a successful dry-run, the upgrade should go smoothly.  Make a new backup\nwith `mox-v0.0.7 backup data/tmp/backup` (the previous backup used for the\ndry-run has been modified, so couldn't be used to restore!), replace the binary\nand restart.\n\nIf you are upgrading from v0.0.6, see its upgrade instructions for commands to\nexecute.  It's better to immediately upgrade to v0.0.8 (see issue #71).\n\nIf you run into any problems, please create an issue.\n\nAfter upgrading, you may want to configure DANE:\n\nTo make use of DANE for outbound deliveries, make sure you have a\ntrusted DNSSEC-verifying stub resolver.  Unbound is recommended.  Don't\nuse systemd-resolved, its DNSSEC support is not ready for use.\n\nTo make use of DANE for inbound deliveries, first make sure your\nDNS records are DNSSEC signed, and your DNS operator supports TLSA\nrecords.  The SMTP TLS private keys (\"host keys) should be added to\nthe TLS section of the \"public\" listener in mox.conf.  If you use ACME\n(e.g. with Let's Encrypt), you will want to use the private keys of\nexisting certificates.  Run \"mox config ensureacmehostprivatekeys\"\nto find existing or generate new private keys, and print the config\nsnippets you'll have to apply to mox.conf.\n\nYou may want to update your autodiscovery DNS record.  See the \"DNS check\"\nadmin page or run \"mox config dnscheck \u003cdomain\u003e\".\n\n\n# Thanks\n\nThanks for contributions and/or feedback from: taavi, naturalethic,\nmattfbacon, duesee, mpldr, richard g, ArnoSen (and those I missed).\n\nFeedback, requests, bug reports, contributions (start small!) are all welcome.\n\nDevelopment on mox is funded through the NLnet NGI0 Entrust Fund,\nhttps://nlnet.nl/entrust/, with financial support from the European\nCommission's Next Generation Internet programme.\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"mjAyJ6Wgs+oRNQo6DiJ6Xa9dggCHszI5VrbE9OTQu+emOwOXDJB5fm1JDYFpHn0EmpfwzVJzGn8kMy382sQoDw==","Text":"version: v0.0.7\ndate: 2023-09-24\n\nUpdate instructions:\n\nDue to a bug with \"expunging\" (deleting) messages that were\njunk-filter-trained, messages that were removed from disk could be resurrected,\ncausing errors when mox would later try to open such messages again. Before\nupgrading, you should first check and resolve this problem:\n\n- Find missing files by running: mox-v0.0.6 fixmsgsize\n- Create empty replacements for the missing files (use \"touch data/accounts/...\").\n- Update the message metadata in the database for the newly created files:\n  mox-v0.0.6 fixmsgsize\n  (this will fix the previously missing files, but should no longer find new\n  missing files)\n- Fix per-mailbox message/unread counts for each affected account, run:\n  mox-v0.0.6 recalculatemailboxcounts \u003caccount\u003e\n  (\"account\" is the name as it appears in the data/accounts/ directory,\n  not necessarily an email address)\n- The affected accounts will see the recreated empty messages, which\n  can be deleted.\n\nNow with the storage consistency resolved, you can start with the upgrade. Mox\nv0.0.7 adds message threading, and all messages will be read and assigned a\nmessage thread. This is done in the background, in two steps, and may take a\nwhile. The first step adds Message-ID and a \"thread base subject\" to each\nmessage in the database. The second step reads through all messages and uses\ntheir References/In-Reply-To/Subject message headers to match threads. In\ntesting, upgrading took approximately 1 minute per 100k messages, but it will\ndepend on the hardware. Accounts are available for reading and delivery during\nthe upgrade, but the webmail may tell you that threading is not yet available.\n\nYou should do a dry-run of the upgrade first:\n\n- Make a temporary backup with the old mox version:\n\tmox-v0.0.6 backup data/tmp/testupgrade\n- Verify that all is well with the old version:\n\tmox-v0.0.6 verifydata data/tmp/testupgrade\n- Trigger the threading upgrade using the new version:\n\tmox-v0.0.7 openaccounts data/tmp/testupgrade \u003cyour-account-name\u003e\n\t(it prints nothing until done; the live upgrade prints progress)\n- Verify the new state:\n\tmox-v0.0.7 verifydata data/tmp/testupgrade\n\nWith a successful dry-run, the upgrade should go smoothly. Make a new backup\nwith `mox-v0.0.6 backup data/tmp/backup` (the previous backup used for the\ndry-run has been modified, so couldn't be used to restore!), replace the binary\nand restart.\n\nAfter the upgrade, any accounts affected by the \"missing file\" problem should\nget their \"uid validity\" increased, so IMAP clients will resynchronize. Run\n\"mox-v0.0.7 bumpuidvalidity \u003caccount\u003e\" for each affected account. The change is\nmade directly in the database file, so no IMAP/webmail sessions should be\nactive for the account. If any sessions are active, the database file is locked\nand \"bumpuidvalidity\" will print a timeout error. Briefly shutting down mox is\nan option, the bumpuidvalidity command operates quickly.\n\nApologies for the inconvenience, mox aims to make administrating a mail server\neasier than this.\n\nIf you run into any problems, please create an issue.\n\n\nNew features:\n\n- Keep track of message threading, and add a threaded view to the webmail. Newly\n  delivered messages are matched against threads, as are imported messages. The\n  message threading is currently only exposed through the webmail client, not yet\n  through IMAP. The webmail has new keyboard shortcuts to navigate between\n  threads, collapse/expand them (with state remembered), or mute them (so new\n  deliveries to the thread are marked as read).\n- Add option to accept DMARC and TLS reports for other domains. You would add\n  the other domain in mox, and specify an alternative domain (of your regular\n  dmarc/tls reporting address) for the recipient of the reports. The webadmin\n  DNS-check page will show the required DNS records for delegated reporting.\n  Incoming reports will be delivered to the configured reporting address, and\n  processed by mox.\n- Easier account setup on Apple devices without device management profiles\n  (.mobileconfig files). Download a profile from the account web interface, at an\n  email address. Or open the QR-code to easily get the profile on a mobile device.\n  For issue #65 by x8x.\n- Transparent gzip compression when webserving files for selected content-types\n  that are likely compressible. Both for static files (with a cache of compressed\n  files, max 512MB stored in $datadir/tmp/httpstaticcompresscache), and for\n  forwarded requests (gzip level \"fast\"). Compression can be enabled per handler.\n\nImprovements:\n\n- In SMTP server, for submission (with authenticated clients), don't fail on a\n  bad domain/IP address in the EHLO command. With submission the domain/IP is\n  irrelevant, and clients often fill in something that isn't strictly correct. No\n  need to prevent those users from submitting email (except in pedantic mode).\n  For issue #55 reported by gimpf.\n- At top of config files, mention the config file format, and hints to prevent\n  likely mistakes (given how sconf is different from what admins may be used to),\n  including a pointer to the sconf documentation page. For issue #56 reported by\n  kikoreis.\n- Recognize when quickstart is probably run behind a NAT, possibly a container,\n  and set the \"NATIPs\" field of the \"public\" listener in mox.conf accordingly.\n  This triggers when you set up mox for a public domain, but only have\n  private/loopback IPs on the machine. For issue #59 reported by pmarini.\n- When moving a message out of Rejects mailbox, mark it as unread. For issue #63\n  by x8x.\n- The \"mox setaccountpassword\" subcommand now takes an account name as\n  parameter instead of an email address. The email address could be confusing\n  in the face of wildcard addresses and a typo/non-explicitly-created address:\n  The account holding the wildcard address would get a new password. For issue\n  #68 by x8x.\n- Make Mac OS X Mail use the special-use mailbox attributes so it finds the\n  correct \"Sent\" and \"Trash\" mailboxes (instead of creating its own \"Sent\n  Messages\" and \"Deleted Messages\" mailboxes). The IMAP server now\n  unconditionally sends the special-use flags, even if the mail client doesn't\n  request it. For issue #66 by x8x.\n\nBug fixes:\n\n- Fix expunging of messages marked junk/nonjunk. The messages would be marked\n  as expunged, then the junkfilter would retrain and clear the expunged field\n  again. This would cause the message to be resurrected while the on-disk message\n  file was already removed. Trying to read such messages would fail. The update\n  instructions should help fix the problem.\n- Fix \"mox sendmail\" when submitting over a TLS connection by setting the remote\n  host name to verify the certificate of. Due to a logic bug the name wasn't set\n  and the connection would fail due to the missing setting.\n- Don't generate duplicate suggested SPF record if hostname is equal to domain\n  name, e.g. postmaster@mail.domain.example. Fixes issue #46 reported by x8x.\n- Fix showing attachments of type text/plain in webmail, they weren't shown at\n  all because they were skipped when parsing the message during webmail message\n  processing.\n- Fix parsing the List-Post header in messages, for use in webmail when replying\n  to a mailing list message.\n- When moving a message to the mailbox that has the special-use \"junk\" flag,\n  mark the message as junk and retrain. This should have already worked just like\n  the \"AutomaticJunkFlags\" config option, and the default account config already\n  handles marking messages as junk based on that option, but the special-use flag\n  should be recognized independently and now also takes precedence.\n- Set the correct special-use mailbox flag \"\\Drafts\" instead of \"\\Draft\" on the\n  draft mailbox. Mail clients may have not found the correct drafts mailbox\n  before. For issue #66 by x8x.\n- Fix \"mox bumpuidvalidity\" to not create a (mostly harmless) uidvalidity\n  inconsistency that \"mox verifydata\" will warn about. For issue #61 by x8x.\n- And quite a few smaller tweaks/improvements/fixes.\n\nSpecial thanks for contributions and/or feedback from: x8x, gimpf, kikoreis,\npmarini, fairking, gedw99, hmfaysal (and those I missed).\n\nFeedback, requests, bug reports, contributions (start small!) are all welcome.\n\nGood news: Mox is now being funded for a year of continued development through\nthe NGI0 Entrust Fund, a fund established by NLnet with financial support from\nthe European Commission's Next Generation Internet programme,\nhttps://nlnet.nl/project/Mox/!\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"7zkswSf+rOsUuHYiWGFa2u2lL4G9ljGXTVFx9ZE8r4zK2u+zelRUSs3MoCbYvpEq+HDER3EbbPrdipgBpLHXCQ==","Text":"version: v0.0.6\ndate: 2023-08-16\n\nUpdate instructions:\n\nMake a backup, replace the binary and restart.\n\nAfter the upgrade, the first time an account is opened with this new version,\nnew message indexes are created and mailbox message count statistics are\ncalculated. For large mailboxes, the time and memory this takes can be\nnoticable. The upgrade tests take about 15 seconds on 570k messages on a\nthinkpad x1 from 2018, and run with a max memory data size of 768MB.\n\nDon't forget to make a backup of the data directory with your currently running\nmox before upgrading (e.g. \"mox-v0.0.5 backup data/tmp/backup\").  You can\ndry-run the upgrade by making a separate backup (\"mox-v0.0.5 backup\ndata/tmp/testupgrade\") and running the \"verifydata\" command with the new mox\nversion (\"mox-v0.0.6 verifydata data/tmp/testupgrade\"). Running \"verifydata\"\nwith a newer mox will make changes to the database files, so don't run it on a\nbackup you may need to restore.\n\nIt is recommended to run the new \"mox reparse\" command after upgrading. It will\nreparse all messages with the improved message parsing code.\n\nFor existing installations, the new webmail must be enabled manually in mox.conf\nwith config options \"WebmailHTTP\" and/or \"WebmailHTTPS\", similar to\n\"AccountHTTP(s)\". See the example config printed by \"mox config\ndescribe-static\".\n\nIf you are forwarding email to an address hosted with mox, you may want to\nconfigure the new \"IsForward\" and possibly \"AcceptRejectsToMailbox\" options in\na delivery ruleset for better junk handling/analysis.\n\nIf your mox is behind a NAT, and your mox.conf uses config option IPsNATed, you\nshould switch to new config option NATIPs, and specify the public IPs that are\nNATed.\n\n\nNew features:\n\n- Webmail, for reading/writing messages. It is similar to other regular and\n  webmail clients, with a decent set of features for a first version (with more to\n  come in the future). Webmail is enabled for new installs created with the\n  quickstart. For more details about the implementation, see \n  https://github.com/mjl-/mox/commit/849b4ec9e9f9bf7cdd2862de9e2a2dd096858d5c.\n- IMAP extensions CONDSTORE and QRESYNC have been implemented. With CONDSTORE,\n  changes to messages are tracked with a modification sequence, \"modseq\".\n  This is used by mail clients both to efficiently find changes when reconnecting,\n  and for conditionally storing updated message flags (only if modseq is still as\n  expected). QRESYNC is an additional extension for faster full mailbox\n  synchronization. These are useful by themselves, but keeping track of the\n  \"modseq\" will also help with JMAP.\n\nImprovements:\n\n- Faster IMAP \"STATUS\" command (which checks mailbox status), because mox now\n  keeps track of total/unseen/deleted number of messages in mailboxes. Noticable\n  in larger mailbox (\u003e50k messages).\n- Be less strict by default when parsing messages, and handle non-ascii/utf-8\n  encodings in message subjects. We already accepted messages with problems, but\n  stored them mostly unparsed. IMAP clients would parse the message themselves so\n  users wouldn't notice anything, but now that we have webmail it is more\n  important to have parsed forms of messages for problematic messages.\n- Properly decode character encodings other than ASCII and UTF-8 when\n  returning/searching text in messages.\n- Be more lenient for (authenticated) submission of email over SMTP (but not\n  during regular SMTP delivery). Before, we were strict about certain protocol\n  violations, but that wasn't helpful behaviour for legitimate users. In pedantic\n  mode, mox still rejects these violating commands.\n- New config options \"AcceptRejectsToMailbox\" and \"IsForward\" in Rulesets, for\n  handling incoming messages that are forwards from another address. By setting\n  \"AcceptRejectsToMailbox\", if the junk analysis says a message is junk, the\n  message is accepted during SMTP instead of rejected, but delivered to the\n  configured mailbox. It isn't always a good idea to reject forwarded messages\n  that are junk. By setting \"IsForward\", the junk analysis and future\n  classification based on such a message is done differently. See the config\n  option for details. (PR #50 by bobobo1618)\n- Add a KeepRejects options to account configurations, so the Rejects mailbox\n  isn't automatically cleaned up. (PR #49 by bobobo1618)\n- Add option NATIPs to a listener in mox.conf for better handling when mox is\n  configured behind a NAT.\n- \"mox verifydata\" now checks for more potential issues, and mox gained a few\n  subcommands to fix those issues.\n\nBug fixes:\n\n- Fix showing the progress while importing messages. Messages were still\n  imported, but the SSE connection with progress updates was broken.\n- Fix potential delays in propagating changes to IMAP IDLE connections.\n- IMAP compliance: add missing space after continuation line (\"+\").\n- IMAP compliance: add missing empty untagged response for SEARCH in case of no\n  matches.\n- Fix the -existing-webserver flag for \"mox quickstart\". Its TLS key/cert check\n  tripped it up.\n- And many more small fixes and improvements.\n\nSpecial thanks for contributions and/or feedback from: Mendel, bobobo1618,\nhmfaysal, x8x, kikoreis, gerben, andrii, liesbeth, morki, gedw99 and everyone I\nforgot. More feedback/bug reports welcome!\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"R/tvuP8GY4dBg2iy0+wY0FZeqEyqjOQkirvDkUKiVDoKq6mlOKAZ66ASfeC2c+P3fNO8i6lTSJMw7dqlsUaaCA==","Text":"version: v0.0.5\ndate: 2023-07-03\n\nUpdate instructions: No special steps required other than updating the binary.\n\nFixes/Improvements:\n\n- Fix \"mox localserve\", and some commands that talk to a running mox instance\n  over the ctl socket. Broken in previous release.\n- During quickstart, warn if the host name resolves to a loopback IP, as it\n  will likely prevent email delivery to local accounts from working. (#37 by\n  dmikushin)\n- In case of DNS resolve errors on Linux likely due to missing name server in\n  /etc/resolv.conf, point user to systemd-resolved manual page, the likely\n  cause. (#38 by ArnoSen)\n- Redirect requests for /admin to /admin/, to prevent confusing users about\n  failed credentials when they try to open the admin web interface. (#43 by\n  FieryCod, lemos1235)\n- Fix race condition when handling forwarded websocket connections. Could show\n  up as calling Close on a nil connection. (found by existing tests)\n- Fix parsing bugs in the IMAP server. One of them may cause correct commands\n  to be rejected, but this probably isn't commonly triggered. (found by new\n  tests)\n- Fix bug interpreting UID sets in the IMAP server, potentially causing a\n  SEARCH not to return all matching messages, and potentially not EXPUNGE-ing\n  (removing) all messages marked as deleted. (found by new tests)\n- Fix bug with assigning UIDs when renaming Inbox. Renaming Inbox is a special\n  case and its special handling wasn't renumbering UIDs of moved messages,\n  potentially leading to errors on later operations on the destination mailbox.\n  Command \"mox verifydata\" has been updated to check for this inconsistency. Two\n  new unlisted commands are introduced that can correct these inconsistencies:\n  \"mox reassignuids\" and \"mox fixuidmeta\". This will only affect you if you have\n  renamed your Inbox, not a common operation. (found by new tests)\n- Fix importing messages with a date with a timezone \u003e= 24 hours. (found while\n  importing old email archives)\n\nNew features:\n\n- Implement user-defined flags/keywords in the IMAP server. Previously, only\n  the standard keywords like \\Seen, \\Draft, etc were supported.\n- Configurable routes for outgoing email, through configurable transports. The\n  default transport is regular direct delivery to MX hosts. Other transport\n  options: 1. delivery through another mail server with SMTP (with various\n  TLS/STARTTLS/authentication options), to a relay/smarthost or 3rd party\n  account; 2. direct delivery but making connections through a SOCKS proxy.\n  Routes can be configured for accounts, domains, or globally. A matching route\n  selects the transport. If no route matches (the default), the default transport\n  (direct delivery) is selected. Routes are evaluated for each delivery attempt.\n  They are typically matched on destination address, and can also start matching\n  after a configurable number of failed delivery attempts (with another\n  transport). (#36 by dmikushin, and earlier discussions on HN)\n- Support more authentication mechanisms in sendmail: SCRAM-SHA-256,\n  SCRAM-SHA-1, CRAM-MD5.\n\nThanks to all who provided feedback, bug reports, patches. You've helped mox\nbecome a better mail server!\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"gke7bbqvtk6aBcbBox6owJc8+z5KsH1ymUyJEGW5ZYgq+0tLdNnvdOcitgniH1FEFBJ6vnrxTU1K/kQUHADKBQ==","Text":"version: v0.0.4\ndate: 2023-06-04\n\nUpdate instructions: No special steps required other than updating the binary.\n\nChanges:\n\n- Bugfix: When DKIM-signing messages, take the Date and Message-Id\n  header into account if we added them just before. If you submit a message\n  without these headers, they are added automatically, but the signature was\n  calculated over the message as if those headers were not added. The receiving\n  side would evaluate such DKIM signature as invalid.\n- Bugfix: SMTP transactions with SMTP from/to addresses with double quotes\n  would fail.\n- Bugfix: Delivery of messages to addresses where the domain does not have an MX\n  record would fail. In these cases, e.g. where CNAME records need to be followed\n  or where we need to connect directly to the host, we were aborting immediately\n  after starting because of a reused canceled Go context.\n- Bugfix: Use MTASTSHTTPS.NonTLS from the config file for the MTASTS config,\n  not the similar field for Autoconfig. (#29)\n- Bugfix: If we encountered an error fetching an mta-sts policy as part of a\n  delivery attempt, we weren't trying to continue in strict mode, which is safe to\n  do in this case.\n- Bugfix: Dropping a message from the queue (with \"mox queue drop \u003cid\u003e\" or\n  through the admin web interface) would be removed from the database, but left in\n  the file system. If you still have old message files in data/queue/, they can be\n  removed manually.\n- Update to latest bstore database library and add a new index on the Message\n  database table, for fast indexed lookups of DKIM reputation for incoming\n  messages.\n- Add \"mox backup\" and \"mox verifydata\" subcommands. Backup makes a consistent\n  snapshot of the databases, message files, and the other files in the data\n  directory. Simply copying the DB files while they are in use will lead to\n  corrupted files sooner or later, so a consistent snapshot is important. The\n  message files are hardlinked when possible, so a snapshot is fast and disk\n  space consumption is limited to the database files. The verifydata subcommand\n  verifies the database files and messages, useful to verify backups and\n  restores. See documentation for these new commands for details.\n- Add support for websockets to the reverse proxy webserver. (#25)\n- After \"logout\" of an IMAP connection, close the connection. (#30)\n- Open pre existing TLS certificates/keys as the root user, not as the\n  unprivileged user. Makes it easier to use these files when set up by other\n  tools. (#30)\n- Various smaller technical and user-experience improvements.\n\nThanks for the feedback, issues and PR's you sent in.\nnaturalethic, 154pinkchairs, cuu508, inigoserna, kou029w, belst, and those I\nforgot. Keep it coming!\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"2JsGkAkwjsVOlW9ByrGNP6t+7vBB/ZTTneLjCRerLkXGdiIDhDtO/sRSCVFHWR9UDe0sOJ1EZtj0YehQD4nTBA==","Text":"version: v0.0.3\ndate: 2023-04-22\n\nUpdate instructions: No special steps required other than updating the binary.\n\nImportant bug fixes:\n\n- When dkim-signing submitted messages, use the domain from the \"message from\n  header\" instead of \"smtp mail from\". If you had an account with multiple\n  addresses in different domains, then with some mail clients the DKIM signature\n  on outgoing messages could be for the wrong domain.\n\nChanges:\n\n- Add \"mox localserve\", a subcommand for running mox locally for email-related\n  testing/developing. Localserve creates a config for listening on localhost\n  for imap/smtp/submission/http, on port numbers 1000 + the common service port\n  numbers. All incoming email is accepted (if checks pass), and a few pattern in\n  localparts are recognized and result in delivery errors.\n- Implement configurable (rate) limits on outgoing messages, per account. By\n  default an account can send 1000 messages per day, to max 200 first-time\n  receivers. The goal is to limit damage spammers can do with compromised\n  accounts.\n- In domains.conf, for an account, the Destinations mapping will now always use\n  full email addresses, no longer localparts relative to the Domain configured\n  for the account. The old form with just a localpart is still accepted. When\n  writing domains.conf through the cli commands or admin web pages, the\n  destinations will automatically be written with full email addresses. In the\n  future, support for the localpart-only form will be removed.\n- Implement a catchall address for a domain, an address without localpart (i.e.\n  starting with \"@\u003cdomain\u003e\"). If an incoming message does not match a\n  configured address, it is delivered to the account configured that has the\n  catchall address configured.\n- ACME TLS certificate validation can also be done with method http-01\n  (previously only with tls-alpn-01).\n- If you run mox behind a NAT, you can now specify \"IPsNATed: true\" in the SMTP\n  listener to skip a few DNS checks that previously would always fail due to the\n  IPs being NATed.\n- Add subcommand \"mox dkim sign\", useful for testing signatures.\n- For a \"WebRedirect\" rule, don't match a request if the destination URL would\n  result in the same URL, causing a redirect. By not matching, the next\n  configuration rules are evaluated for a match.\n- Various smaller technical and user-experience improvements.\n\nThanks to everyone who sent in feedback (e.g. by creating an issue on github).\nIt's much appreciated and essential for improving mox!\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"OE081/WnoqpiwotUOqXDqlAtmIAzuh4RsM9eNUB7nKkjrMCwFsgiSD4Mk8pfPViZEQ3Cnon3amcqRkjbQAM2Ag==","Text":"version: v0.0.2\ndate: 2023-03-06\n\nUpdate instructions:\n\nMox now starts as root to bind to network sockets, then starts a less\nprivileged process to run mox. Update the mox systemd service file and restart,\nas root:\n\n\t# update mox binary to v0.0.2\n\t./mox config printservice \u003emox.service\n\tsystemctl daemon-reload\n\tjournalctl -f -u mox \u0026\n\tsystemctl restart mox\n\t# If you configured backups, keep in mind files are now owned by\n\t# mox:root, your backup tools need access to the files.\n\n- Start up as root, bind network sockets, then drop privileges to a process as\n  user mox to do the actual work. Makes it easier to run mox on BSDs, and paves\n  the way for future privilege separation work.\n- Add a webserver, with support for reverse proxying, serving static files,\n  configurable redirects. With ACME of course. Takes away need to configure mox\n  behind an existing webserver/reverse proxy, greatly simplifying\n  configuration/operation.\n- Add docker images and script to build images.\n- Make it possible to run mox behind an existing webserver/reverse proxy too.\n  Also add quickstart flag to make it easier to generate a config file for this\n  case.\n- Quickstart improvements: Add flag to generate a config for a specified host\n  name (instead of guessing). If we found public IPs, check them with popular DNS\n  blocklists and warn user if they are listed.\n- Add encrypted cid to SMTP error response lines, for easier debugging.\n\n- Fix importing of junk messages that the junk filter cannot parse.\n- Fix bug verifying SPF. For IP lookups (e.g. for mechanism \"a\"), we would only\n  look up with the same address family as the incoming connection. If there was no\n  record, we counted a void lookup. This could lead to incorrect SPF failures, we\n  reached the void lookup limit when we shouldn't. If the record exists for\n  another address family (a vs aaaa), we shouldn't count a void lookup.\n- Fix reputation learning of messages that were initially delivered to the\n  Rejects mailbox and then moved out. If you marked them as junk or nonjunk (e.g.\n  by moving to Archive or Junk), we should use the message for reputation\n  calculation of new incoming messages, but we weren't.\n- Lots of smaller improvements, bug fixes.\n\nThanks for reporting issues: mteege, hismailbulut, belst, idnovic, Jens,\nthe-solipsist, pexarkh, sherief, gedw99, agucova, lormayna, and everyone I\nforgot. Thanks for all your feedback, discussions, suggestions! It shaped these\nchanges, and changes to come.\n"},{"PubKey":"sPNiTDQzvb4FrytNEiebJhgyQzn57RwEjNbGWMM/bDY=","Sig":"bCdY4q8ZqSeG3nk5DnSBlNZrfRdv/MXNWIhL/K0BHCh9j1BlLOtDzAAEl8WXPi0BmiD8cIQPh6Kz/5QUqmGwCw==","Text":"version: v0.0.1\ndate: 2023-02-17\n\nFirst tagged release!\n"}]}
