the-djmaze / snappymail

Simple, modern & fast web-based email client
https://snappymail.eu
GNU Affero General Public License v3.0
924 stars 109 forks source link

SnappyMail


[![github-actions](https://github.com/the-djmaze/snappymail/actions/workflows/docker.yml/badge.svg)](https://github.com/the-djmaze/snappymail/actions/workflows/docker.yml) [![docker-image-size](https://img.shields.io/docker/image-size/djmaze/snappymail/latest)](https://hub.docker.com/r/djmaze/snappymail/tags)

Simple, modern, lightweight & fast web-based email client.

The drastically upgraded & secured fork of RainLoop Webmail Community edition.

We thank the RainLoop Team for making a great PHP 5 product that was good in the past.

Up to date system requirements, snappy performance, simple installation and upgrade, no database required - all these make SnappyMail a good choice.


For more information about the product, check snappymail.eu.

Information about installing the product, check the wiki page.

And don't forget to read the whole Wiki.

License

SnappyMail is released under GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL). http://www.gnu.org/licenses/agpl-3.0.html

Copyright (c) 2020 - 2024 SnappyMail Copyright (c) 2013 - 2022 RainLoop

Modifications

This fork of RainLoop has the following changes:

Supported browsers

This fork uses downsized/simplified versions of scripts and has no support for Internet Explorer nor Edge Legacy. Supported are:

Removal of old JavaScript

The result is faster and smaller download code (good for mobile networks).

RainLoop 1.17 vs SnappyMail

js/* RainLoop Snappy
admin.js 2.170.153 83.739
app.js 4.207.787 438.844
boot.js 868.735 4.147
libs.js 658.812 193.716
sieve.js 0 84.598
polyfills.js 334.608 0
serviceworker.js 0 285
TOTAL 8.240.095 805.329
js/min/* RainLoop Snappy RL gzip SM gzip RL brotli SM brotli
admin.min.js 256.831 41.057 73.606 13.841 60.877 12.387
app.min.js 515.367 198.688 139.456 67.384 110.485 57.528
boot.min.js 84.659 2.087 26.998 1.204 23.643 1.002
libs.min.js 584.772 92.365 180.901 34.487 155.182 30.830
sieve.min.js 0 41.093 0 10.325 0 9.327
polyfills.min.js 32.837 0 11.406 0 10.175 0
TOTAL user 1.217.635 293.140 358.761 103.075 299.485 89.360
TOTAL user+sieve 1.217.635 334.233 358.761 113.400 299.485 98.687
TOTAL admin 959.099 135.509 292.911 49.532 249.877 44.219

For a user it is around 68% smaller and faster than traditional RainLoop.

CSS changes

css/* RainLoop Snappy RL gzip SM gzip SM brotli
app.css 340.331 84.662 46.946 17.667 15.144
app.min.css 274.947 68.023 39.647 15.565 13.577
boot.css 1.326 664 545
boot.min.css 1.071 590 474
admin.css 30.528 7.001 6.088
admin.min.css 24.652 6.325 5.574

PGP

RainLoop uses the old OpenPGP.js v2 SnappyMail v2.12 uses OpenPGP.js v5, GnuPG and Mailvelope. SnappyMail is able to use and generate ECDSA and EDDSA keys, where RainLoop does not.

Since SnappyMail tries to achieve the best mobile experience, it forked OpenPGP.js to strip it down.

OpenPGP RainLoop Snappy RL gzip SM gzip RL brotli SM brotli
openpgp.min.js 330.742 546.309 102.388 169.249 84.241 138.751
openpgp.worker 1.499 824 695

Squire vs CKEditor

The Squire implementation is not 100% compatible yet, but it shows the massive overhead of CKEditor.

Still TODO:

normal min gzip min gzip
squire 122.321 41.906 31.867 14.330
ckeditor ? 520.035 ? 155.916

CKEditor including the 7 asset requests (css,language,plugins,icons) is 633.46 KB / 180.47 KB (gzip).