diff --git a/.docker/release/files/usr/local/include/application.ini b/.docker/release/files/usr/local/include/application.ini
index 83d84894c..09a2447ec 100644
--- a/.docker/release/files/usr/local/include/application.ini
+++ b/.docker/release/files/usr/local/include/application.ini
@@ -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"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f5d1c977b..74156d87e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -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
diff --git a/README.md b/README.md
index 0c7d0e5eb..721e41f10 100644
--- a/README.md
+++ b/README.md
@@ -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 |
diff --git a/dev/Styles/User/MessageList.less b/dev/Styles/User/MessageList.less
index 9dafa2600..6a606b195 100644
--- a/dev/Styles/User/MessageList.less
+++ b/dev/Styles/User/MessageList.less
@@ -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;
diff --git a/dev/Styles/User/MessageView.less b/dev/Styles/User/MessageView.less
index 1cd2055ea..d9d6c454f 100644
--- a/dev/Styles/User/MessageView.less
+++ b/dev/Styles/User/MessageView.less
@@ -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 {
diff --git a/dev/View/User/MailBox/MessageList.js b/dev/View/User/MailBox/MessageList.js
index 63a27d9f4..da52c3267 100644
--- a/dev/View/User/MailBox/MessageList.js
+++ b/dev/View/User/MailBox/MessageList.js
@@ -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 = {
diff --git a/integrations/cloudron/DESCRIPTION.md b/integrations/cloudron/DESCRIPTION.md
index 7fa5109db..b741dfc3d 100644
--- a/integrations/cloudron/DESCRIPTION.md
+++ b/integrations/cloudron/DESCRIPTION.md
@@ -1,4 +1,4 @@
-This app packages SnappyMail 2.23.1.
+This app packages SnappyMail 2.24.0.
SnappyMail is a simple, modern, lightweight & fast web-based email client.
diff --git a/integrations/cloudron/Dockerfile b/integrations/cloudron/Dockerfile
index 735d9b541..5a1271e19 100644
--- a/integrations/cloudron/Dockerfile
+++ b/integrations/cloudron/Dockerfile
@@ -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 && \
diff --git a/integrations/nextcloud/snappymail/appinfo/info.xml b/integrations/nextcloud/snappymail/appinfo/info.xml
index 33a3e5438..0ebe26e19 100644
--- a/integrations/nextcloud/snappymail/appinfo/info.xml
+++ b/integrations/nextcloud/snappymail/appinfo/info.xml
@@ -3,7 +3,7 @@
snappymail
SnappyMail
SnappyMail Webmail
- 2.23.1
+ 2.24.0
agpl
SnappyMail, RainLoop Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli
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: