-
-
Notifications
You must be signed in to change notification settings - Fork 129
Home
This project is a fork of Rainloop and aims to apply hardening, modernization and a more lightweight experience.
For a detailed overview on installing SnappyMail, please see the installation instructions.
This fork implements the following changes in comparison to upstream:
- Privacy/GDPR friendly (removed Sentry, Gravatar, Facebook, Google, Twitter, DropBox, OwnCloud and X-Mailer links/inclusion)
- More secure admin hashing algorithm (uses password_hash/password_verify)
-
Added features/functionality:
- Auth failed attempts written to syslog (for fail2ban and others)
- Option to remove background/font colors from messages for real "dark mode"
- Modified Squire HTML editor as replacement for CKEditor
- Better memory garbage collection management
- Advanced Sieve filter scripts editor
- No user-agent detection (use device width)
- Split Admin specific JavaScript code from User code
-
More modern PHP approach:
- Requires PHP 7.3+ with the mbstring extension
- Replaced pclZip with PharData and ZipArchive
- Prefer the yaml extension, fallback to the old Spyc
-
Removed features/functionality:
- Background video support
- BackwardCapability (class \RainLoop\Account)
- ChangePassword (plugins won't work)
- OAuth support
- POP3 support (this fork supports only IMAP)
- Ongoing removal of old JavaScript code
- Dropped gulp-uglify in favor of gulp-terser
- Replaced webpack with rollup
This fork uses downsized/simplified versions of scripts and has no support for Internet Explorer, resulting in increased performance and a smaller pageload - which benefits mobile devices. Things might work in Edge 15-18, Firefox 47-62 and Chrome 54-68 due to one polyfill for array.flat().
- Removed pikaday
- Removed underscore
- Removed polyfills
- Removed Modernizr
- Removed nanoscroll
- Removed lightgallery
- Removed jQuery
- Removed matchmedia-polyfill
- Removed momentjs (use Intl)
- Removed opentip (use CSS)
RainLoop 1.15 vs SnappyMail
js/* | RainLoop | Snappy |
---|---|---|
admin.js | 2.158.025 | 110.283 |
app.js | 4.215.733 | 518.179 |
boot.js | 672.433 | 4.726 |
libs.js | 647.679 | 227.780 |
polyfills.js | 325.908 | 0 |
serviceworker.js | 0 | 285 |
TOTAL | 8.019.778 | 861.253 |
js/min/* | RainLoop | Snappy | RL gzip | SM gzip | RL brotli | SM brotli |
---|---|---|---|---|---|---|
admin.min.js | 255.514 | 55.895 | 73.899 | 15.992 | 60.674 | 14.239 |
app.min.js | 516.000 | 252.825 | 140.430 | 73.089 | 110.657 | 61.565 |
boot.min.js | 66.456 | 2.525 | 22.553 | 1.391 | 20.043 | 1.201 |
libs.min.js | 574.626 | 115.768 | 177.280 | 42.792 | 151.855 | 38.097 |
polyfills.min.js | 32.608 | 0 | 11.315 | 0 | 10.072 | 0 |
TOTAL | 1.445.204 | 427.013 | 425.477 | 133.264 | 353.301 | 115.102 |
TOTAL (no admin) | 1.189.690 | 371.118 | 351.061 | 117.272 | 292.627 | 100.863 |
For a user its around 66% smaller and faster than traditional RainLoop.
css/* | RainLoop | Snappy | RL gzip | SM gzip | SM brotli |
---|---|---|---|---|---|
app.css | 340.334 | 113.842 | 46,959 | 19.342 | 16.575 |
app.min.css | 274.791 | 94.441 | 39.618 | 17.414 | 15.264 |
boot.css | 2.066 | 913 | 742 | ||
boot.min.css | 1.696 | 818 | 664 | ||
admin.css | 52.753 | 10.259 | 8.964 | ||
admin.min.css | 42.311 | 9.098 | 8.088 |
The Squire implementation is not 100% compatible yet, but it shows the massive overhead of CKEditor.
Still TODO:
- support for tables (really needed?!?)
- support BIDI (really needed?!?)
normal | min | gzip | min gzip | |
---|---|---|---|---|
squire | 128.826 | 47.074 | 33.671 | 15.596 |
ckeditor | ? | 520.035 | ? | 155.916 |
There is a branch that only incorporates the PHP 7.3 changes, this branch can be found at https://github.com/the-djmaze/SnappyMail/tree/php73