snappymail/README.md

202 lines
8 KiB
Markdown
Raw Normal View History

<div align="center">
<a href="https://github.com/the-djmaze/snappymail">
2021-04-20 02:44:12 +08:00
<img src="https://snappymail.eu/static/img/logo-256x256.png">
</a>
<br>
<h1>SnappyMail</h1>
<br>
<p>
Simple, modern, lightweight &amp; fast web-based email client.
</p>
<p>
The drastically upgraded &amp; secured fork of <a href="https://github.com/RainLoop/rainloop-webmail">RainLoop Webmail Community edition</a>.
</p>
<p>
2020-09-26 18:25:57 +08:00
We thank the RainLoop Team for making a great PHP 5 product that was good in the past.
</p>
<p>
Up to date system requirements, snappy performance, simple installation and upgrade, no database required
- all these make SnappyMail a good choice.
</p>
<h2></h2>
<br>
</div>
For more information about the product, check [snappymail.eu](https://snappymail.eu/).
Information about installing the product, check the [wiki page](https://github.com/the-djmaze/snappymail/wiki/Installation-instructions).
And don't forget to read the [RainLoop documentation](https://www.rainloop.net/docs/).
## License
**SnappyMail** is released under
**GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL)**.
http://www.gnu.org/licenses/agpl-3.0.html
2021-01-22 00:37:41 +08:00
Copyright (c) 2020 - 2021 SnappyMail
Copyright (c) 2013 - 2021 RainLoop
## Modifications
This fork of RainLoop has the following changes:
2020-03-13 22:36:48 +08:00
* Privacy/GDPR friendly (no: Social, Gravatar, Facebook, Google, Twitter, DropBox, OwnCloud, X-Mailer)
* Admin uses password_hash/password_verify
2020-07-15 20:45:11 +08:00
* Auth failed attempts written to syslog
2020-07-29 17:29:59 +08:00
* Added Fail2ban instructions
* ES2015
* PHP 7.3+ required
* PHP mbstring extension required
2021-03-04 19:16:50 +08:00
* PHP replaced pclZip with PharData and ZipArchive
* PHP yaml extension else use the old Spyc
2021-02-24 18:01:10 +08:00
* Added option to remove background/font colors from messages for real "dark mode"
2020-07-15 20:45:11 +08:00
* Removed BackwardCapability (class \RainLoop\Account)
2021-03-04 19:16:50 +08:00
* Removed ChangePassword (re-implemented as plugin)
2020-07-15 20:45:11 +08:00
* Removed OAuth support
* Removed POP3 support
* Removed background video support
* Removed Sentry (Application Monitoring and Error Tracking Software)
* Replaced gulp-uglify with gulp-terser
* CRLF => LF line endings
* Embed boot.js and boot.css into index.html
2020-07-27 23:40:00 +08:00
* Ongoing removal of old JavaScript code (things are native these days)
2020-09-13 20:13:16 +08:00
* Added modified [Squire](https://github.com/neilj/Squire) HTML editor as replacement for CKEditor
* Split Admin specific JavaScript code from User code
2020-10-29 00:12:33 +08:00
* JSON reviver
* Better memory garbage collection management
* Added serviceworker for Notifications
2021-01-22 00:37:41 +08:00
* Added advanced Sieve scripts editor
* Slimmed down language files
* Replaced webpack with rollup
2021-02-17 23:31:29 +08:00
* No user-agent detection (use device width)
2021-03-04 19:16:50 +08:00
* Added support to load plugins as .phar
2021-04-20 02:44:12 +08:00
* Replaced old Sabre library
* AddressBook Contacts support MySQL/MariaDB utf8mb4
* Prevent Google FLoC
2021-07-16 22:24:07 +08:00
* Added [Fetch Metadata Request Headers](https://www.w3.org/TR/fetch-metadata/) checks
2020-07-15 20:45:11 +08:00
2020-07-27 23:40:00 +08:00
### Removal of old JavaScript
This fork uses downsized/simplified versions of scripts and has no support for Internet Explorer.
2020-07-28 17:23:06 +08:00
The result is faster and smaller download code (good for mobile networks).
Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill for array.flat().
2020-07-24 02:50:20 +08:00
* Added dev/prototype.js for some additional features
2020-09-03 22:34:23 +08:00
* boot.js without webpack overhead
* Modified Jua.js to be without jQuery
* Replaced ProgressJS with simple native dropin
2020-08-31 22:33:40 +08:00
* Replaced Autolinker with simple https/email detection
* Replaced ifvisible.js with simple drop-in replacement
* Replaced momentToNode with proper HTML5 <time>
* Replaced resize listeners with ResizeObserver
* Replaced bootstrap.js with native drop-in replacement
* Replaced dev/Common/ClientStorageDriver/* with Web Storage Objects polyfill
* Replaced *Ajax with *Fetch classes because we use the Fetch API, not jQuery.ajax
* Replaced knockoutjs 3.4 with a modified 3.5.1
* Replaced knockout-sortable with native HTML5 drag&drop
* Replaced simplestatemanager with CSS @media
* Replaced inputosaurus with own code
* Replaced keymaster with own shortcuts handler
* Removed pikaday
* Removed underscore
* Removed polyfills
* Removed Modernizr
* Removed nanoscroll
2020-09-22 00:54:41 +08:00
* Removed lightgallery
* Removed jQuery
* Removed jquery-ui
* Removed jquery-scrollstop
* Removed jquery-mousewheel
* Removed matchmedia-polyfill
* Removed momentjs (use Intl)
2020-08-13 19:16:08 +08:00
* Removed opentip (use CSS)
* Removed non-community (aka Prem/Premium/License) code
2021-01-27 19:02:37 +08:00
RainLoop 1.15 vs SnappyMail
|js/* |RainLoop |Snappy |
|--------------- |--------: |--------: |
2021-06-11 02:36:57 +08:00
|admin.js |2.158.025 | 91.664 |
|app.js |4.215.733 | 453.928 |
2021-05-19 21:58:37 +08:00
|boot.js | 672.433 | 3.147 |
|libs.js | 647.679 | 218.466 |
2021-01-27 19:02:37 +08:00
|polyfills.js | 325.908 | 0 |
|serviceworker.js | 0 | 285 |
2021-06-11 02:36:57 +08:00
|TOTAL |8.019.778 | 767.490 |
2021-01-27 19:02:37 +08:00
|js/min/* |RainLoop |Snappy |RL gzip |SM gzip |RL brotli |SM brotli |
|--------------- |--------: |--------: |------: |------: |--------: |--------: |
2021-06-11 02:36:57 +08:00
|admin.min.js | 255.514 | 47.908 | 73.899 | 14.313 | 60.674 | 12.787 |
|app.min.js | 516.000 | 233.532 |140.430 | 68.577 |110.657 | 57.878 |
2021-05-19 21:58:37 +08:00
|boot.min.js | 66.456 | 1.751 | 22.553 | 1.025 | 20.043 | 858 |
|libs.min.js | 574.626 | 106.529 |177.280 | 38.607 |151.855 | 34.567 |
|polyfills.min.js | 32.608 | 0 | 11.315 | 0 | 10.072 | 0 |
2021-06-11 02:36:57 +08:00
|TOTAL |1.445.204 | 389.720 |425.477 |122.522 |353.301 |106.090 |
|TOTAL (no admin) |1.189.690 | 341.812 |351.061 |108.209 |292.627 | 93.303 |
2021-05-19 21:58:37 +08:00
For a user its around 68% smaller and faster than traditional RainLoop.
2020-08-31 22:33:40 +08:00
|OpenPGP |RainLoop |Snappy |RL gzip |SM gzip |RL brotli |SM brotli |
|--------------- |--------: |--------: |------: |------: |--------: |--------: |
2021-05-19 21:58:37 +08:00
|openpgp.min.js | 330.742 | 293.972 |102.388 | 93.030 | 84.241 | 77.142 |
|openpgp.worker | 1.499 | 1.125 | 824 | 567 | 695 | 467 |
2020-08-31 22:33:40 +08:00
### CSS changes
2021-01-27 19:02:37 +08:00
* Solve jQuery removed "features" with native css code
* Themes work in mobile mode
* Bugfix invalid/conflicting css rules
2021-02-17 23:31:29 +08:00
* Use flexbox
* Split app.css to have seperate admin.css
2021-02-17 23:31:29 +08:00
* Remove oldschool 'float'
* Remove unused css
2020-08-31 22:33:40 +08:00
* Removed html.no-css
* Removed dev/Styles/Cmd.less
* Removed dev/Styles/Scroll.less
* Removed Internet Explorer from normalize.css
* Removed node_modules/opentip/css/opentip.css
* Removed node_modules/pikaday/css/pikaday.css
* Removed vendors/bootstrap/less/breadcrumbs.less
* Removed vendors/bootstrap/less/navbar.less
* Removed vendors/bootstrap/less/popovers.less
* Removed vendors/bootstrap/less/progress-bars.less
* Removed vendors/bootstrap/less/scaffolding.less
* Removed vendors/bootstrap/less/sprites.less
* Removed vendors/bootstrap/less/tooltip.less
* Removed vendors/jquery-nanoscroller/nanoscroller.css
* Removed vendors/jquery-letterfx/jquery-letterfx.min.css
* Removed vendors/Progress.js/minified/progressjs.min.css
* Removed gulp-autoprefixer
|css/* |RainLoop |Snappy |RL gzip |SM gzip |SM brotli |
|------------ |-------: |-------: |------: |------: |--------: |
2021-05-19 21:58:37 +08:00
|app.css | 340.334 | 100.825 | 46,959 | 18.002 | 15.540 |
|app.min.css | 274.791 | 82.684 | 39.618 | 16.138 | 14.234 |
|boot.css | | 1.326 | | 664 | 545 |
|boot.min.css | | 1.071 | | 590 | 474 |
|admin.css | | 42.217 | | 8.714 | 7.602 |
|admin.min.css | | 33.576 | | 7.680 | 6.810 |
### Squire vs CKEditor
The [Squire](https://github.com/neilj/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 |
CKEditor including the 7 asset requests (css,language,plugins,icons) is 633.46 KB / 180.47 KB (gzip).
2021-03-25 20:35:15 +08:00
To use the old CKEditor, you must install the plugin.