This commit is contained in:
the-djmaze 2022-12-22 19:40:11 +01:00
parent 18b7b39b49
commit e4b1950dbe
12 changed files with 119 additions and 70 deletions

View file

@ -69,10 +69,29 @@ allow_admin_panel = On
hide_x_mailer_header = On
admin_panel_host = ""
admin_panel_key = "admin"
; For example to allow all images use "img-src https:". More info at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy#directives
content_security_policy = ""
; Report CSP errors to PHP and/or SnappyMail Log
csp_report = Off
; A valid cipher method from https://php.net/openssl_get_cipher_methods
encrypt_cipher = "aes-256-cbc-hmac-sha1"
; Strict, Lax or None
cookie_samesite = "Strict"
; Additional allowed Sec-Fetch combinations separated by ";".
; For example:
; * Allow iframe on same domain in any mode: dest=iframe,site=same-origin
; * Allow navigate to iframe on same domain: mode=navigate,dest=iframe,site=same-origin
; * Allow navigate to iframe on (sub)domain: mode=navigate,dest=iframe,site=same-site
; * Allow navigate to iframe from any domain: mode=navigate,dest=iframe,site=cross-site
;
; Default is "site=same-origin;site=none"
secfetch_allow = ""
[admin_panel]
allow_update = Off
@ -93,7 +112,10 @@ cafile = ""
capath = ""
; Location of client certificate file (pem format with private key) on local filesystem
client_cert = ""
local_cert = ""
; This can help mitigate the CRIME attack vector.
disable_compression = On
[capa]
quota = On
@ -102,6 +124,11 @@ message_actions = On
attachments_actions = On
[login]
; If someone logs in without "@domain.tld", this value will be used
; When this value is HTTP_HOST, the $_SERVER["HTTP_HOST"] value is used.
; When this value is SERVER_NAME, the $_SERVER["SERVER_NAME"] value is used.
; When this value is gethostname, the gethostname() value is used.
;
default_domain = ""
; Allow language selection on webmail login screen
@ -123,7 +150,7 @@ sign_me_auto = "DefaultOff"
; Enable plugin support
enable = Off
; List of enabled plugins
; Comma-separated list of enabled plugins
enabled_list = ""
[defaults]
@ -145,6 +172,9 @@ mail_reply_same_folder = Off
; Enable logging
enable = Off
; Path where log files will be stored
path = ""
; Log messages of set RFC 5424 section 6.2.1 Severity level and higher (0 = highest, 7 = lowest).
; 0 = Emergency
; 1 = Alert
@ -208,6 +238,9 @@ enable = Off
; Enables caching in the system
enable = On
; Path where cache files will be stored
path = ""
; Additional caching key. If changed, cache is purged
index = "v1"
@ -227,28 +260,16 @@ http_expires = 3600
server_uids = On
[imap]
use_sort = On
use_force_selection = Off
use_thread = On
use_move = Off
use_expunge_all_on_delete = Off
body_text_limit = 555000
message_list_fast_simple_search = On
message_list_count_limit_trigger = 0
message_list_date_filter = 0
message_list_permanent_filter = ""
message_all_headers = Off
large_thread_limit = 50
folder_list_limit = 200
show_login_alert = On
use_list_status = On
timeout = 300
disable_metadata = Off
[labs]
cache_system_data = On
date_from_headers = On
autocreate_system_folders = Off
allow_message_append = Off
login_fault_delay = 1
log_ajax_response_write_limit = 300
@ -258,13 +279,8 @@ try_to_detect_hidden_images = Off
use_app_debug_js = Off
use_app_debug_css = Off
smtp_show_server_errors = Off
smtp_timeout = 60
sieve_auth_plain_initial = On
sieve_allow_fileinto_inbox = Off
sieve_timeout = 10
sasl_allow_plain = On
sasl_allow_scram_sha = Off
sasl_allow_cram_md5 = Off
mail_func_clear_headers = On
mail_func_additional_parameters = Off
folders_spec_limit = 50
@ -289,5 +305,5 @@ dev_email = ""
dev_password = ""
[version]
current = "2.23.1"
saved = "Fri, 30 Sep 2022 12:34:56 +0000"
current = "2.24.0"
saved = "Sun, 18 Dec 2022 22:10:48 +0000"

View file

@ -1,3 +1,59 @@
## 2.24.0 2022-12-22
### Added
- Option to enable additional account unread messages count
- Prevent godaddy click tracking
- Dark theme use `color-scheme: dark;`
- More imapsync.php CLI options and help
### Changed
- MessageList now grouped/split per day
[#737](https://github.com/the-djmaze/snappymail/pull/737)
- Account switcher still shown when allow_additional_accounts is set to Off
[#280](https://github.com/the-djmaze/snappymail/pull/280)
- PHP classes use typed properties
- Speedup Contacts Suggestions handling
- Check SMTP SIZE
[#779](https://github.com/the-djmaze/snappymail/pull/779)
### Fixed
- Handle multiple DKIM signatures authentication results
- Reload admin extensions on update
- SieveClient quoted string parsing failed
- Invalid Attachments (PDF)
[#466](https://github.com/the-djmaze/snappymail/pull/466)
- Email HTML images rendering issue
[#564](https://github.com/the-djmaze/snappymail/pull/564)
- "Server message: No supported SASL mechanism found, remote server wants:" in hMailServer
[#780](https://github.com/the-djmaze/snappymail/pull/780)
### Removed
- Some unused plugin hooks to improve Action handling speed
## 2.23.1 2022-12-15
### Changed
- More JMAP RFC matching including role
- Speedup fetch all Folders/mailboxes
- Disable unused folder_list_limit
- Merge MailSo\Mail\Folder into MailSo\Imap\Folder and speedup process
- SnappyMail\Imap\Sync now matches folders based on JMAP role
- Added the new imapsync.php command line script for
[#744](https://github.com/the-djmaze/snappymail/pull/744)
- Added manual setting for 12/24h clock
[#760](https://github.com/the-djmaze/snappymail/pull/760)
- Add options to mark the message I'm viewing as unread and return to the inbox #766
### Fixed
- Extension menu shows only some available extensions #778
- New solution for [#423](https://github.com/the-djmaze/snappymail/pull/423) due to [#774](https://github.com/the-djmaze/snappymail/pull/774)
- Avatars extension error on smartphone
[#764](https://github.com/the-djmaze/snappymail/pull/764)
- Don't fetch Unread count for main account
- CSS .e-checkbox.material-design invisible on show/hide
## 2.23.0 2022-12-08
### Added

View file

@ -141,26 +141,26 @@ RainLoop 1.17 vs SnappyMail
|js/* |RainLoop |Snappy |
|--------------- |--------: |--------: |
|admin.js |2.170.153 | 83.917 |
|app.js |4.207.787 | 412.197 |
|admin.js |2.170.153 | 83.828 |
|app.js |4.207.787 | 410.179 |
|boot.js | 868.735 | 2.351 |
|libs.js | 658.812 | 193.682 |
|sieve.js | 0 | 86.018 |
|polyfills.js | 334.608 | 0 |
|serviceworker.js | 0 | 285 |
|TOTAL |8.240.095 | 778.450 |
|TOTAL |8.240.095 | 776.343 |
|js/min/* |RainLoop |Snappy |RL gzip |SM gzip |RL brotli |SM brotli |
|--------------- |--------: |--------: |------: |------: |--------: |--------: |
|admin.min.js | 256.831 | 41.827 | 73.606 | 13.858 | 60.877 | 12.432 |
|app.min.js | 515.367 | 190.374 |139.456 | 63.219 |110.485 | 54.234 |
|admin.min.js | 256.831 | 41.783 | 73.606 | 13.857 | 60.877 | 12.426 |
|app.min.js | 515.367 | 189.103 |139.456 | 63.033 |110.485 | 54.075 |
|boot.min.js | 84.659 | 1.474 | 26.998 | 907 | 23.643 | 733 |
|libs.min.js | 584.772 | 92.082 |180.901 | 34.144 |155.182 | 30.670 |
|sieve.min.js | 0 | 41.909 | 0 | 10.476 | 0 | 9.461 |
|polyfills.min.js | 32.837 | 0 | 11.406 | 0 | 10.175 | 0 |
|TOTAL user |1.217.635 | 283.930 |358.761 | 98.270 |299.485 | 85.637 |
|TOTAL user+sieve |1.217.635 | 325.839 |358.761 |108.746 |299.485 | 95.098 |
|TOTAL admin | 959.099 | 135.383 |292.911 | 48.909 |249.877 | 43.835 |
|TOTAL user |1.217.635 | 282.659 |358.761 | 98.084 |299.485 | 85.478 |
|TOTAL user+sieve |1.217.635 | 324.568 |358.761 |108.560 |299.485 | 94.939 |
|TOTAL admin | 959.099 | 135.339 |292.911 | 48.908 |249.877 | 43.829 |
For a user its around 70% smaller and faster than traditional RainLoop.
@ -189,8 +189,8 @@ For a user its around 70% smaller and faster than traditional RainLoop.
|css/* |RainLoop |Snappy |RL gzip |SM gzip |SM brotli |
|------------ |-------: |------: |------: |------: |--------: |
|app.css | 340.331 | 82.348 | 46.946 | 17.074 | 14.652 |
|app.min.css | 274.947 | 66.376 | 39.647 | 15.048 | 13.200 |
|app.css | 340.331 | 82.512 | 46.946 | 17.112 | 14.693 |
|app.min.css | 274.947 | 66.506 | 39.647 | 15.086 | 13.243 |
|boot.css | | 1.326 | | 664 | 545 |
|boot.min.css | | 1.071 | | 590 | 474 |
|admin.css | | 30.277 | | 6.901 | 5.999 |

View file

@ -31,7 +31,7 @@ html.rl-no-preview-pane {
.day {
background:rgba(128,128,128,0.2);
font-size: 90%;
font-size: 12px;
line-height: 2;
text-align: center;
text-transform: capitalize;

View file

@ -117,6 +117,7 @@ html.rl-no-preview-pane {
border-radius: var(--border-radius, 5px) var(--border-radius, 5px) 0 0;
padding: 10px;
flex-shrink: 0;
word-break: keep-all;
.fontastic + span {
margin-left: 0.25em;
@ -180,10 +181,6 @@ html.rl-no-preview-pane {
white-space: nowrap;
width: 1%;
}
td + td {
word-break: break-all;
}
}
.hasVirus {

View file

@ -146,21 +146,22 @@ export class MailMessageList extends AbstractViewRight {
mobileCheckedStateHide: () => ThemeStore.isMobile() ? !MessagelistUserStore.hasChecked() : 1,
// Idea for https://github.com/the-djmaze/snappymail/issues/737
listByDay: () => {
let list = [], current, today = Ymd(new Date()), lang = doc.documentElement.lang;
let list = [], current, today = Ymd(new Date()),
rtf = new Intl.RelativeTimeFormat(doc.documentElement.lang, { numeric: "auto" });
MessagelistUserStore.forEach(msg => {
let date = (new Date(msg.dateTimeStampInUTC() * 1000)),
ymd = Ymd(date);
if (!current || ymd != current.ymd) {
if (today == ymd) {
date = new Intl.RelativeTimeFormat(lang, { numeric: "auto" }).format(0, 'day');
date = rtf.format(0, 'day');
} else if (today - 1 == ymd) {
date = new Intl.RelativeTimeFormat(lang, { numeric: "auto" }).format(-1, 'day');
date = rtf.format(-1, 'day');
// } else if (today - 7 < ymd) {
// date = date.format('l');
// date = date.format({dateStyle: 'full'},0,LanguageStore.hourCycle());
} else {
// date = date.format('LL',0,LanguageStore.hourCycle());
// date = date.format({dateStyle: 'medium'},0,LanguageStore.hourCycle());
date = date.format({dateStyle: 'full'},0,LanguageStore.hourCycle());
}
current = {

View file

@ -1,4 +1,4 @@
This app packages SnappyMail <upstream>2.23.1</upstream>.
This app packages SnappyMail <upstream>2.24.0</upstream>.
SnappyMail is a simple, modern, lightweight & fast web-based email client.

View file

@ -4,7 +4,7 @@ RUN mkdir -p /app/code
WORKDIR /app/code
# If you change the extraction below, be sure to test on scaleway
VERSION=2.23.1
VERSION=2.24.0
RUN wget https://github.com/the-djmaze/snappymail/releases/download/v${VERSION}/snappymail-${VERSION}.zip -O /tmp/snappymail.zip && \
unzip /tmp/snappymail.zip -d /app/code && \
rm /tmp/snappymail.zip && \

View file

@ -3,7 +3,7 @@
<id>snappymail</id>
<name>SnappyMail</name>
<summary>SnappyMail Webmail</summary>
<version>2.23.1</version>
<version>2.24.0</version>
<licence>agpl</licence>
<author>SnappyMail, RainLoop Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli</author>
<description><![CDATA[**Simple, modern, lightweight & fast web-based email client.**

View file

@ -20,7 +20,7 @@ return "SnappyMail Webmail is a browser-based multilingual IMAP client with an a
# script_snappymail_versions()
sub script_snappymail_versions
{
return ( "2.23.1" );
return ( "2.24.0" );
}
sub script_snappymail_version_desc

View file

@ -3,7 +3,7 @@
"title": "SnappyMail",
"description": "Simple, modern & fast web-based email client",
"private": true,
"version": "2.23.1",
"version": "2.24.0",
"homepage": "https://snappymail.eu",
"author": {
"name": "DJ Maze",

View file

@ -375,20 +375,6 @@ and called in JavaScript using rl.pluginRemoteRequest().
int &$iLimit
\RainLoop\Model\Account $oAccount
### json.suggestions-post
params:
array &$aResult
string $sQuery
\RainLoop\Model\Account $oAccount
int $iLimit
### json.suggestions-pre
params:
array &$aResult
string $sQuery
\RainLoop\Model\Account $oAccount
int $iLimit
### main.content-security-policy
params:
\SnappyMail\HTTP\CSP $oCSP
@ -397,20 +383,13 @@ and called in JavaScript using rl.pluginRemoteRequest().
`$oCSP->script[] = "'strict-dynamic'";`
### main.default-response
params:
string $sActionName
array &$aResponse
Obsolete, use json.after-{actionname}
### main.default-response-data
params:
string $sActionName
mixed &$mResult
Obsolete, use json.after-{actionname}
### main.default-response-error-data
params:
string $sActionName
int &$iErrorCode
string &$sErrorMessage
Obsolete, use json.after-{actionname}
### main.fabrica
params: