Skip to content

Releases: the-djmaze/snappymail

v2.36.1

24 Apr 00:13
Compare
Choose a tag to compare

I've released the login-gmail extension so that you can use OAuth2 for login.
Follow the instructions how you can set this up at
https://github.com/the-djmaze/snappymail/wiki/FAQ#gmail

The added "Have I Been Pwned" class can be used with the "change password" extension.
When enabled it disallows passphrases that are known in the Have I Been Pwned database.

Also a new extension is in development so that users can check if their email address is also pwned.
It is still a work in progress and to use it, you must have a key subscription.
https://github.com/the-djmaze/snappymail/tree/master/plugins/haveibeenpwned

Added

  • Autoconfig detect through DNS SRV (RFC 6186 & 8314) and disable MX
  • Have I Been Pwned class to check breached passwords and email addresses
  • Handle RFC 5987 in Content-Disposition header
  • Ignore text/x-amp-html
  • Show SMTP error to user #1521
  • OAuth2 for login using gmail (and others)

Changed

  • logMask all AUTHENTICATE requests
  • ErrorTip use white-space: pre
  • Simplify LoginProcess handling
  • ES2020 everywhere (require Safari 13.1)
  • Modified Squire to be more in line with v2.2.8
  • CSS set min-width for .attachmentParent and .flagParent to line them up
  • cPanel use extension login-cpanel instead of login-remote
  • Improved login credentials handling
  • Speedup Knockout a bit
  • Update Belarusian by @spoooyders
  • Update Chinese by @mayswind
  • Update French by @hguilbert
  • Update Polish by @tinola
  • Update Portuguese by @ner00

Fixed

  • Content encoding and type detection in JavaScript could fail due to case-sensitivity.
  • Extensions set logger failed
  • GnuPG check open_basedir and if shell_exec is disabled #1385, #1496 and #1555
  • Hide pagination when search result has no messages
  • Prevent mbstring error before setup.php
  • Prevent MessagesPerPage Infinity #1540
  • Reseal CryptKey failed #1543

Full Changelog: v2.36.0...v2.36.1

Nextcloud

  • Add an occ command to set up the login settings #1552

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://github.com/the-djmaze/snappymail/wiki/Docker

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

v2.36.0

26 Mar 14:22
Compare
Choose a tag to compare

The most noticeable visual difference in this release are the added icons to the system folders:
afbeelding

Secondly, you can now choose the thread view algorithm which is supported by the IMAP server.
afbeelding

  • REFS = strictly use the message References and In-Reply-To headers
  • REFERENCES = loose use of the message References and In-Reply-To headers and some other parts
  • ORDEREDSUBJECT = group messages based on identical subjects

And the biggest internal change is the handling of encrypted user data.
It now "seals" the CryptKey and on error (password change) it asks your old password.
This is a big improvement because now the "change password" extensions can also "reseal" the encrypted data and users don't loose the data for a better user experience.
It also opens the door for servers that use OAuth2 as login, as the data is not tied anymore to the login password.

Added

  • Allow setting the supported THREAD algorithm
  • Icon to system folders
  • Remove remembered password after 15 minutes of inactivity #1142
  • Swap background and text color for unreadable text on dark background #1486
  • Generate TOTP code at ?Admin -> Security #1501
  • Button to change S/MIME private key passphrase #1505
  • Belarusian by @spoooyders #1512
  • Log some domain idn_to_ascii issues #1513

Changed

  • On folder/mailbox rename, also rename all children instead of reloading all
  • Seal MainAccount CryptKey and on error ask old login passphrase to reseal key.
  • Moved cache drivers outside core into extensions
  • Sieve always allow fileinto INBOX #1510
  • Moved application.ini sieve_auth_plain_initial to per domain config
  • Languages use rfc5646, by using the shortest ISO 639 code by default
  • Update French by @hguilbert
  • Update Portuguese by @ner00

Fixed

  • On folder/mailbox rename, the old fullName must be removed from cache
  • On folder/mailbox rename, the checkable option was not renamed
  • Sort accounts drag & drop
  • S/MIME encrypted and opaque signed not visible #1450
  • Wrong last UID of thread #1507
  • Creation of dynamic property SnappyMail\DAV\Client::$HTTP #1509
  • "Download as ZIP" fails for messages #1514
  • SMTP "Authentication failed" when IMAP uses shortLogin and SMTP not #1517

Full Changelog: v2.35.4...v2.36.0

Nextcloud

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://github.com/the-djmaze/snappymail/wiki/Docker

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

v2.35.4

16 Mar 00:01
Compare
Choose a tag to compare

Added

  • \SnappyMail\IDN::toAscii()

Changed

  • OpenPGP.js to v5.11.1
  • punycode.js lowercase domain names
  • application.ini login_lowercase removed and now configurable per domain JSON lowerLogin
  • Update Portuguese by @ner00

Fixed

  • Raise JS TypeEroor "toLowerCase" after update to 2.35.3 #1491
  • Call to undefined function shell_exec #1496
  • Download attachments as ZIP doesn't work for PGP encrypted mail #1499
  • Importing or downloading a PGP public key attachment from a PGP encrypted message doesn't work #1500
  • VCard PHP Notice: Undefined index: ENCODING

Full Changelog: v2.35.3...v2.35.4

Nextcloud

  • Changed stored password handling

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://github.com/the-djmaze/snappymail/wiki/Docker

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

v2.35.3

12 Mar 18:03
Compare
Choose a tag to compare

This release has many fixes, mostly to properly handle internationalized domain names.
Everything is now handled in punycode (just like in your browser address bar), and this also solves a bug in handling OpenPGP keys.

Thanks to @mathiasbynens for developing punycode.js, which i modified for SnappyMail.
It works like a charm.

Added

  • GnuPG can be disabled
  • Missing strings for localization inside identity popup (Cryptography > S/MIME) #1458
  • Automatically verify PGP and S/MIME signed messages
  • TNEFDecoder for #1012
  • RTF to HTML converter for #1012
  • Polyfill for PHP ctype #1250

Changed

  • new Error() to Error()
  • Reduce KnockoutJS footprint by removing unused code
  • CSS reposition rainloopErrorTip location
  • Improved error handling on PGP and S/MIME decrypt
  • Improved OpenPGP.js import keys
  • Use Identity S/MIME key and certificate from server instead of POST
  • application.ini [webmail]language_admin to [admin_panel]language
  • application.ini [security]admin_panel_host to [admin_panel]host
  • application.ini [security]admin_panel_key to [admin_panel]key
  • Drop deprecated Domain::SetConfig()
  • Internationalized domain names are now handled as punycode
  • Cacher->Get() can now return NULL
  • Update French by @hguilbert
  • Update Polish by @tinola
  • Update Portuguese by @ner00

Fixed

  • Handling of Internationalized Domain Names in several areas
  • Decrypt error message
  • Stalwart ManageSieve Error 352 when getting Filters #1455
  • Nextcloud V25+ theme slightly broken #1463
  • PGP decryption fails with "Not armored text" #1462
  • AUTH_BASIC falling through as AUTH_BEARER; change AUTH_BEARER to a different value #1461
  • SetPassword expects \SnappyMail\SensitiveString
  • Crash on importing corrupt OpenPGP keys
  • Crash on old browsers instead of showing error
  • Ignore popups on logoutReload()
  • Custom SASLMechanisms fail in IMAP when the connection is secure #1484

Full Changelog: v2.35.2...v2.35.3

Nextcloud

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://github.com/the-djmaze/snappymail/wiki/Docker

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

v2.35.2

27 Feb 22:06
Compare
Choose a tag to compare

Added

  • GnuPG error handling
  • Missing strings for localization inside identity popup (Cryptography > S/MIME) #1458

Changed

Fixed

  • Drop support for gnupg PECL extension as it fails with "no passphrase" issues
  • Error 352 when getting Filters #1455

Full Changelog: v2.35.0...v2.35.2

Nextcloud

  • SetPassword(): Argument 1 must be of type SensitiveString, string given #1456

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://github.com/the-djmaze/snappymail/wiki/Docker

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

v2.35.1

27 Feb 11:05
Compare
Choose a tag to compare

Added

  • Search functionality in Admin -> Config
  • Cache S/MIME passphrases when "remember" is checked
  • Import S/MIME certificate popup
  • pre-verify S/MIME opaque signed messages so we have a body to view
  • Sort PGP keys and S/MIME certificates on email address
  • Optionally use existing private key to generate S/MIME certificate

Changed

  • Better handling to detect which PGP or S/MIME sign/encrypt to use
  • Improved StorageType handling
  • Cleanup and improved Capa handling
  • OPEN_PGP should be OPENPGP as it is one word
  • Use get_debug_type() instead of gettype()
  • Require OpenSSL due to S/MIME
  • AbstractProvider::IsActive() is now an abstract method and must be defined in child class
  • Make better use of SnappyMail\SensitiveString
  • Update Polish translation by @tinola

Fixed

  • Verify S/MIME signatures got broken allong the way while implementing this
  • Generate S/MIME self-signed certificate failed to keep existing private key
  • MIME parser RegExp didn't escape boundary which caused issues
  • TypeError: b64Encode(...).match(...) is null on saving compose draft
  • Fix timestampToString() for future dates

Full Changelog: v2.35.0...v2.35.1

Nextcloud

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://github.com/the-djmaze/snappymail/wiki/Docker

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

v2.35.0

20 Feb 17:58
Compare
Choose a tag to compare

S/MIME

Now you can sign, verify, encrypt and decrypt messages using S/MIME.
For that you need your private key and certificate in the identity.
And for convenience SnappyMail has a self-signed root certificate so you can easily create your own "self-signed" certificates.
There are still some things todo, but you can use it.
As a benefit, when you "verify" signed messages, SnappyMail will automatically add the found certificates in the smime storage (user settings -> security).

afbeelding

SnappyMail wil automatically detect which encrypt / sign engine to use.
If PGP can be used, it uses that, else S/MIME when possible.

Added

  • S/MIME support #259

Changed

  • Disable IMAP METADATA by default (hardly used)
  • Update Polish translation by @tinola
  • Rename CSS .openpgp-control to .crypto-control
  • Renamed some methods in PHP

Fixed

  • When moving a folder/mailbox check for parent delimiter
  • Mask passphrase in the logs for PHP < 8.2
  • Added some missing translations
  • Sign messages using PGP
  • Check for CONDSTORE or QRESYNC to get the HIGHESTMODSEQ
  • Unable to login on certain IMAP server since 2.34.2 #1438

Nextcloud

  • Save as .eml

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://github.com/the-djmaze/snappymail/wiki/Docker

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

Full Changelog: v2.34.2...v2.35.0

v2.34.2

14 Feb 17:55
Compare
Choose a tag to compare

Fixed

  • Message was sent but not saved to sent items folder
    #1432
  • Login with scram failed
    #1433

v2.34.0

This release has many improvements.
It now has a mailbox/folder popup window for editing and contains more info (including ACL when supported by server).
Secondly it now also loads the folders/mailboxes of other namespaces (like the shared folders of other users). See https://snappymail.eu/demo/ shared folder how it works.
And at installation, OpenPGP.js is enabled by default.
Also managing the PGP keys has improved, including Autocrypt and fetching them from the keyserver https://keys.openpgp.org

Added

  • Autocrypt support #342
  • Load the mailboxes/folders of all namespaces (other users, global, shared, etc.)
  • Load keys from server into OpenPGP.js #973
  • Import PGP Keys from remote key servers
  • Sort Inbox Folders with Unread Messages First #1427
  • Identity Management: add identity display name #1405
  • Identity Management: add per-identity "sent" folder #1404
  • Some support for JSON-LD / Structured Email #1422
  • Domain Autoconfig and Microsoft's autodiscover (and also as extension/plugin)
  • View MMS messages that are received via email #1294
  • Draft code for S/MIME #259

Changed

  • Many OpenPGP improvements #89
  • Allow CSP connect-src CORS for keys.openpgp.org to directly fetch PGP keys
  • Improved handling of visible folders
  • KnockoutJS Replace some ko.exportSymbol('') in favour of ko['']
  • KnockoutJS use Symbol for isObservableArray()
  • Simplify generating folderListVisible
  • Drop the bSearchSecretWords param from logger
  • Transparent background for text #1412
  • Enable OpenPGP.js by default at install
  • Added folder edit popup for improved IMAP ACL Support #157
  • Process all IMAP namespaces
  • Update Polish by @tinola
  • Update Portuguese by @ner00

Fixed

  • Make time_zone a select list due to PEBKAC #1417 #1426
  • Workaround Outlook generated double spacing #1415
  • HTML Parser is not picking up the full Unsubscribe URL in the attached text file #1225
  • Contacts - it auto "Select All", after entry delete #1411
  • Message header parsing issue #1403
  • apple-touch-icon should not be transparent #1408
  • Creation of dynamic property is deprecated #1409
  • Ask/send readReceipt was broken
  • OpenPGP public key can not be removed anymore after importing private key of subkey #1384
  • KnockoutJS failed to output text '0'
  • JavaScript friendlySize() failed on 0
  • Workaround Dovecot PREAUTH [CAPABILITY (null)] issue
  • Workaround disabled ACL could cause "Disconnected: Too many invalid IMAP commands"

Nextcloud

  • Save multiple as .eml #1425
  • Disabled support for Nextcloud OpenID Connect #1420

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://github.com/the-djmaze/snappymail/wiki/Docker

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

Full Changelog: v2.33.0...v2.34.2

v2.33.0

22 Jan 14:14
Compare
Choose a tag to compare

Added

  • Feature to use the SQLite AddressBook per login account instead of global (on by default).
  • Return all fetched messages headers in JSON.

Changed

  • Docker hub use Alpine linux 3.18.5 and PHP 8.2
  • Some InvalidArgumentException to the better suited ValueError
  • Removed some unused KnockoutJS code
  • KnockoutJS drop unused rateLimit method
  • Cleanup some data-bind=""
  • Drop the disabled KnockoutJS twoWayBindings
  • Drop support for KnockoutJS _ko_property_writers and for two-way binding they must be observables
  • Login form use method="POST" to prevent uri exposure when javascript fails
  • Merge code to generate MIME PGP parts and MIME Plain parts
  • SMTP sendRequestWithCheck for future support of RFC's
  • Cleanup mime header handling

Fixed

  • Sorting not supported since 2.32.0 #1373
  • FILE_ON_SAVING_ERROR is not defined #1379
  • Saving EML files with same subject result in only saving latest email #1381
  • Some Sieve parser issues
  • Handling of RainLoop Sieve script
  • Sieve rfc5429 RejectCommand and ErejectCommand
  • KnockoutJS title:value was removed, use attr:{title:value}
  • dataBaseUpgrade() always runs on sqlite and pgsql
  • Message was sent but not saved to sent items folder #1397
  • DKIM pass detection sometimes failed

Nextcloud

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://github.com/the-djmaze/snappymail/wiki/Docker

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

Full Changelog: v2.32.0...v2.33.0

v2.32.0

26 Dec 16:44
Compare
Choose a tag to compare

Added

  • Run full GetUids() in background when message_list_limit is set
  • MessageListThreadsMap as background task when message_list_limit is set
  • Properly set CACHEDIR.TAG
  • Sending group email to all contact addresses by @rezaei92 #1286

Changed

  • Default IMAP message_list_limit to 10000
  • DoMessageCopy() return toFolder hash/etag
  • Improved Squire WYSIWYG
  • Sort real attachments and inline attachments for #1360
  • Nextcloud Theme fixes and improvements by @hampoelz #1363
  • Improve display of attachments #1361
  • Rename messageVisibility to messageVisible
  • All CSS font-size to % instead of px
  • Flip source code view of .eml attachments #1332

Fixed

  • Folders array_filter(): Argument 1 must be of type array, null given
  • At upgrade set static and themes folder to 0755
  • Preview tooltip shows "null" when PREVIEW capability is disabled

Nextcloud

  • Improved language handling by @avinash-0007 #1362
  • FilterLanguage had wrong parameter order
  • Use NextcloudV25+ theme by default

https://apps.nextcloud.com/apps/snappymail

Docker Hub

https://hub.docker.com/r/djmaze/snappymail/tags
docker pull djmaze/snappymail:latest
https://github.com/the-djmaze/snappymail/pkgs/container/snappymail
docker pull ghcr.io/the-djmaze/snappymail:latest

Read #44 and #965

Integrations

https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#integrations

Full Changelog: v2.31.0...v2.32.0