mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-02-27 00:10:31 +08:00
v2.24.0
This commit is contained in:
parent
18b7b39b49
commit
e4b1950dbe
12 changed files with 119 additions and 70 deletions
|
@ -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"
|
||||
|
|
56
CHANGELOG.md
56
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
|
||||
|
|
20
README.md
20
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 |
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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 && \
|
||||
|
|
|
@ -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.**
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue