diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index d53d388ed..998692964 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -30,8 +30,9 @@ If applicable, add screenshots to help explain your problem. - SnappyMail Version: - Mode: [e.g. standalone, nextcloud, cyberpanel, docker] -**[Debug/logging information](https://github.com/the-djmaze/snappymail/wiki/FAQ#how-do-i-enable-logging)** -Place them here (few lines) or as attachments (many lines) +**Debug/logging information** +[Read here how to log](https://github.com/the-djmaze/snappymail/wiki/FAQ#how-do-i-enable-logging) +- [ ] I've placed them here (few lines) or as attachments (many lines) **Additional context** Add any other context about the problem here. diff --git a/dev/Model/MimeHeaderAutocrypt.js b/dev/Model/MimeHeaderAutocrypt.js index b1e65271a..cfd12ea57 100644 --- a/dev/Model/MimeHeaderAutocrypt.js +++ b/dev/Model/MimeHeaderAutocrypt.js @@ -10,18 +10,20 @@ export class MimeHeaderAutocryptModel/* extends AbstractModel*/ if (value) { value.split(';').forEach(entry => { - entry = entry.split('='); + entry = entry.match(/^([^=]+)=(.*)$/); const trim = str => (str || '').trim().replace(/^["']|["']+$/g, ''); - this[trim(entry[0]).replace('-', '_')] = trim(entry[1]); + this[trim(entry[1]).replace('-', '_')] = trim(entry[2]); }); + this.keydata = this.keydata.replace(/\s+/g, '\n'); } } toString() { + let result = `addr=${this.addr}; `; if ('mutual' === this.prefer_encrypt) { - return `addr=${this.addr}; prefer-encrypt=mutual; keydata=${this.keydata}`; + result += 'prefer-encrypt=mutual; '; } - return `addr=${this.addr}; keydata=${this.keydata}`; + return result + 'keydata=' + this.keydata.replace(/\n/g, '\n '); } pem() { diff --git a/dev/View/Popup/AdvancedSearch.js b/dev/View/Popup/AdvancedSearch.js index 8db80316a..d4a74ba6c 100644 --- a/dev/View/Popup/AdvancedSearch.js +++ b/dev/View/Popup/AdvancedSearch.js @@ -18,7 +18,7 @@ export class AdvancedSearchPopupView extends AbstractViewPopup { text: '', keyword: '', repliedValue: -1, - selectedDateValue: -1, + selectedDateValue: 0, selectedTreeValue: '', hasAttachment: false, @@ -58,7 +58,7 @@ export class AdvancedSearchPopupView extends AbstractViewPopup { // We should think about migrating all SEARCH/DATE_ to either SEARCH/SINCE_DATE or SEARCH/BEFORE_DATE // and adjust the prefix accordingly // let prefix_since = 'SEARCH/SINCE_DATE_'; - let prefix = 'SEARCH/DATE_'; + let prefix = 'SEARCH/SINCE_'; let prefix_before = 'SEARCH/BEFORE_DATE_'; return [ { id: -365, name: i18n(prefix_before + 'YEAR') }, @@ -67,7 +67,7 @@ export class AdvancedSearchPopupView extends AbstractViewPopup { { id: -30, name: i18n(prefix_before + 'MONTH') }, { id: -7, name: i18n(prefix_before + '7_DAYS') }, { id: -3, name: i18n(prefix_before + '3_DAYS') }, - { id: -1, name: i18n(prefix + 'ALL') }, + { id: 0, name: i18n('SEARCH/DATE_ALL') }, { id: 3, name: i18n(prefix + '3_DAYS') }, { id: 7, name: i18n(prefix + '7_DAYS') }, { id: 30, name: i18n(prefix + 'MONTH') }, @@ -110,7 +110,7 @@ export class AdvancedSearchPopupView extends AbstractViewPopup { append('text', self.text().trim()); append('keyword', self.keyword()); append('in', self.selectedTreeValue()); - if (-1 < self.selectedDateValue()) { + if (0 < self.selectedDateValue()) { let d = new Date(); d.setDate(d.getDate() - self.selectedDateValue()); append('since', d.toISOString().split('T')[0]); @@ -151,8 +151,7 @@ export class AdvancedSearchPopupView extends AbstractViewPopup { self.text(pString(params.get('text'))); self.keyword(pString(params.get('keyword'))); self.selectedTreeValue(pString(params.get('in'))); -// self.selectedDateValue(params.get('since')); - self.selectedDateValue(-1); + self.selectedDateValue(0); self.hasAttachment(params.has('attachment')); self.starred(params.has('flagged')); self.unseen(params.has('unseen')); diff --git a/dev/View/Popup/Compose.js b/dev/View/Popup/Compose.js index fbb7611a8..e937a772b 100644 --- a/dev/View/Popup/Compose.js +++ b/dev/View/Popup/Compose.js @@ -500,7 +500,7 @@ export class ComposePopupView extends AbstractViewPopup { this.sendError(true); this.sendErrorDesc( getNotification(iError, data?.ErrorMessage, Notifications.CantSendMessage) - + "\n" + data?.ErrorMessageAdditional + + "\n" + (data?.ErrorMessageAdditional || data?.ErrorMessage) ); }; try { @@ -535,9 +535,13 @@ export class ComposePopupView extends AbstractViewPopup { } this.savedErrorDesc(msg); } else { - params.signPassphrase && Passphrases.delete(identity); this.sendError(true); sendFailed(iError, data); + // Remove remembered passphrase as it could be wrong + let key = ('S/MIME' === params.sign) ? identity : null; + params.signFingerprint + && this.signOptions.forEach(option => ('GnuPG' === option[0]) && (key = option[1])); + key && Passphrases.delete(key); } } else { if (arrayLength(this.aDraftInfo) > 0) { @@ -886,7 +890,7 @@ export class ComposePopupView extends AbstractViewPopup { } if (options.mode && oLastMessage) { - let encrypted, + let usePlain, sCc = '', sDate = timestampToString(oLastMessage.dateTimestamp(), 'FULL'), sSubject = oLastMessage.subject(), @@ -994,18 +998,14 @@ export class ComposePopupView extends AbstractViewPopup { break; default: - encrypted = PgpUserStore.isEncrypted(sText); - if (encrypted) { + usePlain = PgpUserStore.isEncrypted(sText) || isPlainEditor() || !oLastMessage.isHtml(); + if (usePlain) { sText = oLastMessage.plain(); } } this.editor(editor => { - encrypted || editor.setHtml(sText); - if (encrypted || isPlainEditor()) { - editor.modePlain(); - } - encrypted && editor.setPlain(sText); + usePlain ? (editor.modePlain() | editor.setPlain(sText)) : editor.setHtml(sText); this.setSignature(identity, options.mode); this.setFocusInPopup(); }); @@ -1506,6 +1506,8 @@ export class ComposePopupView extends AbstractViewPopup { do { l = Text.length; Text = Text + // Remove line duplication + .replace(/
<\/div>/gi, '') // Remove Microsoft Office styling .replace(/(<[^>]+[;"'])\s*mso-[a-z-]+\s*:[^;"']+/gi, '$1') // Remove hubspot data-hs- attributes @@ -1546,12 +1548,11 @@ export class ComposePopupView extends AbstractViewPopup { alternative.children.push(data); data = alternative; } - let sign = true; + let isSigned = false; for (let i = 0; i < signOptions.length; ++i) { if ('OpenPGP' == signOptions[i][0]) { try { // Doesn't sign attachments - params.html = params.plain = ''; let signed = new MimePart; signed.headers['Content-Type'] = 'multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"'; @@ -1562,6 +1563,8 @@ export class ComposePopupView extends AbstractViewPopup { signature.headers['Content-Transfer-Encoding'] = '7Bit'; signature.body = await OpenPGPUserStore.sign(data.toString(), signOptions[i][1], 1); signed.children.push(signature); + isSigned = true; + params.html = params.plain = ''; params.signed = signed.toString(); params.boundary = signed.boundary; data = signed; @@ -1569,13 +1572,11 @@ export class ComposePopupView extends AbstractViewPopup { Object.entries(PgpUserStore.getPublicKeyOfEmails([getEmail(this.from())]) || {}) .forEach(([k,v]) => params.publicKey = v); */ + break; } catch (e) { - sign = false; console.error(e); } - break; - } - if ('GnuPG' == signOptions[i][0]) { + } else if ('GnuPG' == signOptions[i][0]) { // TODO: sign in PHP fails let pass = await GnuPGUserStore.sign(signOptions[i][1]); if (null != pass) { @@ -1583,12 +1584,10 @@ export class ComposePopupView extends AbstractViewPopup { params.signFingerprint = signOptions[i][1].fingerprint; params.signPassphrase = pass; // params.attachPublicKey = false; - } else { - sign = false; + isSigned = true; + break; } - break; - } - if ('S/MIME' == signOptions[i][0]) { + } else if ('S/MIME' == signOptions[i][0]) { // TODO: sign in PHP fails params.sign = 'S/MIME'; // params.signCertificate = identity.smimeCertificate(); @@ -1601,14 +1600,13 @@ export class ComposePopupView extends AbstractViewPopup { ); if (null != pass) { params.signPassphrase = pass.password; -// pass.remember && Passphrases.handle(identity, pass.password); - } else { - sign = false; + pass.remember && Passphrases.handle(identity, pass.password); + isSigned = true; } } } } - if (signOptions.length && !sign) { + if (signOptions.length && !isSigned) { throw 'Signing failed'; } diff --git a/dev/View/Popup/Domain.js b/dev/View/Popup/Domain.js index 1b3820f14..f4c465d97 100644 --- a/dev/View/Popup/Domain.js +++ b/dev/View/Popup/Domain.js @@ -39,6 +39,8 @@ const imapMessage_all_headers: false, imapMessage_list_limit: 10000, imapSearch_filter: '', + imapSpam_headers: '', + imapVirus_headers: '', sieveEnabled: false, sieveHost: '', @@ -80,15 +82,17 @@ const }, disabled_capabilities: oDomain.imapDisabled_capabilities(), folder_list_limit: pInt(oDomain.imapFolder_list_limit()), - message_list_limit: pInt(oDomain.imapMessage_list_limit()) + message_list_limit: pInt(oDomain.imapMessage_list_limit()), /* expunge_all_on_delete: , fast_simple_search: , fetch_new_messages: , force_select: , message_all_headers: , - search_filter: */ + search_filter: oDomain.imapSearch_filter(), + spam_headers: oDomain.imapSpam_headers(), + virus_headers: oDomain.imapVirus_headers() }, SMTP: { host: oDomain.smtpHost, diff --git a/dev/View/User/Login.js b/dev/View/User/Login.js index 78f9b7bb0..6b4c0e1f8 100644 --- a/dev/View/User/Login.js +++ b/dev/View/User/Login.js @@ -20,7 +20,6 @@ const SignMeOn = 1, SignMeUnused = 2; - export class LoginUserView extends AbstractViewLogin { constructor() { super(); diff --git a/integrations/nextcloud/snappymail/lib/AppInfo/Application.php b/integrations/nextcloud/snappymail/lib/AppInfo/Application.php index df40033cf..d764520ca 100644 --- a/integrations/nextcloud/snappymail/lib/AppInfo/Application.php +++ b/integrations/nextcloud/snappymail/lib/AppInfo/Application.php @@ -7,6 +7,7 @@ use OCA\SnappyMail\Controller\FetchController; use OCA\SnappyMail\Controller\PageController; use OCA\SnappyMail\Dashboard\UnreadMailWidget; use OCA\SnappyMail\Search\Provider; +use OCA\SnappyMail\Listeners\AccessTokenUpdatedListener; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootstrap; @@ -16,6 +17,7 @@ use OCP\IL10N; use OCP\IUser; use OCP\User\Events\PostLoginEvent; use OCP\User\Events\BeforeUserLoggedOutEvent; +use OCA\OIDCLogin\Events\AccessTokenUpdatedEvent; class Application extends App implements IBootstrap { @@ -62,6 +64,7 @@ class Application extends App implements IBootstrap ); $context->registerSearchProvider(Provider::class); + $context->registerEventListener(AccessTokenUpdatedEvent::class, AccessTokenUpdatedListener::class); // TODO: Not working yet, needs a Vue UI // $context->registerDashboardWidget(UnreadMailWidget::class); diff --git a/integrations/nextcloud/snappymail/lib/Listeners/AccessTokenUpdatedListener.php b/integrations/nextcloud/snappymail/lib/Listeners/AccessTokenUpdatedListener.php new file mode 100644 index 000000000..7b94359a7 --- /dev/null +++ b/integrations/nextcloud/snappymail/lib/Listeners/AccessTokenUpdatedListener.php @@ -0,0 +1,45 @@ +userSession = $userSession; + $this->session = $session; + $this->appManager = $appManager; + } + + public function handle(Event $event): void { + if (!($event instanceof AccessTokenUpdatedEvent) || !$this->userSession->isLoggedIn() || !$this->session->exists('is_oidc')) { + return; + } + // just-in-case checks(also maybe useful for selfhosters) + if (!$this->appManager->isEnabledForUser(self::SNAPPYMAIL_APP_ID) || !$this->appManager->isEnabledForUser(self::OIDC_LOGIN_APP_ID)) { + return; + } + $accessToken = $event->getAccessToken(); + if (!$accessToken) { + return; + } + + $username = $this->userSession->getUser()->getUID(); + $this->session->set('snappymail-nc-uid', $username); + } +} diff --git a/plugins/example/example.js b/plugins/example/example.js index 77368e0d1..7d66ec9d8 100644 --- a/plugins/example/example.js +++ b/plugins/example/example.js @@ -1,4 +1,55 @@ (rl => { + /** + * ViewModel class | class.viewModelTemplateID + * User & Admin: + * AskPopupView | PopupsAsk + * LanguagesPopupView | PopupsLanguages + * User: + * LoginUserView | Login + * SystemDropDownUserView | SystemDropDown + * MailFolderList | MailFolderList + * MailMessageList | MailMessageList + * MailMessageView | MailMessageView + * SettingsMenuUserView | SettingsMenu + * SettingsPaneUserView | SettingsPane + * UserSettingsAccounts | SettingsAccounts + * UserSettingsContacts | SettingsContacts + * UserSettingsFilters | SettingsFilters + * UserSettingsFolders | SettingsFolders + * UserSettingsGeneral | SettingsGeneral + * UserSettingsSecurity | SettingsSecurity + * UserSettingsThemes | SettingsThemes + * AccountPopupView | PopupsAccount + * AdvancedSearchPopupView | PopupsAdvancedSearch + * ComposePopupView | PopupsCompose + * ContactsPopupView | PopupsContacts + * FolderPopupView | PopupsFolder + * FolderClearPopupView | PopupsFolderClear + * FolderCreatePopupView | PopupsFolderCreate + * FolderSystemPopupView | PopupsFolderSystem + * IdentityPopupView | PopupsIdentity + * KeyboardShortcutsHelpPopupView | PopupsKeyboardShortcutsHelp + * OpenPgpGeneratePopupView | PopupsOpenPgpGenerate + * OpenPgpImportPopupView | PopupsOpenPgpImport + * OpenPgpKeyPopupView | PopupsOpenPgpKey + * SMimeImportPopupView | PopupsSMimeImport + * Admin: + * AdminLoginView | AdminLogin + * MenuSettingsAdminView | AdminMenu + * PaneSettingsAdminView | AdminPane + * AdminSettingsAbout | AdminSettingsAbout + * AdminSettingsBranding | AdminSettingsBranding + * AdminSettingsConfig | AdminSettingsConfig + * AdminSettingsContacts | AdminSettingsContacts + * AdminSettingsDomains | AdminSettingsDomains + * AdminSettingsGeneral | AdminSettingsGeneral + * AdminSettingsLogin | AdminSettingsLogin + * AdminSettingsPackages | AdminSettingsPackages + * AdminSettingsSecurity | AdminSettingsSecurity + * DomainPopupView | PopupsDomain + * DomainAliasPopupView | PopupsDomainAlias + * PluginPopupView | PopupsPlugin + */ /** * Happens immediately after the ViewModel constructor diff --git a/plugins/ldap-mail-accounts/LdapMailAccounts.php b/plugins/ldap-mail-accounts/LdapMailAccounts.php index 2f93dbd14..5dc0c4eb6 100644 --- a/plugins/ldap-mail-accounts/LdapMailAccounts.php +++ b/plugins/ldap-mail-accounts/LdapMailAccounts.php @@ -3,7 +3,9 @@ use RainLoop\Enumerations\Capa; use MailSo\Log\Logger; use RainLoop\Actions; +use RainLoop\Model\AdditionalAccount; use RainLoop\Model\MainAccount; +use RainLoop\Providers\Storage\Enumerations\StorageType; class LdapMailAccounts { @@ -50,14 +52,13 @@ class LdapMailAccounts /** * @inheritDoc * - * AOverwrite the MainAccount mail address by looking up the new one in the ldap directory + * Overwrite the MainAccount mail address by looking up the new one in the ldap directory * * The ldap search string has to be configured in the plugin configuration of the extension (in the SnappyMail Admin Panel) * * @param string &$sEmail - * @param string &$sLogin */ - public function overwriteEmail(&$sEmail, &$sLogin) + public function overwriteEmail(&$sEmail) { try { $this->EnsureBound(); @@ -106,7 +107,7 @@ class LdapMailAccounts foreach($mailAddressResults as $mailAddressResult) { if($mailAddressResult->username === $username) { - //$sLogin is already set to be the same as $sEmail by function "resolveLoginCredentials" in /RainLoop/Actions/UserAuth.php + //$sImapUser and $sSmtpUser are already set to be the same as $sEmail by function "resolveLoginCredentials" in /RainLoop/Actions/UserAuth.php //that called this hook, so we just have to overwrite the mail address $sEmail = $mailAddressResult->mailMainAccount; } @@ -131,10 +132,19 @@ class LdapMailAccounts return false; // exceptions are only thrown from the handle error function that does logging already } - // Try to get account information. IncLogin() returns the username of the user - // and removes the domainname if this was configured inside the domain config. - $username = @ldap_escape($oAccount->IncLogin(), "", LDAP_ESCAPE_FILTER); + //Basing on https://github.com/the-djmaze/snappymail/issues/616 + $oActions = \RainLoop\Api::Actions(); + + //Check if SnappyMail is configured to allow additional accounts + if (!$oActions->GetCapa(Capa::ADDITIONAL_ACCOUNTS)) { + return $oActions->FalseResponse(__FUNCTION__); + } + + // Try to get account information. ImapUser() returns the username of the user + // and removes the domainname if this was configured inside the domain config. + $username = @ldap_escape($oAccount->ImapUser(), "", LDAP_ESCAPE_FILTER); + $searchString = $this->config->search_string; // Replace placeholders inside the ldap search string with actual values @@ -159,21 +169,10 @@ class LdapMailAccounts catch (LdapMailAccountsException $e) { return false; // exceptions are only thrown from the handle error function that does logging already } + if (count($mailAddressResults) < 1) { $this->logger->Write("Could not find user $username", \LOG_NOTICE, self::LOG_KEY); return false; - } else if (count($mailAddressResults) == 1) { - $this->logger->Write("Found only one match for user $username, no additional mail adresses found", \LOG_NOTICE, self::LOG_KEY); - return true; - } - - //Basing on https://github.com/the-djmaze/snappymail/issues/616 - - $oActions = \RainLoop\Api::Actions(); - - //Check if SnappyMail is configured to allow additional accounts - if (!$oActions->GetCapa(Capa::ADDITIONAL_ACCOUNTS)) { - return $oActions->FalseResponse(__FUNCTION__); } $aAccounts = $oActions->GetAccounts($oAccount); @@ -189,6 +188,25 @@ class LdapMailAccounts } } + //SnappyMail saves the passwords of the additional accounts by encrypting them using a cryptkey that is saved in the file .cryptkey + //When the password of the main account changes, SnappyMail asks the user for the old password to reencrypt the keys with the new userpassword. + //On a password change using ldap (or when the password has been forgotten by the user) this makes us some problems. Therefore overwrite + //the .cryptkey file in order to always accept the actual ldap password of the user. This has side effects on pgp keys! + //See https://github.com/the-djmaze/snappymail/issues/1570#issuecomment-2085528061 + if ($this->config->bool_overwrite_cryptkey) { + if (!$oActions->StorageProvider()->Put($oAccount, StorageType::ROOT, '.cryptkey', "")) { + $this->logger->Write("Could not overwrite the .cryptkey file!", \LOG_WARNING, self::LOG_KEY); + return $oActions->FalseResponse(__FUNCTION__); + } + } + + if (count($mailAddressResults) == 1) { + $this->logger->Write("Found only one match for user $username, no additional mail adresses found", \LOG_NOTICE, self::LOG_KEY); + //Write back the accounts even if no additional account was found. This ensures, that previous additional accounts are always removed + $oActions->SetAccounts($oAccount, $aAccounts); + return true; + } + foreach($mailAddressResults as $mailAddressResult) { $sUsername = $mailAddressResult->username; @@ -210,7 +228,18 @@ class LdapMailAccounts //if this fails the user will see the new mail addresses but will be asked for the correct password $sPass = new \SnappyMail\SensitiveString($oAccount->IncPassword()); //After creating the accounts here $sUsername is used as username to login to the IMAP server (see Account.php) - $oNewAccount = RainLoop\Model\AdditionalAccount::NewInstanceFromCredentials($oActions, $sEmail, $sUsername, $sPass); + //$oNewAccount = RainLoop\Model\AdditionalAccount::NewInstanceFromCredentials($oActions, $sEmail, $sUsername, $sPass); + + $oDomain = $oActions->DomainProvider()->Load($sDomain, false); + + $oNewAccount = new AdditionalAccount; + $oNewAccount->setCredentials( + $oDomain, + $sEmail, + $sUsername, + $sPass, + $sUsername + ); $aAccounts[$sEmail] = $oNewAccount->asTokenArray($oAccount); } diff --git a/plugins/ldap-mail-accounts/LdapMailAccountsConfig.php b/plugins/ldap-mail-accounts/LdapMailAccountsConfig.php index ab62ed58d..8b674e4f2 100644 --- a/plugins/ldap-mail-accounts/LdapMailAccountsConfig.php +++ b/plugins/ldap-mail-accounts/LdapMailAccountsConfig.php @@ -21,6 +21,7 @@ class LdapMailAccountsConfig public const CONFIG_FIELD_MAIL_ADDRESS_ADDITIONAL_ACCOUNT = "field_mail_address_additional_account"; public const CONFIG_BOOL_OVERWRITE_MAIL_ADDRESS_MAIN_ACCOUNT = "bool_overwrite_mail_address_main_account"; public const CONFIG_FIELD_MAIL_ADDRESS_MAIN_ACCOUNT = "field_mail_address_main_account"; + public const CONFIG_BOOL_OVERWRITE_CRYPTKEY = "bool_overwrite_cryptkey"; public $server; public $protocol; @@ -36,6 +37,7 @@ class LdapMailAccountsConfig public $field_mail_address_main_account; public $field_mail_address_additional_account; public $bool_overwrite_mail_address_main_account; + public $bool_overwrite_cryptkey; public static function MakeConfig(Plugin $config): LdapMailAccountsConfig { @@ -54,6 +56,7 @@ class LdapMailAccountsConfig $ldap->field_mail_address_additional_account = trim($config->Get("plugin", self::CONFIG_FIELD_MAIL_ADDRESS_ADDITIONAL_ACCOUNT)); $ldap->bool_overwrite_mail_address_main_account = $config->Get("plugin", self::CONFIG_BOOL_OVERWRITE_MAIL_ADDRESS_MAIN_ACCOUNT); $ldap->field_mail_address_main_account = trim($config->Get("plugin", self::CONFIG_FIELD_MAIL_ADDRESS_MAIN_ACCOUNT)); + $ldap->bool_overwrite_cryptkey = $config->Get("plugin", self::CONFIG_BOOL_OVERWRITE_CRYPTKEY); return $ldap; } diff --git a/plugins/ldap-mail-accounts/README.md b/plugins/ldap-mail-accounts/README.md index 8f7417e8b..d26d6302d 100644 --- a/plugins/ldap-mail-accounts/README.md +++ b/plugins/ldap-mail-accounts/README.md @@ -8,6 +8,8 @@ Version 2.0.0 changes the way additional mail accounts get their e-mail address: Now it is also possible to overwrite the mail address of the main account: if a user logs into SnappyMail with a username and SnappyMail added the configured default domain the mail address of the main account could have been some not existing address like "username@default-domain.com". This could have happend when using the Nextcloud SnappyMail integration that offers an automatic login using the Nextcloud username. The plugin now can be configured to overwrite the username or mail address used at login with a mail address found inside ldap. +Version 2.2.0 adds compatibility with SnappyMail 2.36.1 and later where some changes were introduced that made the plugin unusable. This version also adds the possibility to delete the .cryptkey file on evere login. For more information see the `Configuration` section below. + ### Configuration - Install and activate the plugin using the SnappyMail Admin Panel -> menu Extensions. - Click on the gear symbol beside the plugin to open the configration dialog. @@ -20,4 +22,8 @@ The plugin now can be configured to overwrite the username or mail address used Section `Overwrite mail address of main account` can be used to overwrite the username or mail address used at login with a value found in ldap. If activated, the username or mail address used at login will be looked up inside the `Username field` in ldap (for details see how a search for additional accounts is made). If the username is found, the value of the field `Mail address field for main account` will be used to overwrite the mail address of the main account. + `Overwrite user cryptkey` can be activated to prevent SnappyMail from asking the user for his old LDAP password when this password was changed or reseted. SnappyMail saves the passwords of the additional accounts by encrypting them using a cryptkey that is saved in the file `.cryptkey`. When the password of the main account changes, SnappyMail asks the user for the old password to reencrypt the keys with the new userpassword. + On a password change using ldap (or when the password has been forgotten by the user) this makes problems and asks the user to insert the old password. Therefore activating this option overwrites the .cryptkey file on login in order to always accept the actual ldap password of the user. + **ATTENTION:** This has side effects on pgp keys because these are also secured by the cryptkey and could therefore not be accessible anymore! See https://github.com/the-djmaze/snappymail/issues/1570#issuecomment-2085528061 . This has also an impact on additional mail accounts that aren't created by this plugin because without the cryptkey saved passwords of additional mail accounts can not be decrypted anymore. + **Important:** SnappyMail normally needs a mail address as username. This plugin handles some special circumstances (login with an ldap username, not a mail address) so that you can login to your IMAP server with the ldap username but send mails with a mail address connected to this ldap user. diff --git a/plugins/ldap-mail-accounts/index.php b/plugins/ldap-mail-accounts/index.php index a6063c640..68d802503 100644 --- a/plugins/ldap-mail-accounts/index.php +++ b/plugins/ldap-mail-accounts/index.php @@ -12,11 +12,11 @@ class LdapMailAccountsPlugin extends AbstractPlugin { const NAME = 'LDAP Mail Accounts', - VERSION = '2.1.1', + VERSION = '2.2.0', AUTHOR = 'cm-schl', URL = 'https://github.com/cm-sch', - RELEASE = '2024-03-16', - REQUIRED = '2.35.3', + RELEASE = '2024-05-28', + REQUIRED = '2.36.1', CATEGORY = 'Accounts', DESCRIPTION = 'Add additional mail accounts the SnappyMail user has access to by a LDAP query. Basing on the work of FWest98 (https://github.com/FWest98).'; @@ -40,11 +40,13 @@ class LdapMailAccountsPlugin extends AbstractPlugin * Overwrite the MainAccount mail address by looking up the new one in the ldap directory * * @param string &$sEmail - * @param string &$sLogin + * @param string &$sImapUser + * @param string &$sPassword + * @param string &$sSmtpUser */ - public function overwriteMainAccountEmail(&$sEmail, &$sLogin) + public function overwriteMainAccountEmail(&$sEmail, &$sImapUser, &$sPassword, &$sSmtpUser) { - $this->Manager()->Actions()->Logger()->Write("Login DATA: login: $sLogin email: $sEmail", \LOG_WARNING, "LDAP MAIL ACCOUNTS PLUGIN"); + $this->Manager()->Actions()->Logger()->Write("Login DATA: login: $sImapUser email: $sEmail", \LOG_WARNING, "LDAP MAIL ACCOUNTS PLUGIN"); // Set up config $config = LdapMailAccountsConfig::MakeConfig($this->Config()); @@ -52,10 +54,10 @@ class LdapMailAccountsPlugin extends AbstractPlugin if ($config->bool_overwrite_mail_address_main_account) { $oldapMailAccounts = new LdapMailAccounts($config, $this->Manager()->Actions()->Logger()); - $oldapMailAccounts->overwriteEmail($sEmail, $sLogin); + $oldapMailAccounts->overwriteEmail($sEmail); } - $this->Manager()->Actions()->Logger()->Write("Login DATA: login: $sLogin email: $sEmail", \LOG_WARNING, "LDAP MAIL ACCOUNTS PLUGIN"); + $this->Manager()->Actions()->Logger()->Write("Login DATA: login: $sImapUser email: $sEmail", \LOG_WARNING, "LDAP MAIL ACCOUNTS PLUGIN"); } // Function gets called by RainLoop/Actions/User.php @@ -92,6 +94,17 @@ class LdapMailAccountsPlugin extends AbstractPlugin ->SetDefaultValue("mail"), ]); + $groupAdditionalSettings = new \RainLoop\Plugins\PropertyCollection('Additional settings'); + $groupAdditionalSettings->exchangeArray([ + \RainLoop\Plugins\Property::NewInstance(LdapMailAccountsConfig::CONFIG_BOOL_OVERWRITE_CRYPTKEY)->SetLabel('Overwrite user cryptkey') + ->SetType(\RainLoop\Enumerations\PluginPropertyType::BOOL) + ->SetDescription("SnappyMail saves the passwords of the additional accounts by encrypting them using a cryptkey that is saved in the file \".cryptkey\". When the password of the main account changes, SnappyMail asks the user for the old password to reencrypt the keys with the new userpassword. + \nOn a password change using ldap (or when the password has been forgotten by the user) this makes problems and asks the user to insert the old password. Therefore activating this option overwrites the .cryptkey file on login in order to always accept the actual ldap password of the user. + \nATTENTION: This has side effects on pgp keys because these are also secured by the cryptkey and could therefore not be accessible anymore! + \nSee https://github.com/the-djmaze/snappymail/issues/1570#issuecomment-2085528061") + ->SetDefaultValue(false), + ]); + return [ \RainLoop\Plugins\Property::NewInstance(LdapMailAccountsConfig::CONFIG_SERVER) ->SetLabel("LDAP Server URL") @@ -171,8 +184,9 @@ class LdapMailAccountsPlugin extends AbstractPlugin ->SetDescription("The field containing the default sender name of the found additional mail account.") ->SetDefaultValue("displayName"), - $groupOverwriteMainAccount + $groupOverwriteMainAccount, + $groupAdditionalSettings ]; } } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Settings.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Settings.php index b634bb6af..8993a051b 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Settings.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Settings.php @@ -33,7 +33,9 @@ class Settings extends \MailSo\Net\ConnectSettings $message_all_headers = false; public string - $search_filter = ''; + $search_filter = '', + $spam_headers = 'rspamd,spamassassin,bogofilter', + $virus_headers = 'rspamd,clamav'; public array $disabled_capabilities = []; @@ -41,6 +43,8 @@ class Settings extends \MailSo\Net\ConnectSettings public static function fromArray(array $aSettings) : self { $object = parent::fromArray($aSettings); + + // Boolean options $options = [ 'expunge_all_on_delete', 'fast_simple_search', @@ -53,6 +57,8 @@ class Settings extends \MailSo\Net\ConnectSettings $object->$option = !empty($aSettings[$option]); } } + + // Integer options $options = [ // 'body_text_limit', // 'folder_list_limit', @@ -65,6 +71,18 @@ class Settings extends \MailSo\Net\ConnectSettings } } + // String options + $options = [ + 'search_filter', + 'spam_headers', + 'virus_headers', + ]; + foreach ($options as $option) { + if (isset($aSettings[$option])) { + $object->$option = (string) $aSettings[$option]; + } + } + if (!empty($aSettings['disabled_capabilities']) && \is_array($aSettings['disabled_capabilities'])) { $object->disabled_capabilities = $aSettings['disabled_capabilities']; } @@ -119,6 +137,8 @@ class Settings extends \MailSo\Net\ConnectSettings 'message_all_headers' => $this->message_all_headers, 'message_list_limit' => $this->message_list_limit, 'search_filter' => $this->search_filter, + 'spam_headers' => $this->spam_headers, + 'virus_headers' => $this->virus_headers, // 'thread_limit' => $this->thread_limit 'disabled_capabilities' => \array_values(\array_unique($this->disabled_capabilities)) ] diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php index d0ddda7d4..a34dfdf0d 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php @@ -76,19 +76,33 @@ class MailClient MimeHeader::X_DKIM_AUTHENTICATION_RESULTS, MimeHeader::LIST_UNSUBSCRIBE, // https://autocrypt.org/level1.html#the-autocrypt-header - MimeHeader::AUTOCRYPT, - // SPAM - MimeHeader::X_SPAM_STATUS, - MimeHeader::X_SPAM_FLAG, - MimeHeader::X_SPAM_INFO, - MimeHeader::X_SPAMD_RESULT, - MimeHeader::X_BOGOSITY, - // Virus - MimeHeader::X_VIRUS, - MimeHeader::X_VIRUS_SCANNED, - MimeHeader::X_VIRUS_STATUS + MimeHeader::AUTOCRYPT ); + // SPAM + $spam_headers = \explode(',', $this->oImapClient->Settings->spam_headers); + if (\in_array('rspamd', $spam_headers)) { + $aHeaders[] = MimeHeader::X_SPAMD_RESULT; + } + if (\in_array('spamassassin', $spam_headers)) { + $aHeaders[] = MimeHeader::X_SPAM_STATUS; + $aHeaders[] = MimeHeader::X_SPAM_FLAG; + $aHeaders[] = MimeHeader::X_SPAM_INFO; + } + if (\in_array('bogofilter', $spam_headers)) { + $aHeaders[] = MimeHeader::X_BOGOSITY; + } + + // Virus + $virus_headers = \explode(',', $this->oImapClient->Settings->virus_headers); + if (\in_array('rspamd', $virus_headers)) { + $aHeaders[] = MimeHeader::X_VIRUS; + } + if (\in_array('clamav', $virus_headers)) { + $aHeaders[] = MimeHeader::X_VIRUS_SCANNED; + $aHeaders[] = MimeHeader::X_VIRUS_STATUS; + } + \RainLoop\Api::Actions()->Plugins()->RunHook('imap.message-headers', array(&$aHeaders)); return FetchType::BuildBodyCustomHeaderRequest($aHeaders, true); diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php index b63be576c..8f6668704 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php @@ -506,7 +506,9 @@ class Message implements \JsonSerializable 'spamScore' => $this->bIsSpam ? 100 : $this->SpamScore, 'spamResult' => $this->sSpamResult, 'isSpam' => $this->bIsSpam, + // RainLoop had the date_from_headers option 'dateTimestamp' => $this->iHeaderTimeStampInUTC ?: $this->iInternalTimeStampInUTC, + 'dateTimestampSource' => $this->iHeaderTimeStampInUTC ? 'header' : 'internal', // \MailSo\Mime\EmailCollection 'from' => $this->oFrom, diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/AdminDomains.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/AdminDomains.php index 2b3c71223..e8579308f 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/AdminDomains.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/AdminDomains.php @@ -67,8 +67,9 @@ trait AdminDomains $this->GetActionParam('username'), new \SnappyMail\SensitiveString('********') ); + $sEmail = $sCredentials['email']; return $this->DefaultResponse(array( - 'email' => $sCredentials['email'], + 'email' => $sEmail, 'login' => $sCredentials['imapUser'], 'domain' => $sCredentials['domain'], 'whitelist' => $sCredentials['domain'] ? $sCredentials['domain']->ValidateWhiteList($sEmail) : null diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php index aa479feaa..1d2c6489f 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php @@ -96,7 +96,7 @@ class Application extends \RainLoop\Config\AbstractConfig { // Workarounds for the changed application structure if ('webmail' === $sSectionKey) { - if ('language_admin' === $sSectionKey) { + if ('language_admin' === $sParamKey) { $sSectionKey = 'admin_panel'; $sParamKey = 'language'; } @@ -137,6 +137,16 @@ class Application extends \RainLoop\Config\AbstractConfig $sParamKey = 'json_response_write_limit'; } } + if ('language' === $sParamKey) { + $aLang = \SnappyMail\L10n::getLanguages('admin_panel' === $sSectionKey); + $sLanguage = \strtr($mParamValue, '_', '-'); + if (!\in_array($sLanguage, $aLang)) { + if (\str_contains($sLanguage, '-')) { + $sLanguage = \strtok($sLanguage, '-'); + } + } + $mParamValue = \in_array($sLanguage, $aLang) ? $sLanguage : 'en'; + } parent::Set($sSectionKey, $sParamKey, $mParamValue); } diff --git a/snappymail/v/0.0.0/app/localization/ar/user.json b/snappymail/v/0.0.0/app/localization/ar/user.json index 3380bc39b..04cc8a010 100644 --- a/snappymail/v/0.0.0/app/localization/ar/user.json +++ b/snappymail/v/0.0.0/app/localization/ar/user.json @@ -59,12 +59,12 @@ "UNSEEN": "لم يقرأ", "DATE": "التاريخ", "DATE_ALL": "الكل", - "DATE_3_DAYS": "منذ 3 أيام", - "DATE_7_DAYS": "منذ أسبوع", - "DATE_MONTH": "منذ شهر", - "DATE_3_MONTHS": "منذ 3 أشهر", - "DATE_6_MONTHS": "منذ 6 أشهر", - "DATE_YEAR": "منذ سنة", + "SINCE_3_DAYS": "منذ 3 أيام", + "SINCE_7_DAYS": "منذ أسبوع", + "SINCE_MONTH": "منذ شهر", + "SINCE_3_MONTHS": "منذ 3 أشهر", + "SINCE_6_MONTHS": "منذ 6 أشهر", + "SINCE_YEAR": "منذ سنة", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/be/admin.json b/snappymail/v/0.0.0/app/localization/be/admin.json index a24fea3e2..8fe050a3b 100644 --- a/snappymail/v/0.0.0/app/localization/be/admin.json +++ b/snappymail/v/0.0.0/app/localization/be/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Назад", "BUTTON_UPDATE": "Абнавіць", "NEW_DOMAIN_DESC": "Гэтая канфігурацыя дазволіць вам працаваць з %NAME%<\/strong> адрасамі.", - "WHITE_LIST_ALERT": "Спіс карыстальнікаў дамена да якіх дазволены доступ.\nВыкарыстоўвайце прабел у якасці раздзяляльніка.\n" + "WHITE_LIST_ALERT": "Спіс карыстальнікаў дамена да якіх дазволены доступ.\nВыкарыстоўвайце прабел у якасці раздзяляльніка.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Убудова", diff --git a/snappymail/v/0.0.0/app/localization/be/user.json b/snappymail/v/0.0.0/app/localization/be/user.json index 80de12487..ef91525b8 100644 --- a/snappymail/v/0.0.0/app/localization/be/user.json +++ b/snappymail/v/0.0.0/app/localization/be/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Непрачытаныя", "DATE": "Дата", "DATE_ALL": "За ўвесь час", - "DATE_3_DAYS": "За тры дні", - "DATE_7_DAYS": "За тыдзень", - "DATE_MONTH": "За месяц", - "DATE_3_MONTHS": "За 3 месяцы", - "DATE_6_MONTHS": "За паўгода", - "DATE_YEAR": "За год", + "SINCE_3_DAYS": "За тры дні", + "SINCE_7_DAYS": "За тыдзень", + "SINCE_MONTH": "За месяц", + "SINCE_3_MONTHS": "За 3 месяцы", + "SINCE_6_MONTHS": "За паўгода", + "SINCE_YEAR": "За год", "SUBFOLDERS": "Падкаталогі", "SUBFOLDERS_NONE": "Нічога", "SUBFOLDERS_SUBTREE": "Усе", diff --git a/snappymail/v/0.0.0/app/localization/bg/user.json b/snappymail/v/0.0.0/app/localization/bg/user.json index eda2431bd..732cd817f 100644 --- a/snappymail/v/0.0.0/app/localization/bg/user.json +++ b/snappymail/v/0.0.0/app/localization/bg/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Невидяно", "DATE": "Дата", "DATE_ALL": "Всички", - "DATE_3_DAYS": "До 3 дена", - "DATE_7_DAYS": "До 1 седмица", - "DATE_MONTH": "До 1 месец", - "DATE_3_MONTHS": "До 3 месеца", - "DATE_6_MONTHS": "До 6 месеца", - "DATE_YEAR": "До 1 година", + "SINCE_3_DAYS": "До 3 дена", + "SINCE_7_DAYS": "До 1 седмица", + "SINCE_MONTH": "До 1 месец", + "SINCE_3_MONTHS": "До 3 месеца", + "SINCE_6_MONTHS": "До 6 месеца", + "SINCE_YEAR": "До 1 година", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/cs/admin.json b/snappymail/v/0.0.0/app/localization/cs/admin.json index e6463e4ba..1886c8f48 100644 --- a/snappymail/v/0.0.0/app/localization/cs/admin.json +++ b/snappymail/v/0.0.0/app/localization/cs/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Zpět", "BUTTON_UPDATE": "Aktualizovat", "NEW_DOMAIN_DESC": "Konfigurace této domény umožní používat %NAME%<\/strong> adresy.", - "WHITE_LIST_ALERT": "Seznam domén s povoleným uživatelským přístupem\nPoužijte mezeru pro jejich oddělení.\n" + "WHITE_LIST_ALERT": "Seznam domén s povoleným uživatelským přístupem\nPoužijte mezeru pro jejich oddělení.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Plugin", diff --git a/snappymail/v/0.0.0/app/localization/cs/user.json b/snappymail/v/0.0.0/app/localization/cs/user.json index 18ee120c3..13f12f16b 100644 --- a/snappymail/v/0.0.0/app/localization/cs/user.json +++ b/snappymail/v/0.0.0/app/localization/cs/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Nepřečtené", "DATE": "Datum", "DATE_ALL": "Kdykoliv", - "DATE_3_DAYS": "Ne starší než 3 dny", - "DATE_7_DAYS": "Ne starší než týden", - "DATE_MONTH": "Ne starší než měsíc", - "DATE_3_MONTHS": "Ne starší než 3 měsíce", - "DATE_6_MONTHS": "Ne starší než 6 měsíců", - "DATE_YEAR": "Ne starší než 1 rok", + "SINCE_3_DAYS": "Ne starší než 3 dny", + "SINCE_7_DAYS": "Ne starší než týden", + "SINCE_MONTH": "Ne starší než měsíc", + "SINCE_3_MONTHS": "Ne starší než 3 měsíce", + "SINCE_6_MONTHS": "Ne starší než 6 měsíců", + "SINCE_YEAR": "Ne starší než 1 rok", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/da/admin.json b/snappymail/v/0.0.0/app/localization/da/admin.json index 456b68c83..e4c02d4bb 100644 --- a/snappymail/v/0.0.0/app/localization/da/admin.json +++ b/snappymail/v/0.0.0/app/localization/da/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Tilbage", "BUTTON_UPDATE": "Opdater", "NEW_DOMAIN_DESC": "Denne domæne konfiguration tillader %NAME%<\/strong> e-mail adresser.", - "WHITE_LIST_ALERT": "Liste med godkendte domæne for webmail opsætning.\nBrug mellemrum til at separere domæner.\n" + "WHITE_LIST_ALERT": "Liste med godkendte domæne for webmail opsætning.\nBrug mellemrum til at separere domæner.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Tilføjelse", diff --git a/snappymail/v/0.0.0/app/localization/da/user.json b/snappymail/v/0.0.0/app/localization/da/user.json index e5c0faf79..fde109519 100644 --- a/snappymail/v/0.0.0/app/localization/da/user.json +++ b/snappymail/v/0.0.0/app/localization/da/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Ulæst", "DATE": "Dato", "DATE_ALL": "Alle", - "DATE_3_DAYS": "Nyere end 3 dage", - "DATE_7_DAYS": "Nyere end 1 uge", - "DATE_MONTH": "Nyere end 1 måned", - "DATE_3_MONTHS": "Nyere end 3 måneder", - "DATE_6_MONTHS": "Nyere end 6 måneder", - "DATE_YEAR": "Nyere end 1 år", + "SINCE_3_DAYS": "Nyere end 3 dage", + "SINCE_7_DAYS": "Nyere end 1 uge", + "SINCE_MONTH": "Nyere end 1 måned", + "SINCE_3_MONTHS": "Nyere end 3 måneder", + "SINCE_6_MONTHS": "Nyere end 6 måneder", + "SINCE_YEAR": "Nyere end 1 år", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/de/admin.json b/snappymail/v/0.0.0/app/localization/de/admin.json index 2eb764006..fc819cc2f 100644 --- a/snappymail/v/0.0.0/app/localization/de/admin.json +++ b/snappymail/v/0.0.0/app/localization/de/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Zurück", "BUTTON_UPDATE": "Aktualisieren", "NEW_DOMAIN_DESC": "Diese Domain Konfiguration wird es dir möglich machen mit %NAME%<\/strong> Mailadressen zu arbeiten.", - "WHITE_LIST_ALERT": "Liste der User, die Webmail abrufen darf.\nVerwenden Sie Leerzeichen als Trennsymbol." + "WHITE_LIST_ALERT": "Liste der User, die Webmail abrufen darf.\nVerwenden Sie Leerzeichen als Trennsymbol.", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Erweiterung", diff --git a/snappymail/v/0.0.0/app/localization/de/user.json b/snappymail/v/0.0.0/app/localization/de/user.json index 2a035171c..2aaf55d7c 100644 --- a/snappymail/v/0.0.0/app/localization/de/user.json +++ b/snappymail/v/0.0.0/app/localization/de/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Ungelesen", "DATE": "Datum", "DATE_ALL": "Alle", - "DATE_3_DAYS": "Nicht älter als 3 Tage", - "DATE_7_DAYS": "Nicht älter als 1 Woche", - "DATE_MONTH": "Nicht älter als 1 Monat", - "DATE_3_MONTHS": "Nicht älter als 3 Monate", - "DATE_6_MONTHS": "Nicht älter als 6 Monate", - "DATE_YEAR": "Nicht älter als 1 Jahr", + "SINCE_3_DAYS": "Nicht älter als 3 Tage", + "SINCE_7_DAYS": "Nicht älter als 1 Woche", + "SINCE_MONTH": "Nicht älter als 1 Monat", + "SINCE_3_MONTHS": "Nicht älter als 3 Monate", + "SINCE_6_MONTHS": "Nicht älter als 6 Monate", + "SINCE_YEAR": "Nicht älter als 1 Jahr", "SUBFOLDERS": "Unterordner", "SUBFOLDERS_NONE": "Keine", "SUBFOLDERS_SUBTREE": "Alle", diff --git a/snappymail/v/0.0.0/app/localization/el/user.json b/snappymail/v/0.0.0/app/localization/el/user.json index 5b18f8336..8e10deab0 100644 --- a/snappymail/v/0.0.0/app/localization/el/user.json +++ b/snappymail/v/0.0.0/app/localization/el/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Δεν έχουν διαβαστεί", "DATE": "Ημερομηνία", "DATE_ALL": "Όλα", - "DATE_3_DAYS": "Έως 3 ημέρες πρίν", - "DATE_7_DAYS": "Έως 1 εβδομάδα πριν", - "DATE_MONTH": "Έως 1 μήνα πριν", - "DATE_3_MONTHS": "Έως 3 μήνες πριν", - "DATE_6_MONTHS": "Έως 6 μήνες πριν", - "DATE_YEAR": "Έως 1 χρόνο πριν", + "SINCE_3_DAYS": "Έως 3 ημέρες πρίν", + "SINCE_7_DAYS": "Έως 1 εβδομάδα πριν", + "SINCE_MONTH": "Έως 1 μήνα πριν", + "SINCE_3_MONTHS": "Έως 3 μήνες πριν", + "SINCE_6_MONTHS": "Έως 6 μήνες πριν", + "SINCE_YEAR": "Έως 1 χρόνο πριν", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/en/admin.json b/snappymail/v/0.0.0/app/localization/en/admin.json index a4f93ed8c..51b161a0a 100644 --- a/snappymail/v/0.0.0/app/localization/en/admin.json +++ b/snappymail/v/0.0.0/app/localization/en/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Back", "BUTTON_UPDATE": "Update", "NEW_DOMAIN_DESC": "This domain configuration will allow you to work with %NAME%<\/strong> email addresses.", - "WHITE_LIST_ALERT": "List of domain users webmail is allowed to access.\nUse a space as delimiter.\n" + "WHITE_LIST_ALERT": "List of domain users webmail is allowed to access.\nUse a space as delimiter.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Extension", diff --git a/snappymail/v/0.0.0/app/localization/en/user.json b/snappymail/v/0.0.0/app/localization/en/user.json index 813ff0d6a..40100067e 100644 --- a/snappymail/v/0.0.0/app/localization/en/user.json +++ b/snappymail/v/0.0.0/app/localization/en/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Unseen", "DATE": "Date", "DATE_ALL": "All", - "DATE_3_DAYS": "Up to 3 days old", - "DATE_7_DAYS": "Up to 1 week old", - "DATE_MONTH": "Up to 1 month old", - "DATE_3_MONTHS": "Up to 3 months old", - "DATE_6_MONTHS": "Up to 6 months old", - "DATE_YEAR": "Up to 1 year old", + "SINCE_3_DAYS": "Up to 3 days old", + "SINCE_7_DAYS": "Up to 1 week old", + "SINCE_MONTH": "Up to 1 month old", + "SINCE_3_MONTHS": "Up to 3 months old", + "SINCE_6_MONTHS": "Up to 6 months old", + "SINCE_YEAR": "Up to 1 year old", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/es/admin.json b/snappymail/v/0.0.0/app/localization/es/admin.json index ea0968ef4..8da630466 100644 --- a/snappymail/v/0.0.0/app/localization/es/admin.json +++ b/snappymail/v/0.0.0/app/localization/es/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Volver", "BUTTON_UPDATE": "Actualizar", "NEW_DOMAIN_DESC": "Esta configuración de Dominio le permitirá trabajar con direcciones de correo tipo @%NAME%<\/strong>.", - "WHITE_LIST_ALERT": "Lista de dominios con que los usuarios pueden ingresar.\nUse un espacio como delimitador.\n" + "WHITE_LIST_ALERT": "Lista de dominios con que los usuarios pueden ingresar.\nUse un espacio como delimitador.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Extensión", diff --git a/snappymail/v/0.0.0/app/localization/es/user.json b/snappymail/v/0.0.0/app/localization/es/user.json index ce45058d0..87e859f42 100644 --- a/snappymail/v/0.0.0/app/localization/es/user.json +++ b/snappymail/v/0.0.0/app/localization/es/user.json @@ -59,12 +59,12 @@ "UNSEEN": "No leído", "DATE": "Fecha", "DATE_ALL": "Todo", - "DATE_3_DAYS": "Hasta 3 días de antigüedad", - "DATE_7_DAYS": "Hasta una semana de antigüedad", - "DATE_MONTH": "Hasta 1 mes de antigüedad", - "DATE_3_MONTHS": "Hasta 3 meses de antigüedad", - "DATE_6_MONTHS": "Hasta 6 meses de antigüedad", - "DATE_YEAR": "Hasta 1 año de antigüedad", + "SINCE_3_DAYS": "Hasta 3 días de antigüedad", + "SINCE_7_DAYS": "Hasta una semana de antigüedad", + "SINCE_MONTH": "Hasta 1 mes de antigüedad", + "SINCE_3_MONTHS": "Hasta 3 meses de antigüedad", + "SINCE_6_MONTHS": "Hasta 6 meses de antigüedad", + "SINCE_YEAR": "Hasta 1 año de antigüedad", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/et/user.json b/snappymail/v/0.0.0/app/localization/et/user.json index b46fcbde3..23e71b0a9 100644 --- a/snappymail/v/0.0.0/app/localization/et/user.json +++ b/snappymail/v/0.0.0/app/localization/et/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Lugemata", "DATE": "Kuupäev", "DATE_ALL": "Kõik", - "DATE_3_DAYS": "Kuni 3 päeva vanune", - "DATE_7_DAYS": "Kuni 1 nädal vanune", - "DATE_MONTH": "Kuni 1 kuu vanune", - "DATE_3_MONTHS": "Kuni 3 kuu vanune ", - "DATE_6_MONTHS": "Kuni 6 kuu vanune", - "DATE_YEAR": "Kuni 1 aasta vanune", + "SINCE_3_DAYS": "Kuni 3 päeva vanune", + "SINCE_7_DAYS": "Kuni 1 nädal vanune", + "SINCE_MONTH": "Kuni 1 kuu vanune", + "SINCE_3_MONTHS": "Kuni 3 kuu vanune ", + "SINCE_6_MONTHS": "Kuni 6 kuu vanune", + "SINCE_YEAR": "Kuni 1 aasta vanune", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/eu/admin.json b/snappymail/v/0.0.0/app/localization/eu/admin.json index b73136303..6fdeb5d18 100644 --- a/snappymail/v/0.0.0/app/localization/eu/admin.json +++ b/snappymail/v/0.0.0/app/localization/eu/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Atzera", "BUTTON_UPDATE": "Eguneratu", "NEW_DOMAIN_DESC": "Domeinu honen konfigurazioak %NAME%<\/strong> email kontuarekin lan egitea ahalbideratuko dizu.", - "WHITE_LIST_ALERT": "Webmailak sartzeko baimena duen domeinuko erabiltzaileen zerrenda.\nErabili hutsunea banatzaile bezala.\n" + "WHITE_LIST_ALERT": "Webmailak sartzeko baimena duen domeinuko erabiltzaileen zerrenda.\nErabili hutsunea banatzaile bezala.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Gehigarria", diff --git a/snappymail/v/0.0.0/app/localization/eu/user.json b/snappymail/v/0.0.0/app/localization/eu/user.json index ad269ed8f..699295a52 100644 --- a/snappymail/v/0.0.0/app/localization/eu/user.json +++ b/snappymail/v/0.0.0/app/localization/eu/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Irakurri gabe", "DATE": "Data", "DATE_ALL": "Denak", - "DATE_3_DAYS": "3 egun arterakoak", - "DATE_7_DAYS": "Astebetako arterakoak", - "DATE_MONTH": "Hilabete arterakoak", - "DATE_3_MONTHS": "3 hilabete arterakoak", - "DATE_6_MONTHS": "6 hilabete arterakoak", - "DATE_YEAR": "Urtebete arterakoak", + "SINCE_3_DAYS": "3 egun arterakoak", + "SINCE_7_DAYS": "Astebetako arterakoak", + "SINCE_MONTH": "Hilabete arterakoak", + "SINCE_3_MONTHS": "3 hilabete arterakoak", + "SINCE_6_MONTHS": "6 hilabete arterakoak", + "SINCE_YEAR": "Urtebete arterakoak", "SUBFOLDERS": "Azpikarpetak", "SUBFOLDERS_NONE": "Bat ere ez", "SUBFOLDERS_SUBTREE": "Denak", diff --git a/snappymail/v/0.0.0/app/localization/fa/admin.json b/snappymail/v/0.0.0/app/localization/fa/admin.json index 8446324f7..1e34a9793 100644 --- a/snappymail/v/0.0.0/app/localization/fa/admin.json +++ b/snappymail/v/0.0.0/app/localization/fa/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "برگشت", "BUTTON_UPDATE": "بروزرسانی", "NEW_DOMAIN_DESC": "این تنظیمات دامنه به شما اجازه کار کردن با پست الکترونیک %NAME%<\/strong> را می‌دهد.", - "WHITE_LIST_ALERT": "لیستی از دامنه‌ها که کاربران وب‌میل می‌توانند به آنها دسترسی داشته باشند.\nاز فاصله جهت جدا کردن استفاده کنید.\n" + "WHITE_LIST_ALERT": "لیستی از دامنه‌ها که کاربران وب‌میل می‌توانند به آنها دسترسی داشته باشند.\nاز فاصله جهت جدا کردن استفاده کنید.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "افزونه", diff --git a/snappymail/v/0.0.0/app/localization/fa/user.json b/snappymail/v/0.0.0/app/localization/fa/user.json index 11b3ffbc2..8a5c6d0a8 100644 --- a/snappymail/v/0.0.0/app/localization/fa/user.json +++ b/snappymail/v/0.0.0/app/localization/fa/user.json @@ -59,12 +59,12 @@ "UNSEEN": "خوانده نشده", "DATE": "تاریخ", "DATE_ALL": "همه", - "DATE_3_DAYS": "تا 3 روز گذشته", - "DATE_7_DAYS": "تا 1 هفته گذشته", - "DATE_MONTH": "تا 1 ماه گذشته", - "DATE_3_MONTHS": "تا 3 ماه گذشته", - "DATE_6_MONTHS": "تا 6 ماه گذشته", - "DATE_YEAR": "تا 1 سال گذشته", + "SINCE_3_DAYS": "تا 3 روز گذشته", + "SINCE_7_DAYS": "تا 1 هفته گذشته", + "SINCE_MONTH": "تا 1 ماه گذشته", + "SINCE_3_MONTHS": "تا 3 ماه گذشته", + "SINCE_6_MONTHS": "تا 6 ماه گذشته", + "SINCE_YEAR": "تا 1 سال گذشته", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/fi/admin.json b/snappymail/v/0.0.0/app/localization/fi/admin.json index a3f488b01..0995d048b 100644 --- a/snappymail/v/0.0.0/app/localization/fi/admin.json +++ b/snappymail/v/0.0.0/app/localization/fi/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Takaisin", "BUTTON_UPDATE": "Päivitä", "NEW_DOMAIN_DESC": "Tämän verkkotunnuksen asetukset sallivat käyttää %NAME% säkhöpostiosoitteita.", - "WHITE_LIST_ALERT": "Lista domain käyttäjistä joihin webmaililla on oikeus.\nErottele välilyönnillä.\n" + "WHITE_LIST_ALERT": "Lista domain käyttäjistä joihin webmaililla on oikeus.\nErottele välilyönnillä.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Lisäosa", diff --git a/snappymail/v/0.0.0/app/localization/fi/user.json b/snappymail/v/0.0.0/app/localization/fi/user.json index 06379e0e2..16099cca8 100644 --- a/snappymail/v/0.0.0/app/localization/fi/user.json +++ b/snappymail/v/0.0.0/app/localization/fi/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Ei luettu", "DATE": "Pvm", "DATE_ALL": "Kaikki", - "DATE_3_DAYS": "3 päivän ajalta", - "DATE_7_DAYS": "1 viikon ajalta", - "DATE_MONTH": "1 kk ajalta", - "DATE_3_MONTHS": "3 kk ajalta", - "DATE_6_MONTHS": "6 kk ajalta", - "DATE_YEAR": "1 vuoden ajalta", + "SINCE_3_DAYS": "3 päivän ajalta", + "SINCE_7_DAYS": "1 viikon ajalta", + "SINCE_MONTH": "1 kk ajalta", + "SINCE_3_MONTHS": "3 kk ajalta", + "SINCE_6_MONTHS": "6 kk ajalta", + "SINCE_YEAR": "1 vuoden ajalta", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/fr/admin.json b/snappymail/v/0.0.0/app/localization/fr/admin.json index cc39ae1e2..83afedfe1 100644 --- a/snappymail/v/0.0.0/app/localization/fr/admin.json +++ b/snappymail/v/0.0.0/app/localization/fr/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Retour", "BUTTON_UPDATE": "Modifier", "NEW_DOMAIN_DESC": "Cette configuration de domaine vous permettra de travailler avec %NAME%<\/strong> dans les adresses électroniques.", - "WHITE_LIST_ALERT": "Liste des utilisateurs du domaine auxquels le webmail est autorisé à accéder.\nUtilisez un espace comme séparateur." + "WHITE_LIST_ALERT": "Liste des utilisateurs du domaine auxquels le webmail est autorisé à accéder.\nUtilisez un espace comme séparateur.", + "VALID_SPAM_HEADERS": "En-têtes SPAM valides", + "VALID_VIRUS_HEADERS": "En-têtes de virus valides" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Extension", diff --git a/snappymail/v/0.0.0/app/localization/fr/user.json b/snappymail/v/0.0.0/app/localization/fr/user.json index eabca47b5..0fb96e800 100644 --- a/snappymail/v/0.0.0/app/localization/fr/user.json +++ b/snappymail/v/0.0.0/app/localization/fr/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Non lu", "DATE": "Date", "DATE_ALL": "Tous", - "DATE_3_DAYS": "Jusqu'à 3 jours", - "DATE_7_DAYS": "Jusqu'à 1 semaine", - "DATE_MONTH": "Jusqu'à 1 mois", - "DATE_3_MONTHS": "Jusqu'à 3 mois", - "DATE_6_MONTHS": "Jusqu'à 6 mois", - "DATE_YEAR": "Jusqu'à 1 an", + "SINCE_3_DAYS": "Jusqu'à 3 jours", + "SINCE_7_DAYS": "Jusqu'à 1 semaine", + "SINCE_MONTH": "Jusqu'à 1 mois", + "SINCE_3_MONTHS": "Jusqu'à 3 mois", + "SINCE_6_MONTHS": "Jusqu'à 6 mois", + "SINCE_YEAR": "Jusqu'à 1 an", "SUBFOLDERS": "Sous-dossiers", "SUBFOLDERS_NONE": "Aucun", "SUBFOLDERS_SUBTREE": "Tous", diff --git a/snappymail/v/0.0.0/app/localization/hu/admin.json b/snappymail/v/0.0.0/app/localization/hu/admin.json index aa8a81618..37b4c9bd6 100644 --- a/snappymail/v/0.0.0/app/localization/hu/admin.json +++ b/snappymail/v/0.0.0/app/localization/hu/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Vissza", "BUTTON_UPDATE": "Frissítés", "NEW_DOMAIN_DESC": "Ez a domain konfiguráció lehetővé teszi a %NAME%<\/strong> email címek használatát.", - "WHITE_LIST_ALERT": "Hozzáféréshez engedélyezett domainek listája.\nElválasztáshoz használd a szóközt.\n" + "WHITE_LIST_ALERT": "Hozzáféréshez engedélyezett domainek listája.\nElválasztáshoz használd a szóközt.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Bővítményt", diff --git a/snappymail/v/0.0.0/app/localization/hu/user.json b/snappymail/v/0.0.0/app/localization/hu/user.json index 21626341e..586dc6787 100644 --- a/snappymail/v/0.0.0/app/localization/hu/user.json +++ b/snappymail/v/0.0.0/app/localization/hu/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Észrevétlen", "DATE": "Dátum", "DATE_ALL": "Összes", - "DATE_3_DAYS": "Legfeljebb 3 napos", - "DATE_7_DAYS": "Legfeljebb 1 hetes", - "DATE_MONTH": "Legfeljebb 1 hónapos", - "DATE_3_MONTHS": "Legfeljebb 3 hónapos", - "DATE_6_MONTHS": "Legfeljebb 6 hónapos", - "DATE_YEAR": "Legfeljebb 1 éves", + "SINCE_3_DAYS": "Legfeljebb 3 napos", + "SINCE_7_DAYS": "Legfeljebb 1 hetes", + "SINCE_MONTH": "Legfeljebb 1 hónapos", + "SINCE_3_MONTHS": "Legfeljebb 3 hónapos", + "SINCE_6_MONTHS": "Legfeljebb 6 hónapos", + "SINCE_YEAR": "Legfeljebb 1 éves", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/id/admin.json b/snappymail/v/0.0.0/app/localization/id/admin.json index 190be9131..37b891a5a 100644 --- a/snappymail/v/0.0.0/app/localization/id/admin.json +++ b/snappymail/v/0.0.0/app/localization/id/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Kembali", "BUTTON_UPDATE": "Perbarui", "NEW_DOMAIN_DESC": "Domain ini mengizinkan anda bekerja dengan alamat email juga%NAME%<\/strong> ", - "WHITE_LIST_ALERT": "Daftar domain webmail user yang diizinkan diakses.\nGunakan spasi untuk pemisahnya\n" + "WHITE_LIST_ALERT": "Daftar domain webmail user yang diizinkan diakses.\nGunakan spasi untuk pemisahnya\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Plugin", diff --git a/snappymail/v/0.0.0/app/localization/id/user.json b/snappymail/v/0.0.0/app/localization/id/user.json index da618f718..8508c9c14 100644 --- a/snappymail/v/0.0.0/app/localization/id/user.json +++ b/snappymail/v/0.0.0/app/localization/id/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Belum dilihat", "DATE": "Tanggal", "DATE_ALL": "Semua", - "DATE_3_DAYS": "Sudah 3 hari lalu", - "DATE_7_DAYS": "Sudah 1 bulan lalu", - "DATE_MONTH": "Lebih dari 1 bulan lalu", - "DATE_3_MONTHS": "Lebih dari 3 bulan lalu", - "DATE_6_MONTHS": "Lebih dari 6 bulan lalu", - "DATE_YEAR": "Lebih dari 1 tahun lalu", + "SINCE_3_DAYS": "Sudah 3 hari lalu", + "SINCE_7_DAYS": "Sudah 1 bulan lalu", + "SINCE_MONTH": "Lebih dari 1 bulan lalu", + "SINCE_3_MONTHS": "Lebih dari 3 bulan lalu", + "SINCE_6_MONTHS": "Lebih dari 6 bulan lalu", + "SINCE_YEAR": "Lebih dari 1 tahun lalu", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/is/user.json b/snappymail/v/0.0.0/app/localization/is/user.json index 89002e52a..df3dbd34d 100644 --- a/snappymail/v/0.0.0/app/localization/is/user.json +++ b/snappymail/v/0.0.0/app/localization/is/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Ólesið", "DATE": "Dagsetning", "DATE_ALL": "Allt", - "DATE_3_DAYS": "Allt að 3 daga gömlu", - "DATE_7_DAYS": "Allt að viku gömlu", - "DATE_MONTH": "Allt að mánaðar gömlu", - "DATE_3_MONTHS": "Allt að 3 mánaða gömlu", - "DATE_6_MONTHS": "Allt að 6 mánaða gömlu", - "DATE_YEAR": "Allt að 1 árs gömlu", + "SINCE_3_DAYS": "Allt að 3 daga gömlu", + "SINCE_7_DAYS": "Allt að viku gömlu", + "SINCE_MONTH": "Allt að mánaðar gömlu", + "SINCE_3_MONTHS": "Allt að 3 mánaða gömlu", + "SINCE_6_MONTHS": "Allt að 6 mánaða gömlu", + "SINCE_YEAR": "Allt að 1 árs gömlu", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/it/admin.json b/snappymail/v/0.0.0/app/localization/it/admin.json index 6b6ff25f0..1bd42f095 100644 --- a/snappymail/v/0.0.0/app/localization/it/admin.json +++ b/snappymail/v/0.0.0/app/localization/it/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Indietro", "BUTTON_UPDATE": "Aggiorna", "NEW_DOMAIN_DESC": "This domain configuration will allow you to work with %NAME%<\/strong> email addresses.", - "WHITE_LIST_ALERT": "Lista degli utenti del dominio ai quali webmail può accedere.\nUsa uno spazio come delimitatore." + "WHITE_LIST_ALERT": "Lista degli utenti del dominio ai quali webmail può accedere.\nUsa uno spazio come delimitatore.", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Estensione", diff --git a/snappymail/v/0.0.0/app/localization/it/user.json b/snappymail/v/0.0.0/app/localization/it/user.json index 74bc2cc1d..e347932da 100644 --- a/snappymail/v/0.0.0/app/localization/it/user.json +++ b/snappymail/v/0.0.0/app/localization/it/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Non letti", "DATE": "Data", "DATE_ALL": "Tutte", - "DATE_3_DAYS": "Meno di 3 giorni fa", - "DATE_7_DAYS": "Meno di una settimana fa", - "DATE_MONTH": "Meno di un mese fa", - "DATE_3_MONTHS": "Meno di 3 mesi fa", - "DATE_6_MONTHS": "Meno di 6 mesi fa", - "DATE_YEAR": "Meno di un anno fa", + "SINCE_3_DAYS": "Meno di 3 giorni fa", + "SINCE_7_DAYS": "Meno di una settimana fa", + "SINCE_MONTH": "Meno di un mese fa", + "SINCE_3_MONTHS": "Meno di 3 mesi fa", + "SINCE_6_MONTHS": "Meno di 6 mesi fa", + "SINCE_YEAR": "Meno di un anno fa", "SUBFOLDERS": "Sottocartelle", "SUBFOLDERS_NONE": "Nessuna", "SUBFOLDERS_SUBTREE": "Tutte", diff --git a/snappymail/v/0.0.0/app/localization/ja/admin.json b/snappymail/v/0.0.0/app/localization/ja/admin.json index b92362c40..1d674826f 100644 --- a/snappymail/v/0.0.0/app/localization/ja/admin.json +++ b/snappymail/v/0.0.0/app/localization/ja/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "戻る", "BUTTON_UPDATE": "更新", "NEW_DOMAIN_DESC": "このドメイン設定を使用すると、%NAME%<\/strong>メールアドレスで動作するようになります。", - "WHITE_LIST_ALERT": "ドメインの一覧は、Webメールのアクセスを許可されています。\n区切り文字としてスペースを使用してください。\n" + "WHITE_LIST_ALERT": "ドメインの一覧は、Webメールのアクセスを許可されています。\n区切り文字としてスペースを使用してください。\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "プラグイン", diff --git a/snappymail/v/0.0.0/app/localization/ja/user.json b/snappymail/v/0.0.0/app/localization/ja/user.json index 0d704b7cc..45a42f50f 100644 --- a/snappymail/v/0.0.0/app/localization/ja/user.json +++ b/snappymail/v/0.0.0/app/localization/ja/user.json @@ -59,12 +59,12 @@ "UNSEEN": "未読メール", "DATE": "日付", "DATE_ALL": "全て", - "DATE_3_DAYS": "3日前まで", - "DATE_7_DAYS": "1週間前まで", - "DATE_MONTH": "1ヶ月前まで", - "DATE_3_MONTHS": "3ヶ月前まで", - "DATE_6_MONTHS": "6ヶ月前まで", - "DATE_YEAR": "1年前まで", + "SINCE_3_DAYS": "3日前まで", + "SINCE_7_DAYS": "1週間前まで", + "SINCE_MONTH": "1ヶ月前まで", + "SINCE_3_MONTHS": "3ヶ月前まで", + "SINCE_6_MONTHS": "6ヶ月前まで", + "SINCE_YEAR": "1年前まで", "SUBFOLDERS": "サブフォルダ", "SUBFOLDERS_NONE": "なし", "SUBFOLDERS_SUBTREE": "全て", diff --git a/snappymail/v/0.0.0/app/localization/ko/user.json b/snappymail/v/0.0.0/app/localization/ko/user.json index 80321277e..fc2f4c729 100644 --- a/snappymail/v/0.0.0/app/localization/ko/user.json +++ b/snappymail/v/0.0.0/app/localization/ko/user.json @@ -59,12 +59,12 @@ "UNSEEN": "읽지 않음", "DATE": "날짜", "DATE_ALL": "모두", - "DATE_3_DAYS": "3일 이내", - "DATE_7_DAYS": "1주일 이내", - "DATE_MONTH": "1개월 이내", - "DATE_3_MONTHS": "3개월 이내", - "DATE_6_MONTHS": "6개월 이내", - "DATE_YEAR": "1년 이내", + "SINCE_3_DAYS": "3일 이내", + "SINCE_7_DAYS": "1주일 이내", + "SINCE_MONTH": "1개월 이내", + "SINCE_3_MONTHS": "3개월 이내", + "SINCE_6_MONTHS": "6개월 이내", + "SINCE_YEAR": "1년 이내", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/lt/admin.json b/snappymail/v/0.0.0/app/localization/lt/admin.json index 50061c3d4..9d62d244f 100644 --- a/snappymail/v/0.0.0/app/localization/lt/admin.json +++ b/snappymail/v/0.0.0/app/localization/lt/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Atgal", "BUTTON_UPDATE": "Atnaujinti", "NEW_DOMAIN_DESC": "Šie nustatymai leis jums dirbti su %NAME%<\/strong> domeno pašto adresais.", - "WHITE_LIST_ALERT": "Domeno vartotojų sąrašas, kuriems leista naudotis web paštu.\nNaudokite tarpo simbolį kaip skyriklį.\n" + "WHITE_LIST_ALERT": "Domeno vartotojų sąrašas, kuriems leista naudotis web paštu.\nNaudokite tarpo simbolį kaip skyriklį.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Įskiepis", diff --git a/snappymail/v/0.0.0/app/localization/lt/user.json b/snappymail/v/0.0.0/app/localization/lt/user.json index 3ac12effb..32c8bc3d7 100644 --- a/snappymail/v/0.0.0/app/localization/lt/user.json +++ b/snappymail/v/0.0.0/app/localization/lt/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Neskaitytas", "DATE": "Data", "DATE_ALL": "Visi", - "DATE_3_DAYS": "Nesenesni kaip 3 dienų", - "DATE_7_DAYS": "Nesenesni kaip 1 savaitės", - "DATE_MONTH": "Nesenesni kaip 1 mėnesio", - "DATE_3_MONTHS": "Nesenesni kaip 3 mėnesių", - "DATE_6_MONTHS": "Nesenesni kaip 6 mėnesių", - "DATE_YEAR": "Nesenesni kaip 1 metų", + "SINCE_3_DAYS": "Nesenesni kaip 3 dienų", + "SINCE_7_DAYS": "Nesenesni kaip 1 savaitės", + "SINCE_MONTH": "Nesenesni kaip 1 mėnesio", + "SINCE_3_MONTHS": "Nesenesni kaip 3 mėnesių", + "SINCE_6_MONTHS": "Nesenesni kaip 6 mėnesių", + "SINCE_YEAR": "Nesenesni kaip 1 metų", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/lv/user.json b/snappymail/v/0.0.0/app/localization/lv/user.json index e1de0ada0..5d7fd9630 100644 --- a/snappymail/v/0.0.0/app/localization/lv/user.json +++ b/snappymail/v/0.0.0/app/localization/lv/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Unseen", "DATE": "Datums", "DATE_ALL": "Viss periods", - "DATE_3_DAYS": "Līdz 3 dienas vecs", - "DATE_7_DAYS": "Līdz 1 nedēļu vecs", - "DATE_MONTH": "Līdz 1 mēnesi vecs", - "DATE_3_MONTHS": "Līdz 3 mēnešus vecs", - "DATE_6_MONTHS": "Līdz 6 mēnešus vecs", - "DATE_YEAR": "Līdz 1 gadu vecs", + "SINCE_3_DAYS": "Līdz 3 dienas vecs", + "SINCE_7_DAYS": "Līdz 1 nedēļu vecs", + "SINCE_MONTH": "Līdz 1 mēnesi vecs", + "SINCE_3_MONTHS": "Līdz 3 mēnešus vecs", + "SINCE_6_MONTHS": "Līdz 6 mēnešus vecs", + "SINCE_YEAR": "Līdz 1 gadu vecs", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/nb/admin.json b/snappymail/v/0.0.0/app/localization/nb/admin.json index 24ec4044f..961703992 100644 --- a/snappymail/v/0.0.0/app/localization/nb/admin.json +++ b/snappymail/v/0.0.0/app/localization/nb/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Tilbake", "BUTTON_UPDATE": "Oppdater", "NEW_DOMAIN_DESC": "Dette domeneoppsettet lar deg jobbe med e-postadresser ved %NAME%<\/strong>.", - "WHITE_LIST_ALERT": "Liste over domenebrukere som programmet skal ha tilgang til.\nHold verdier adskilt med mellomrom." + "WHITE_LIST_ALERT": "Liste over domenebrukere som programmet skal ha tilgang til.\nHold verdier adskilt med mellomrom.", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Tillegg", diff --git a/snappymail/v/0.0.0/app/localization/nb/user.json b/snappymail/v/0.0.0/app/localization/nb/user.json index ddc3e66a3..034672637 100644 --- a/snappymail/v/0.0.0/app/localization/nb/user.json +++ b/snappymail/v/0.0.0/app/localization/nb/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Ulest", "DATE": "Dato", "DATE_ALL": "Alle", - "DATE_3_DAYS": "Inntil 3 dager gamle", - "DATE_7_DAYS": "Inntil 1 uke gamle", - "DATE_MONTH": "Inntil 1 måned gamle", - "DATE_3_MONTHS": "Inntil 3 måneder gamle", - "DATE_6_MONTHS": "Inntil 6 måneder gamle", - "DATE_YEAR": "Inntil 1 år gamle", + "SINCE_3_DAYS": "Inntil 3 dager gamle", + "SINCE_7_DAYS": "Inntil 1 uke gamle", + "SINCE_MONTH": "Inntil 1 måned gamle", + "SINCE_3_MONTHS": "Inntil 3 måneder gamle", + "SINCE_6_MONTHS": "Inntil 6 måneder gamle", + "SINCE_YEAR": "Inntil 1 år gamle", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "Alle", diff --git a/snappymail/v/0.0.0/app/localization/nl/admin.json b/snappymail/v/0.0.0/app/localization/nl/admin.json index 7dcd82b40..e91f16c70 100644 --- a/snappymail/v/0.0.0/app/localization/nl/admin.json +++ b/snappymail/v/0.0.0/app/localization/nl/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Terug", "BUTTON_UPDATE": "Update", "NEW_DOMAIN_DESC": "Dit domein stelt u in staat om met %NAME%<\/strong> e-mail adressen te werken.", - "WHITE_LIST_ALERT": "Lijst van gebruikers die dit domein mogen gebruiken.\nGebruik een spatie als scheidingsteken." + "WHITE_LIST_ALERT": "Lijst van gebruikers die dit domein mogen gebruiken.\nGebruik een spatie als scheidingsteken.", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Extensie", diff --git a/snappymail/v/0.0.0/app/localization/nl/user.json b/snappymail/v/0.0.0/app/localization/nl/user.json index 881364adb..431db9742 100644 --- a/snappymail/v/0.0.0/app/localization/nl/user.json +++ b/snappymail/v/0.0.0/app/localization/nl/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Ongelezen", "DATE": "Datum", "DATE_ALL": "Alles", - "DATE_3_DAYS": "Tot 3 dagen oud", - "DATE_7_DAYS": "Tot 1 week oud", - "DATE_MONTH": "Tot 1 maand oud", - "DATE_3_MONTHS": "Tot 3 maanden oud", - "DATE_6_MONTHS": "Tot 6 maanden oud", - "DATE_YEAR": "Tot 1 jaar oud", + "SINCE_3_DAYS": "Tot 3 dagen oud", + "SINCE_7_DAYS": "Tot 1 week oud", + "SINCE_MONTH": "Tot 1 maand oud", + "SINCE_3_MONTHS": "Tot 3 maanden oud", + "SINCE_6_MONTHS": "Tot 6 maanden oud", + "SINCE_YEAR": "Tot 1 jaar oud", "SUBFOLDERS": "Submappen", "SUBFOLDERS_NONE": "Geen", "SUBFOLDERS_SUBTREE": "Alle", diff --git a/snappymail/v/0.0.0/app/localization/pl/admin.json b/snappymail/v/0.0.0/app/localization/pl/admin.json index 3c2716a67..49ab0f581 100644 --- a/snappymail/v/0.0.0/app/localization/pl/admin.json +++ b/snappymail/v/0.0.0/app/localization/pl/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Wstecz", "BUTTON_UPDATE": "Zaktualizuj", "NEW_DOMAIN_DESC": "Konfiguracja tej domeny pozwala na pracę z adresami e-mail: %NAME%<\/strong>", - "WHITE_LIST_ALERT": "Lista użytkowników domeny, którzy mogą uzyskać dostęp z tego webmaila.\nUżyj spacji do rozdzielenia.\n" + "WHITE_LIST_ALERT": "Lista użytkowników domeny, którzy mogą uzyskać dostęp z tego webmaila.\nUżyj spacji do rozdzielenia.\n", + "VALID_SPAM_HEADERS": "Prawidłowe nagłówki informacji o SPAMie", + "VALID_VIRUS_HEADERS": "Prawidłowe nagłówki informacji o wirusach" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Wtyczka", diff --git a/snappymail/v/0.0.0/app/localization/pl/user.json b/snappymail/v/0.0.0/app/localization/pl/user.json index 0861b539e..3a1f735fe 100644 --- a/snappymail/v/0.0.0/app/localization/pl/user.json +++ b/snappymail/v/0.0.0/app/localization/pl/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Nieprzeczytana", "DATE": "Data", "DATE_ALL": "Wszystkie", - "DATE_3_DAYS": "do 3 dni", - "DATE_7_DAYS": "do tygodnia", - "DATE_MONTH": "do miesiąca", - "DATE_3_MONTHS": "do 3 miesięcy", - "DATE_6_MONTHS": "do 6 miesięcy", - "DATE_YEAR": "do roku", + "SINCE_3_DAYS": "do 3 dni", + "SINCE_7_DAYS": "do tygodnia", + "SINCE_MONTH": "do miesiąca", + "SINCE_3_MONTHS": "do 3 miesięcy", + "SINCE_6_MONTHS": "do 6 miesięcy", + "SINCE_YEAR": "do roku", "SUBFOLDERS": "Podfoldery", "SUBFOLDERS_NONE": "Brak", "SUBFOLDERS_SUBTREE": "Wszystkie", diff --git a/snappymail/v/0.0.0/app/localization/pt-BR/admin.json b/snappymail/v/0.0.0/app/localization/pt-BR/admin.json index 6dfb5f050..41712c66e 100644 --- a/snappymail/v/0.0.0/app/localization/pt-BR/admin.json +++ b/snappymail/v/0.0.0/app/localization/pt-BR/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Voltar", "BUTTON_UPDATE": "Atualizar", "NEW_DOMAIN_DESC": "Esta configuração de domínio lhe permitirá trabalhar com endereços de e-mail do %NAME%<\/strong>.", - "WHITE_LIST_ALERT": "Filtrar com lista dos únicos usuários do domínio que terão acesso ao webmail.\nUse um espaço como delimitador.\n" + "WHITE_LIST_ALERT": "Filtrar com lista dos únicos usuários do domínio que terão acesso ao webmail.\nUse um espaço como delimitador.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Plugin", diff --git a/snappymail/v/0.0.0/app/localization/pt-BR/user.json b/snappymail/v/0.0.0/app/localization/pt-BR/user.json index a515fa29e..a10a0c98a 100644 --- a/snappymail/v/0.0.0/app/localization/pt-BR/user.json +++ b/snappymail/v/0.0.0/app/localization/pt-BR/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Não Lida", "DATE": "Data", "DATE_ALL": "Qualquer", - "DATE_3_DAYS": "Até 3 dias atrás", - "DATE_7_DAYS": "Até 1 semana atrás", - "DATE_MONTH": "Até 1 mês atrás", - "DATE_3_MONTHS": "Até 3 meses atrás", - "DATE_6_MONTHS": "Até 6 meses atrás", - "DATE_YEAR": "Até 1 ano atrás", + "SINCE_3_DAYS": "Até 3 dias atrás", + "SINCE_7_DAYS": "Até 1 semana atrás", + "SINCE_MONTH": "Até 1 mês atrás", + "SINCE_3_MONTHS": "Até 3 meses atrás", + "SINCE_6_MONTHS": "Até 6 meses atrás", + "SINCE_YEAR": "Até 1 ano atrás", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/pt/admin.json b/snappymail/v/0.0.0/app/localization/pt/admin.json index b69536a93..9258d6372 100644 --- a/snappymail/v/0.0.0/app/localization/pt/admin.json +++ b/snappymail/v/0.0.0/app/localization/pt/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_THEMES_ON_SETTINGS": "Permitir personalização da interface nas definições", "LABEL_ALLOW_BACKGROUND_ON_SETTINGS": "Permitir alterar a imagem de fundo nas definições", "LABEL_SHOW_THUMBNAILS": "Mostrar miniaturas (anexos)", - "LEGEND_MAIN": "Prinicpal", + "LEGEND_MAIN": "Principal", "LABEL_ATTACHMENT_SIZE_LIMIT": "Tamanho limite dos anexos", "LABEL_ALLOW_ADDITIONAL_ACCOUNTS": "Permitir contas adicionais", "LABEL_ALLOW_IDENTITIES": "Permitir múltiplas identidades", @@ -146,7 +146,9 @@ "BUTTON_BACK": "Voltar", "BUTTON_UPDATE": "Atualizar", "NEW_DOMAIN_DESC": "Esta configuração de domínio vai permitir trabalhar com endereços email %NAME%<\/strong>.", - "WHITE_LIST_ALERT": "Lista de utilizadores do domínio aos quais o webmail terá permissão para aceder.\nUsar espaços para delimitar.\n" + "WHITE_LIST_ALERT": "Lista de utilizadores do domínio aos quais o webmail terá permissão para aceder.\nUsar espaços para delimitar.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Extensão", diff --git a/snappymail/v/0.0.0/app/localization/pt/user.json b/snappymail/v/0.0.0/app/localization/pt/user.json index ae0665c5e..2f2171e0f 100644 --- a/snappymail/v/0.0.0/app/localization/pt/user.json +++ b/snappymail/v/0.0.0/app/localization/pt/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Não lida", "DATE": "Data", "DATE_ALL": "Qualquer", - "DATE_3_DAYS": "Até 3 dias atrás", - "DATE_7_DAYS": "Até 1 semana atrás", - "DATE_MONTH": "Até 1 mês atrás", - "DATE_3_MONTHS": "Até 3 meses atrás", - "DATE_6_MONTHS": "Até 6 meses atrás", - "DATE_YEAR": "Até 1 ano atrás", + "SINCE_3_DAYS": "Até 3 dias atrás", + "SINCE_7_DAYS": "Até 1 semana atrás", + "SINCE_MONTH": "Até 1 mês atrás", + "SINCE_3_MONTHS": "Até 3 meses atrás", + "SINCE_6_MONTHS": "Até 6 meses atrás", + "SINCE_YEAR": "Até 1 ano atrás", "SUBFOLDERS": "Subpastas", "SUBFOLDERS_NONE": "Nenhuma", "SUBFOLDERS_SUBTREE": "Todas", @@ -140,7 +140,7 @@ "MENU_VIEW_ORIGINAL": "Mostrar original", "HTML_VIEW": "Ver mensagem em HTML", "PLAIN_VIEW": "Ver mensagem em texto simples", - "SWAP_COLORS": "Swap default (background)color", + "SWAP_COLORS": "Trocar a cor (de fundo) predefinida", "MENU_DOWNLOAD_ORIGINAL": "Transferir como ficheiro .eml", "MENU_FILTER_SIMILAR": "Filtrar mensagens semelhantes a esta", "MENU_PRINT": "Imprimir", @@ -283,7 +283,7 @@ "VERIFY": "Validar", "GOOD_SIGNATURE": "Boa assinatura de %USER%", "ERROR": "Erro %TYPE%: %ERROR%", - "CREATE_SELF_SIGNED": "Criar auto-assinado", + "CREATE_SELF_SIGNED": "Criar autoassinado", "VALID_UNTIL": "Válido até", "PRIVATE_KEY": "Chave privada", "CHANGE_PASS": "Alterar frase secreta", @@ -328,13 +328,13 @@ "SELECT_ACTION_VACATION_MESSAGE": "Mensagem de férias", "SELECT_ACTION_DISCARD": "Descartar", "SELECT_FIELD_RECIPIENTS": "Destinatários (Para ou Cc)", - "SELECT_FIELD_HEADER": "Cebeçalho", + "SELECT_FIELD_HEADER": "Cabeçalho", "SELECT_FIELD_BODY": "Corpo", "SELECT_FIELD_SIZE": "Tamanho", "SELECT_TYPE_CONTAINS": "Contém", "SELECT_TYPE_NOT_CONTAINS": "Não contém", "SELECT_TYPE_MATCHES": "Corresponde (* e ? suportados)", - "SELECT_TYPE_NOT_MATCHES": "Não correponde (* e ? suportados)", + "SELECT_TYPE_NOT_MATCHES": "Não corresponde (* e ? suportados)", "SELECT_TYPE_REGEXP": "RegExp", "SELECT_TYPE_NOT_REGEXP": "Diferente de RegExp", "SELECT_TYPE_EQUAL_TO": "Igual a", @@ -358,10 +358,10 @@ "POPUPS_SIEVE_SCRIPT": { "TITLE_CREATE": "Criar script", "TITLE_EDIT": "Editar script", - "BUTTON_ADD_FILTER": "Adiscionar um filtro", + "BUTTON_ADD_FILTER": "Adicionar um filtro", "BUTTON_RAW_SCRIPT": "Usar um script de utilizador personalizado", "CAPABILITY_LABEL": "Capacidades", - "CHANGES_NEED_TO_BE_SAVED_DESC": "Estas alterações têm que ser guardadas no sevidor." + "CHANGES_NEED_TO_BE_SAVED_DESC": "Estas alterações têm que ser guardadas no servidor." }, "POPUPS_SYSTEM_FOLDERS": { "TITLE_SYSTEM_FOLDERS": "Escolha as pastas de sistema", @@ -426,7 +426,7 @@ }, "SETTINGS_FILTERS": { "SIMPLE": "Simples", - "ADVANCED": "Advançado", + "ADVANCED": "Avançado", "BUTTON_ADD_SCRIPT": "Adicionar um script", "SUBNAME_MOVE_TO": "Mover para \"%FOLDER%\"", "SUBNAME_FORWARD_TO": "Encaminhar para \"%EMAIL%\"", @@ -449,7 +449,7 @@ "LAYOUT_HORIZONTAL_SPLIT": "Separação horizontal", "SHOW_NEXT_MESSAGE": "Mostrar a próxima mensagem quando (re)mover a mensagem atual", "EDITOR": "Editor de texto padrão", - "EDITOR_HTML": "Html", + "EDITOR_HTML": "HTML", "EDITOR_PLAIN": "Texto simples", "VIEW_OPTIONS": "Ver opções", "USE_PREVIEW_PANE": "Use o painel de pré-visualização", @@ -591,7 +591,7 @@ "DomainAlreadyExists": "O domínio já existe", "DomainNotAllowed": "Este domínio não é permitido", "AccountNotAllowed": "Esta conta não é permitida", - "CryptKeyError": "Your login passphrase has changed", + "CryptKeyError": "A sua palavra-passe de autenticação foi alterada", "ContactsSyncError": "Erro na sincronização de contactos", "CantGetMessageList": "Não é possível obter a lista de mensagens", "CantGetMessage": "Não é possível obter a mensagem", @@ -611,7 +611,7 @@ "CantDeleteFolder": "Não é possível eliminar a pasta", "CantDeleteNonEmptyFolder": "Não é possível eliminar pastas com conteúdos", "CantSubscribeFolder": "Não é possível subscrever a esta pasta", - "CantUnsubscribeFolder": "Não é possível anular a subsrição desta pasta", + "CantUnsubscribeFolder": "Não é possível anular a subscrição desta pasta", "DemoSendMessageError": "Por motivos de segurança, esta conta de demonstração não tem permissão para enviar mensagens para endereços de e-mail externos!", "DemoAccountError": "Por motivos de segurança, esta conta não tem permissão de executar esta ação!", "AccountAlreadyExists": "Esta conta já existe", diff --git a/snappymail/v/0.0.0/app/localization/ro/user.json b/snappymail/v/0.0.0/app/localization/ro/user.json index 06ea5c270..f2f00482b 100644 --- a/snappymail/v/0.0.0/app/localization/ro/user.json +++ b/snappymail/v/0.0.0/app/localization/ro/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Necitit", "DATE": "Data", "DATE_ALL": "Tot timpul", - "DATE_3_DAYS": "З zile", - "DATE_7_DAYS": "7 zile", - "DATE_MONTH": "în această lună", - "DATE_3_MONTHS": "3 luni", - "DATE_6_MONTHS": "6 luni", - "DATE_YEAR": "în acest an", + "SINCE_3_DAYS": "З zile", + "SINCE_7_DAYS": "7 zile", + "SINCE_MONTH": "în această lună", + "SINCE_3_MONTHS": "3 luni", + "SINCE_6_MONTHS": "6 luni", + "SINCE_YEAR": "în acest an", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/ru/admin.json b/snappymail/v/0.0.0/app/localization/ru/admin.json index 850e2c734..76ede4943 100644 --- a/snappymail/v/0.0.0/app/localization/ru/admin.json +++ b/snappymail/v/0.0.0/app/localization/ru/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Назад", "BUTTON_UPDATE": "Обновить", "NEW_DOMAIN_DESC": "Эта конфигурация позволит вам работать с %NAME%<\/strong> адресами.", - "WHITE_LIST_ALERT": "Список пользователей домена к которым разрешен доступ.\nИспользуйте пробел в качестве разделителя.\n" + "WHITE_LIST_ALERT": "Список пользователей домена к которым разрешен доступ.\nИспользуйте пробел в качестве разделителя.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Плагин", diff --git a/snappymail/v/0.0.0/app/localization/ru/user.json b/snappymail/v/0.0.0/app/localization/ru/user.json index 336adf81c..c5a66fe4f 100644 --- a/snappymail/v/0.0.0/app/localization/ru/user.json +++ b/snappymail/v/0.0.0/app/localization/ru/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Непрочитанные", "DATE": "Дата", "DATE_ALL": "За всё время", - "DATE_3_DAYS": "За три дня", - "DATE_7_DAYS": "За неделю", - "DATE_MONTH": "За месяц", - "DATE_3_MONTHS": "За 3 месяца", - "DATE_6_MONTHS": "За полгода", - "DATE_YEAR": "За год", + "SINCE_3_DAYS": "За три дня", + "SINCE_7_DAYS": "За неделю", + "SINCE_MONTH": "За месяц", + "SINCE_3_MONTHS": "За 3 месяца", + "SINCE_6_MONTHS": "За полгода", + "SINCE_YEAR": "За год", "SUBFOLDERS": "Подпапки", "SUBFOLDERS_NONE": "Ничего", "SUBFOLDERS_SUBTREE": "Все", diff --git a/snappymail/v/0.0.0/app/localization/sk/admin.json b/snappymail/v/0.0.0/app/localization/sk/admin.json index 4ca23a685..73dee7764 100644 --- a/snappymail/v/0.0.0/app/localization/sk/admin.json +++ b/snappymail/v/0.0.0/app/localization/sk/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Späť", "BUTTON_UPDATE": "Aktualizovať", "NEW_DOMAIN_DESC": "This domain configuration will allow you to work with %NAME%<\/strong> email addresses.", - "WHITE_LIST_ALERT": "List of domain users webmail is allowed to access.\nUse a space as delimiter.\n" + "WHITE_LIST_ALERT": "List of domain users webmail is allowed to access.\nUse a space as delimiter.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Doplnok", diff --git a/snappymail/v/0.0.0/app/localization/sk/user.json b/snappymail/v/0.0.0/app/localization/sk/user.json index 8548d3a65..ba621519c 100644 --- a/snappymail/v/0.0.0/app/localization/sk/user.json +++ b/snappymail/v/0.0.0/app/localization/sk/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Neprečítané", "DATE": "Dátum", "DATE_ALL": "Kedykoľvek", - "DATE_3_DAYS": "Nie staršie ako 3 dni", - "DATE_7_DAYS": "Nie staršie ako týždeň", - "DATE_MONTH": "Nie staršie ako mesiac", - "DATE_3_MONTHS": "Nie staršie ako 3 mesiace", - "DATE_6_MONTHS": "Nie staršie ako 6 mesiacov", - "DATE_YEAR": "Nie staršie ako 1 rok", + "SINCE_3_DAYS": "Nie staršie ako 3 dni", + "SINCE_7_DAYS": "Nie staršie ako týždeň", + "SINCE_MONTH": "Nie staršie ako mesiac", + "SINCE_3_MONTHS": "Nie staršie ako 3 mesiace", + "SINCE_6_MONTHS": "Nie staršie ako 6 mesiacov", + "SINCE_YEAR": "Nie staršie ako 1 rok", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/sl/admin.json b/snappymail/v/0.0.0/app/localization/sl/admin.json index fda8d116b..ef0c5ebe6 100644 --- a/snappymail/v/0.0.0/app/localization/sl/admin.json +++ b/snappymail/v/0.0.0/app/localization/sl/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Nazaj", "BUTTON_UPDATE": "Posodobi", "NEW_DOMAIN_DESC": "Ta konfiguiracija domene bo omogočala delo z %NAME%<\/strong> e-naslovi.", - "WHITE_LIST_ALERT": "Seznam uporabnikov domene, do katerih je omogočen dostop.\nUporabnike ločite s presledkom.\n" + "WHITE_LIST_ALERT": "Seznam uporabnikov domene, do katerih je omogočen dostop.\nUporabnike ločite s presledkom.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Vtičnik", diff --git a/snappymail/v/0.0.0/app/localization/sl/user.json b/snappymail/v/0.0.0/app/localization/sl/user.json index 5b615913f..96ea1d392 100644 --- a/snappymail/v/0.0.0/app/localization/sl/user.json +++ b/snappymail/v/0.0.0/app/localization/sl/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Neprebrano", "DATE": "Datum", "DATE_ALL": "Vsa", - "DATE_3_DAYS": "Do 3 dni nazaj", - "DATE_7_DAYS": "Do 1 tedna nazaj", - "DATE_MONTH": "Do 1 meseca nazaj", - "DATE_3_MONTHS": "Do 3 mesecev nazaj", - "DATE_6_MONTHS": "Do 6 mesecev nazaj", - "DATE_YEAR": "Do 1 leta nazaj", + "SINCE_3_DAYS": "Do 3 dni nazaj", + "SINCE_7_DAYS": "Do 1 tedna nazaj", + "SINCE_MONTH": "Do 1 meseca nazaj", + "SINCE_3_MONTHS": "Do 3 mesecev nazaj", + "SINCE_6_MONTHS": "Do 6 mesecev nazaj", + "SINCE_YEAR": "Do 1 leta nazaj", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/sv/admin.json b/snappymail/v/0.0.0/app/localization/sv/admin.json index b9e362ee1..d4fcffe79 100644 --- a/snappymail/v/0.0.0/app/localization/sv/admin.json +++ b/snappymail/v/0.0.0/app/localization/sv/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Tillbaka", "BUTTON_UPDATE": "Uppdatera", "NEW_DOMAIN_DESC": "Denna domän konfiguration gör att du kan arbeta med %NAME%<\/strong> e-postadresser.", - "WHITE_LIST_ALERT": "Lista över domänanvändare som tillåts.\nAnvända ett utrymme som avgränsare.\n" + "WHITE_LIST_ALERT": "Lista över domänanvändare som tillåts.\nAnvända ett utrymme som avgränsare.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Tillägget", diff --git a/snappymail/v/0.0.0/app/localization/sv/user.json b/snappymail/v/0.0.0/app/localization/sv/user.json index e17770704..46ec9d835 100644 --- a/snappymail/v/0.0.0/app/localization/sv/user.json +++ b/snappymail/v/0.0.0/app/localization/sv/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Oläst", "DATE": "Datum", "DATE_ALL": "Alla", - "DATE_3_DAYS": "Upp till 3 dagar gammalt", - "DATE_7_DAYS": "Upp till 1 vecka gammalt", - "DATE_MONTH": "Upp till 1 månad gammalt", - "DATE_3_MONTHS": "Upp till 3 månader gammalt", - "DATE_6_MONTHS": "Upp till 6 månader gammalt", - "DATE_YEAR": "Upp till 1 år gammalt", + "SINCE_3_DAYS": "Upp till 3 dagar gammalt", + "SINCE_7_DAYS": "Upp till 1 vecka gammalt", + "SINCE_MONTH": "Upp till 1 månad gammalt", + "SINCE_3_MONTHS": "Upp till 3 månader gammalt", + "SINCE_6_MONTHS": "Upp till 6 månader gammalt", + "SINCE_YEAR": "Upp till 1 år gammalt", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/tr/user.json b/snappymail/v/0.0.0/app/localization/tr/user.json index 370395e3e..e0d82a89f 100644 --- a/snappymail/v/0.0.0/app/localization/tr/user.json +++ b/snappymail/v/0.0.0/app/localization/tr/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Görünmeyen", "DATE": "Tarih", "DATE_ALL": "Hepsi", - "DATE_3_DAYS": "3 gün önceki", - "DATE_7_DAYS": "1 hafta önceki", - "DATE_MONTH": "1 ay önceki", - "DATE_3_MONTHS": "3 ay önceki", - "DATE_6_MONTHS": "6 ay önceki", - "DATE_YEAR": "1 yıl önceki", + "SINCE_3_DAYS": "3 gün önceki", + "SINCE_7_DAYS": "1 hafta önceki", + "SINCE_MONTH": "1 ay önceki", + "SINCE_3_MONTHS": "3 ay önceki", + "SINCE_6_MONTHS": "6 ay önceki", + "SINCE_YEAR": "1 yıl önceki", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/uk/user.json b/snappymail/v/0.0.0/app/localization/uk/user.json index b3ce8322b..9be654fe5 100644 --- a/snappymail/v/0.0.0/app/localization/uk/user.json +++ b/snappymail/v/0.0.0/app/localization/uk/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Непрочитані", "DATE": "Дата", "DATE_ALL": "За весь час", - "DATE_3_DAYS": "За три дні", - "DATE_7_DAYS": "За тиждень", - "DATE_MONTH": "За місяць", - "DATE_3_MONTHS": "За 3 місяці", - "DATE_6_MONTHS": "За півроку", - "DATE_YEAR": "За рік", + "SINCE_3_DAYS": "За три дні", + "SINCE_7_DAYS": "За тиждень", + "SINCE_MONTH": "За місяць", + "SINCE_3_MONTHS": "За 3 місяці", + "SINCE_6_MONTHS": "За півроку", + "SINCE_YEAR": "За рік", "SUBFOLDERS": "Subfolders", "SUBFOLDERS_NONE": "None", "SUBFOLDERS_SUBTREE": "All", diff --git a/snappymail/v/0.0.0/app/localization/vi/admin.json b/snappymail/v/0.0.0/app/localization/vi/admin.json index a10a72a55..1d7deeec7 100644 --- a/snappymail/v/0.0.0/app/localization/vi/admin.json +++ b/snappymail/v/0.0.0/app/localization/vi/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "Trở về", "BUTTON_UPDATE": "Cập nhật", "NEW_DOMAIN_DESC": "Thiết lập tên miền cho phép bạn thao tác với với địa chỉ email của %NAME%<\/strong>.", - "WHITE_LIST_ALERT": "Danh sách những người dùng tên miền mà webmail được quyền truy cập.\nSử dụng dấu cách làm dấu phân cách mỗi tên.\n" + "WHITE_LIST_ALERT": "Danh sách những người dùng tên miền mà webmail được quyền truy cập.\nSử dụng dấu cách làm dấu phân cách mỗi tên.\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "Tiện ích mở rộng", diff --git a/snappymail/v/0.0.0/app/localization/vi/user.json b/snappymail/v/0.0.0/app/localization/vi/user.json index 26cf5fcd3..c60a786c0 100644 --- a/snappymail/v/0.0.0/app/localization/vi/user.json +++ b/snappymail/v/0.0.0/app/localization/vi/user.json @@ -59,12 +59,12 @@ "UNSEEN": "Chưa được xem", "DATE": "Ngày", "DATE_ALL": "Tất cả", - "DATE_3_DAYS": "Khoảng 3 ngày trước", - "DATE_7_DAYS": "Khoảng 1 tuần trước", - "DATE_MONTH": "Khoảng 1 tháng trước", - "DATE_3_MONTHS": "Khoảng 3 tháng trước", - "DATE_6_MONTHS": "Khoảng 6 tháng trước", - "DATE_YEAR": "Khoảng 1 năm trước", + "SINCE_3_DAYS": "Khoảng 3 ngày trước", + "SINCE_7_DAYS": "Khoảng 1 tuần trước", + "SINCE_MONTH": "Khoảng 1 tháng trước", + "SINCE_3_MONTHS": "Khoảng 3 tháng trước", + "SINCE_6_MONTHS": "Khoảng 6 tháng trước", + "SINCE_YEAR": "Khoảng 1 năm trước", "SUBFOLDERS": "Thư mục con", "SUBFOLDERS_NONE": "Trống", "SUBFOLDERS_SUBTREE": "Tất cả", diff --git a/snappymail/v/0.0.0/app/localization/zh-TW/user.json b/snappymail/v/0.0.0/app/localization/zh-TW/user.json index 8e5a91fa6..456dd54bf 100644 --- a/snappymail/v/0.0.0/app/localization/zh-TW/user.json +++ b/snappymail/v/0.0.0/app/localization/zh-TW/user.json @@ -59,12 +59,12 @@ "UNSEEN": "未讀取", "DATE": "日期", "DATE_ALL": "全部", - "DATE_3_DAYS": "三天以內", - "DATE_7_DAYS": "一週以內", - "DATE_MONTH": "一個月以內", - "DATE_3_MONTHS": "三個月以內", - "DATE_6_MONTHS": "半年以內", - "DATE_YEAR": "一年以內", + "SINCE_3_DAYS": "三天以內", + "SINCE_7_DAYS": "一週以內", + "SINCE_MONTH": "一個月以內", + "SINCE_3_MONTHS": "三個月以內", + "SINCE_6_MONTHS": "半年以內", + "SINCE_YEAR": "一年以內", "SUBFOLDERS": "子資料夾", "SUBFOLDERS_NONE": "無", "SUBFOLDERS_SUBTREE": "全部", diff --git a/snappymail/v/0.0.0/app/localization/zh/admin.json b/snappymail/v/0.0.0/app/localization/zh/admin.json index c483d3dbc..62c1c02b2 100644 --- a/snappymail/v/0.0.0/app/localization/zh/admin.json +++ b/snappymail/v/0.0.0/app/localization/zh/admin.json @@ -146,7 +146,9 @@ "BUTTON_BACK": "返回", "BUTTON_UPDATE": "更新", "NEW_DOMAIN_DESC": "此域名配置将允许您和%NAME%<\/strong>电子邮件地址一起工作.", - "WHITE_LIST_ALERT": "允许访问的域用户;使用空格分隔。\n" + "WHITE_LIST_ALERT": "允许访问的域用户;使用空格分隔。\n", + "VALID_SPAM_HEADERS": "Valid SPAM headers", + "VALID_VIRUS_HEADERS": "Valid virus headers" }, "POPUPS_PLUGIN": { "TITLE_PLUGIN": "插件", diff --git a/snappymail/v/0.0.0/app/localization/zh/user.json b/snappymail/v/0.0.0/app/localization/zh/user.json index ff62057ca..7671f756b 100644 --- a/snappymail/v/0.0.0/app/localization/zh/user.json +++ b/snappymail/v/0.0.0/app/localization/zh/user.json @@ -59,12 +59,12 @@ "UNSEEN": "不可见", "DATE": "日期", "DATE_ALL": "所有邮件", - "DATE_3_DAYS": "3天以内", - "DATE_7_DAYS": "1周以内", - "DATE_MONTH": "1个月以内", - "DATE_3_MONTHS": "3个月以内", - "DATE_6_MONTHS": "半年以内", - "DATE_YEAR": "1年以内", + "SINCE_3_DAYS": "3天以内", + "SINCE_7_DAYS": "1周以内", + "SINCE_MONTH": "1个月以内", + "SINCE_3_MONTHS": "3个月以内", + "SINCE_6_MONTHS": "半年以内", + "SINCE_YEAR": "1年以内", "SUBFOLDERS": "子文件夹", "SUBFOLDERS_NONE": "无", "SUBFOLDERS_SUBTREE": "全部", diff --git a/snappymail/v/0.0.0/app/templates/Views/Admin/PopupsDomain.html b/snappymail/v/0.0.0/app/templates/Views/Admin/PopupsDomain.html index 58dedf652..7b6a3c1f8 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Admin/PopupsDomain.html +++ b/snappymail/v/0.0.0/app/templates/Views/Admin/PopupsDomain.html @@ -120,8 +120,19 @@ "fast_simple_search": true, "force_select": false, "message_all_headers": false, - "search_filter": null, +
+ + +
--> +
+ + +
+
+ + +