This week Tachyon Webmail got its (registered) 10,000th download from GitHub. Who knew, when I started this fork back in June. Thanks everyone!
This release is worth taking if you run 4.4.2: opening Drafts could fail outright on PHP 8.4, the Debian package pulled in a second PHP, and logging out did not end the session.
Security
- Logging out left the server-side session alive.
Logout()asked the browser to drop two cookies and nothing else: theStorageType::SESSIONrecord thatgetMainAccountFromToken()actually checks stayed where it was, and the clear of theSESSION_TOKENcookie had been commented out. Anyone holding a copy of the cookies from before the logout kept full mailbox access without the password, and sinceFileStorage::Get()touches the file on every read, a session being replayed never aged into the three hour sweep either. Reported by Fathi Ben Nasr, Convergent Cloud Computing (GHSA-gc87-g2gf-xj6q) - Backup restore ran without an admin session.
JsonAdminRestoreDataasked only whether the request had reached the admin panel, which is true for anyone able to load it, and the core rule requiring a login forAdmin*actions did not cover it: a plugin action is dispatched asPluginJsonAdminRestoreData, so the test on the name starting withAdminnever matched. The restore now demands an admin login, ignores the client'sContent-Type, and will only write to the four directories and the one contacts database a backup legitimately contains, refusing the archive outright if it holds anything else. Reported by Fathi Ben Nasr, Convergent Cloud Computing (GHSA-5r45-3mqm-hcvg) - The IMAP sequence-set range pattern had no end anchor, so a value merely starting like a range was passed through whole and anything following it was read as more of the IMAP command. Nothing in the tree feeds it anything but server-derived integers, so this was a sharp edge rather than a hole, but it is the single place every FETCH, STORE and COPY sequence is built. Found while answering @remmmi (#140)
Fixed
- Opening Drafts could report "unknown error" and show nothing, on PHP 8.4. A draft holds whatever was typed, so an address can have no domain at all, and
idn_to_utf8('')throws aValueErroron 8.4 where older versions returned false. That happened while the message list was being serialised, so the whole response failed rather than one address. Reported by @daniu-de (#122) - The Debian package pulled in a second PHP. 4.4.2 added a versioned
php-fpm (>= 2:8.2~)dependency, which no unversionedProvidescan satisfy, so an existing workingphp8.3-fpmstopped counting and apt installed 8.4 beside it. The constraints are gone, as they were in 4.4.1; the 8.2 floor is still enforced at startup byIntegrity::phpVersion(). Reported by @lvarnava (#134) - The package is now called
tachyon-webmail. Debian already ships an unrelatedtachyonin bookworm/main, a parallel ray tracer. Reported by @lvarnava (#135) - A fresh install could log that it had created the admin password and where to read it, and that password was then refused. It was written to
admin_password.txtbefore the hash was stored, andConfig::Save()returns a bool that nothing looked at, so whereverapplication.inicould not be written the file existed and held a password that had never been stored anywhere. Saved first now, and the file is written only if that worked. Reported by @jon4156 (#133) - The ics-viewer fix listed in 4.4.2 reached releases but not git checkouts: #127 widened the match in
message.jsand leftmessage.min.js, the file the plugin actually loads, untouched. Release packaging runs terser over every plugin, which is how this turned up - In the Nextcloud file picker, the "Select folder" footer showed where it means nothing. It used the
hiddenbinding, which any author rule carrying adisplaybeats, and is now bound onvisible. The button is also relabelled to the already-translated save string. Reported by @lvarnava (#117)
Added
- The Back button now closes an open message, and a message has its own link. The route has always understood
#/mailbox/<folder>/m<uid>, so a pasted link worked, but nothing ever wrote such a hash. Opening a message now pushes a history entry, arrow keys replace it rather than leaving one per message, and the preview pane filling itself at folder load writes nothing. Idea from @remmmi (#141) - Back out of the last of the client's own history entries and you are asked before you leave, rather than simply landing wherever you were before
- The Nextcloud folder picker opens on the folder used last, with each level on the way down opened, so a nested folder is reached rather than only a top level one. Asked for by @lvarnava (#117)
Changed
- The date format setting now previews with a date whose parts cannot be confused for one another. Thanks to Antonios Vamporakis (#137)
- Translations updated for Polish and French, and plugin strings for Polish, French and Russian