mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-08 22:18:28 +03:00
application.ini login_lowercase should be configurable per domain
This commit is contained in:
parent
4ebb3e7082
commit
e04cc1080a
34 changed files with 106 additions and 24 deletions
|
|
@ -26,6 +26,7 @@ const
|
|||
imapType: 0,
|
||||
imapTimeout: 300,
|
||||
imapShortLogin: false,
|
||||
imapLowerLogin: false,
|
||||
// SSL
|
||||
imapSslVerify_peer: false,
|
||||
imapSslAllow_self_signed: false,
|
||||
|
|
@ -50,6 +51,7 @@ const
|
|||
smtpType: 0,
|
||||
smtpTimeout: 60,
|
||||
smtpShortLogin: false,
|
||||
smtpLowerLogin: false,
|
||||
smtpUseAuth: true,
|
||||
smtpSetSender: false,
|
||||
smtpAuthPlainLine: false,
|
||||
|
|
@ -69,6 +71,7 @@ const
|
|||
secure: pInt(oDomain.imapType()),
|
||||
timeout: oDomain.imapTimeout,
|
||||
shortLogin: !!oDomain.imapShortLogin(),
|
||||
lowerLogin: !!oDomain.imapLowerLogin(),
|
||||
ssl: {
|
||||
verify_peer: !!oDomain.imapSslVerify_peer(),
|
||||
verify_peer_name: !!oDomain.imapSslVerify_peer(),
|
||||
|
|
@ -92,6 +95,7 @@ const
|
|||
secure: pInt(oDomain.smtpType()),
|
||||
timeout: oDomain.smtpTimeout,
|
||||
shortLogin: !!oDomain.smtpShortLogin(),
|
||||
lowerLogin: !!oDomain.smtpLowerLogin(),
|
||||
ssl: {
|
||||
verify_peer: !!oDomain.smtpSslVerify_peer(),
|
||||
verify_peer_name: !!oDomain.smtpSslVerify_peer(),
|
||||
|
|
@ -109,6 +113,7 @@ const
|
|||
secure: pInt(oDomain.sieveType()),
|
||||
timeout: oDomain.sieveTimeout,
|
||||
shortLogin: !!oDomain.imapShortLogin(),
|
||||
lowerLogin: !!oDomain.imapLowerLogin(),
|
||||
ssl: {
|
||||
verify_peer: !!oDomain.imapSslVerify_peer(),
|
||||
verify_peer_name: !!oDomain.imapSslVerify_peer(),
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
"type": 0,
|
||||
"timeout": 300,
|
||||
"shortLogin": false,
|
||||
"lowerLogin": true,
|
||||
"sasl": [
|
||||
"SCRAM-SHA3-512",
|
||||
"SCRAM-SHA-512",
|
||||
|
|
@ -39,6 +40,7 @@
|
|||
"type": 0,
|
||||
"timeout": 60,
|
||||
"shortLogin": false,
|
||||
"lowerLogin": true,
|
||||
"sasl": [
|
||||
"SCRAM-SHA3-512",
|
||||
"SCRAM-SHA-512",
|
||||
|
|
@ -65,6 +67,7 @@
|
|||
"type": 0,
|
||||
"timeout": 10,
|
||||
"shortLogin": false,
|
||||
"lowerLogin": true,
|
||||
"sasl": [
|
||||
"SCRAM-SHA3-512",
|
||||
"SCRAM-SHA-512",
|
||||
|
|
|
|||
|
|
@ -35,9 +35,11 @@ class ConnectSettings implements \JsonSerializable
|
|||
public SSLContext $ssl;
|
||||
// public bool $tls_weak = false;
|
||||
|
||||
// Authentication settings use by all child classes
|
||||
// Authentication settings used by all child classes
|
||||
public bool $useAuth = true;
|
||||
public bool $shortLogin = false;
|
||||
public bool $lowerLogin = true;
|
||||
public string $stripLogin = '';
|
||||
public array $SASLMechanisms = [
|
||||
// https://github.com/the-djmaze/snappymail/issues/182
|
||||
'SCRAM-SHA3-512',
|
||||
|
|
@ -77,11 +79,37 @@ class ConnectSettings implements \JsonSerializable
|
|||
$this->passphrase = \is_string($value) ? new SensitiveString($value) : $value;
|
||||
}
|
||||
if ('username' === $name || 'login' === $name) {
|
||||
$this->username = \SnappyMail\IDN::emailToAscii($value);
|
||||
// $this->username = \SnappyMail\IDN::emailToAscii(\MailSo\Base\Utils::Trim($value));
|
||||
$this->username = $this->fixUsername($value);
|
||||
}
|
||||
}
|
||||
|
||||
public function fixUsername(string $value, bool $allowShorten = true) : string
|
||||
{
|
||||
$value = \SnappyMail\IDN::emailToAscii($value);
|
||||
// $value = \SnappyMail\IDN::emailToAscii(\MailSo\Base\Utils::Trim($value));
|
||||
// Strip the domain part
|
||||
if ($this->shortLogin && $allowShorten) {
|
||||
$value = \MailSo\Base\Utils::getEmailAddressLocalPart($value);
|
||||
}
|
||||
// Convert to lowercase
|
||||
if ($this->lowerLogin) {
|
||||
$value = \mb_strtolower($value);
|
||||
}
|
||||
// Strip certain characters
|
||||
if ($this->stripLogin) {
|
||||
$value = \explode('@', $value);
|
||||
if (isset($value[1])) {
|
||||
$domain = \array_pop($value);
|
||||
}
|
||||
$value = \str_replace(\str_split($this->stripLogin), '', $value);
|
||||
if (isset($value[1])) {
|
||||
$value[] = $domain;
|
||||
}
|
||||
$value = \implode('@', $value);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
public static function fromArray(array $aSettings) : self
|
||||
{
|
||||
$object = new static;
|
||||
|
|
@ -92,6 +120,12 @@ class ConnectSettings implements \JsonSerializable
|
|||
$object->timeout = $aSettings['timeout'];
|
||||
}
|
||||
$object->shortLogin = !empty($aSettings['shortLogin']);
|
||||
if (isset($aSettings['lowerLogin'])) {
|
||||
$object->lowerLogin = !empty($aSettings['lowerLogin']);
|
||||
}
|
||||
if (isset($aSettings['stripLogin'])) {
|
||||
$object->stripLogin = $aSettings['stripLogin'];
|
||||
}
|
||||
$object->ssl = SSLContext::fromArray($aSettings['ssl'] ?? []);
|
||||
if (!empty($aSettings['sasl']) && \is_array($aSettings['sasl'])) {
|
||||
$object->SASLMechanisms = $aSettings['sasl'];
|
||||
|
|
@ -110,6 +144,8 @@ class ConnectSettings implements \JsonSerializable
|
|||
'type' => $this->type,
|
||||
'timeout' => $this->timeout,
|
||||
'shortLogin' => $this->shortLogin,
|
||||
'lowerLogin' => $this->lowerLogin,
|
||||
'stripLogin' => $this->stripLogin,
|
||||
'sasl' => $this->SASLMechanisms,
|
||||
'ssl' => $this->ssl
|
||||
// 'tls_weak' => $this->tls_weak
|
||||
|
|
|
|||
|
|
@ -26,15 +26,13 @@ trait UserAuth
|
|||
public function resolveLoginCredentials(string &$sEmail, \SnappyMail\SensitiveString $oPassword, string &$sLogin): void
|
||||
{
|
||||
$sEmail = \SnappyMail\IDN::emailToAscii(\MailSo\Base\Utils::Trim($sEmail));
|
||||
if ($this->Config()->Get('login', 'login_lowercase', true)) {
|
||||
$sEmail = \mb_strtolower($sEmail);
|
||||
}
|
||||
|
||||
$this->Plugins()->RunHook('login.credentials.step-1', array(&$sEmail));
|
||||
|
||||
$oDomain = null;
|
||||
$oDomainProvider = $this->DomainProvider();
|
||||
if (!\str_contains($sEmail, '@')) {
|
||||
$this->logWrite("The email address '{$sEmail}' is incomplete", \LOG_INFO, 'LOGIN');
|
||||
$oDomain = null;
|
||||
if ($this->Config()->Get('login', 'determine_user_domain', false)) {
|
||||
// $sUserHost = \SnappyMail\IDN::toAscii($this->Http()->GetHost(false, true));
|
||||
$sUserHost = \strtolower(\idn_to_ascii($this->Http()->GetHost(false, true)));
|
||||
|
|
@ -42,7 +40,6 @@ trait UserAuth
|
|||
|
||||
$aDomainParts = \explode('.', $sUserHost);
|
||||
$iLimit = \min(\count($aDomainParts), 14);
|
||||
$oDomainProvider = $this->DomainProvider();
|
||||
while (0 < $iLimit--) {
|
||||
$sLine = \implode('.', $aDomainParts);
|
||||
$oDomain = $oDomainProvider->Load($sLine, false);
|
||||
|
|
@ -92,8 +89,11 @@ trait UserAuth
|
|||
$this->logMask($sPassword);
|
||||
|
||||
$sLogin = $sEmail;
|
||||
if ($this->Config()->Get('login', 'login_lowercase', true)) {
|
||||
$sLogin = \mb_strtolower($sLogin);
|
||||
if (\str_contains($sEmail, '@')
|
||||
&& ($oDomain || ($oDomain = $oDomainProvider->Load(\MailSo\Base\Utils::getEmailAddressDomain($sEmail))))
|
||||
) {
|
||||
$sEmail = $oDomain->ImapSettings()->fixUsername($sEmail, false);
|
||||
$sLogin = $oDomain->ImapSettings()->fixUsername($sLogin);
|
||||
}
|
||||
|
||||
$this->Plugins()->RunHook('login.credentials', array(&$sEmail, &$sLogin, &$sPassword));
|
||||
|
|
|
|||
|
|
@ -282,8 +282,6 @@ When this value is gethostname, the gethostname() value is used.
|
|||
'determine_user_language' => array(true, 'Detect language from browser header `Accept-Language`'),
|
||||
'determine_user_domain' => array(false, 'Like default_domain but then HTTP_HOST/SERVER_NAME without www.'),
|
||||
|
||||
'login_lowercase' => array(true),
|
||||
|
||||
'sign_me_auto' => array(\RainLoop\Enumerations\SignMeType::DefaultOff,
|
||||
'This option allows webmail to remember the logged in user
|
||||
once they closed the browser window.
|
||||
|
|
|
|||
|
|
@ -35,9 +35,7 @@ abstract class Account implements \JsonSerializable
|
|||
|
||||
public function IncLogin() : string
|
||||
{
|
||||
return $this->oDomain->ImapSettings()->shortLogin
|
||||
? \MailSo\Base\Utils::getEmailAddressLocalPart($this->sLogin)
|
||||
: $this->sLogin;
|
||||
return $this->sLogin;
|
||||
}
|
||||
|
||||
public function IncPassword() : string
|
||||
|
|
@ -47,10 +45,7 @@ abstract class Account implements \JsonSerializable
|
|||
|
||||
public function OutLogin() : string
|
||||
{
|
||||
$sSmtpLogin = $this->sSmtpLogin ?: $this->sLogin;
|
||||
return $this->oDomain->SmtpSettings()->shortLogin
|
||||
? \MailSo\Base\Utils::getEmailAddressLocalPart($sSmtpLogin)
|
||||
: $sSmtpLogin;
|
||||
return $this->sSmtpLogin ?: $this->sLogin;
|
||||
}
|
||||
|
||||
public function Domain() : Domain
|
||||
|
|
|
|||
|
|
@ -108,12 +108,12 @@ class Domain implements \JsonSerializable
|
|||
{
|
||||
$sW = \trim($this->whiteList);
|
||||
if ($sW) {
|
||||
$sEmail = \mb_strtolower($sEmail);
|
||||
$sLogin = \mb_strtolower($sLogin);
|
||||
$sEmail = $this->IMAP->fixUsername($sEmail);
|
||||
$sLogin = $this->IMAP->fixUsername($sLogin);
|
||||
$sUserPart = \MailSo\Base\Utils::getEmailAddressLocalPart($sLogin ?: $sEmail);
|
||||
$sItem = \strtok($sW, " ;,\n");
|
||||
while (false !== $sItem) {
|
||||
$sItem = \mb_strtolower(\idn_to_ascii(\trim($sItem)));
|
||||
$sItem = $this->IMAP->fixUsername(\trim($sItem));
|
||||
if ($sItem && (
|
||||
$sLogin === $sItem || $sEmail === $sItem
|
||||
|| $sUserPart === $sItem || \str_starts_with($sItem, "{$sUserPart}@")
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Žádné",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Povolit SIEVE skripty",
|
||||
"LABEL_USE_SHORT_LOGIN": "Používat krátký login",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Používat autorizaci",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Ingen",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Tillad sieve skripts",
|
||||
"LABEL_USE_SHORT_LOGIN": "Brug kort log ind",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Brug godkendelse",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Ohne",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Sieve-Skripte erlauben",
|
||||
"LABEL_USE_SHORT_LOGIN": "Kurze Benutzernamen verwenden",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Authentifizierung verwenden",
|
||||
"LABEL_SET_SENDER": "Verwenden Sie die Anmeldung als Absender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Erzwinge einzelnen AUTH PLAIN Befehl bei der Anmeldung",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "None",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Allow sieve scripts",
|
||||
"LABEL_USE_SHORT_LOGIN": "Use short login",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Use authentication",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Ninguno",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Permitir scripts de filtro",
|
||||
"LABEL_USE_SHORT_LOGIN": "Inicio de Sesión corto",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Usar autenticación",
|
||||
"LABEL_SET_SENDER": "Usar inicio de sesión como remitente",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Bat ere ez",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Onartu sieve scriptak",
|
||||
"LABEL_USE_SHORT_LOGIN": "Erabili login motza",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Erabili autentikazioa",
|
||||
"LABEL_SET_SENDER": "Erabili logina bidaltzaile bezala",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "هیچکدام",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "اجازه به اجراشوندههای sieve",
|
||||
"LABEL_USE_SHORT_LOGIN": "استفاده از ورود کوتاه بدون دامنه",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "استفاده از احراز هویت",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Ei mitään",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Salli sieve skriptit",
|
||||
"LABEL_USE_SHORT_LOGIN": "Käytä lyhyttä kirjautumista",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Käytä tunnistautumista",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Aucun",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Autoriser les scripts sieve",
|
||||
"LABEL_USE_SHORT_LOGIN": "Utiliser l'identifiant court",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Utiliser l'authentification",
|
||||
"LABEL_SET_SENDER": "Utiliser la connexion en tant qu'expéditeur",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Forcer l'authentification AUTH PLAIN",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Semmi",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "SIEVE szkriptek engedélyezése",
|
||||
"LABEL_USE_SHORT_LOGIN": "Rövid felhasználónév használata",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Hitelesítés használata",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Tidak satupun",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Izinkan script sieve",
|
||||
"LABEL_USE_SHORT_LOGIN": "Gunakan login singkat",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Gunakan otentikasi",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "None",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Permetti scripts sieve",
|
||||
"LABEL_USE_SHORT_LOGIN": "Usa login breve",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Usa autenticazione",
|
||||
"LABEL_SET_SENDER": "Usa login come mittente",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force login a comando singolo AUTH PLAIN",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "なし",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "SIEVEスクリプトを使用する",
|
||||
"LABEL_USE_SHORT_LOGIN": "短いログイン名を使う",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "認証を使用する",
|
||||
"LABEL_SET_SENDER": "ログイン名を送信者として使う",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Nėra",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Leisti sieve programavimą",
|
||||
"LABEL_USE_SHORT_LOGIN": "Naudoti trumpą prisijungimo vardą",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Naudoti autentifikavimą ",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Ingen",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Tillat sieve-skript",
|
||||
"LABEL_USE_SHORT_LOGIN": "Bruk forkortet brukernavn",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Bruk autentisering",
|
||||
"LABEL_SET_SENDER": "Bruk pålogging som avsender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Geen",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Sta Sieve scripts toe",
|
||||
"LABEL_USE_SHORT_LOGIN": "Gebruik verkorte login",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Gebruik authenticatie",
|
||||
"LABEL_SET_SENDER": "Gebruik login als verzender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Forceer een enkele opdracht AUTH PLAIN-aanmelding",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Bez zabezpieczeń",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Zezwól na skrypty sieve",
|
||||
"LABEL_USE_SHORT_LOGIN": "Użyj krótkiego loginu",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Użyj uwierzytelnienia",
|
||||
"LABEL_SET_SENDER": "Użyj loginu jako nadawcy",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Wymuś logowanie pojedynczą komendą AUTH PLAIN",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Nenhuma",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Permitir scripts sieve",
|
||||
"LABEL_USE_SHORT_LOGIN": "Usar login curto",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Usar autenticação",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Nenhuma",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Permitir scripts sieve",
|
||||
"LABEL_USE_SHORT_LOGIN": "Usar nome de utilizador curto",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Usar autenticação",
|
||||
"LABEL_SET_SENDER": "Usar nome de utilizador como remetente",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Forçar comando AUTH PLAIN único para autenticar",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Nenhuma",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Permitir scripts sieve",
|
||||
"LABEL_USE_SHORT_LOGIN": "Usar nome de utilizador curto",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Usar autenticação",
|
||||
"LABEL_SET_SENDER": "Usar nome de utilizador como remetente",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Forçar comando AUTH PLAIN único para autenticar",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Нет",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Разрешить Sieve сценарии",
|
||||
"LABEL_USE_SHORT_LOGIN": "Использовать короткий логин",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Использовать аутентификацию",
|
||||
"LABEL_SET_SENDER": "Использовать логин в качестве отправителя",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Принудительный вход командой AUTH PLAIN",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Žiadne",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Povoliť Sieve skripty",
|
||||
"LABEL_USE_SHORT_LOGIN": "Použiť skrátené prihlásenie",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Použiť overenie",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Nobeno",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Dovoljene sieve skripte",
|
||||
"LABEL_USE_SHORT_LOGIN": "Uporaba uporabniškega imena brez domene",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Uporaba overjanja",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Ingen",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Tillåta sikt skript",
|
||||
"LABEL_USE_SHORT_LOGIN": "Använda korta inloggning",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Använd autentisering",
|
||||
"LABEL_SET_SENDER": "Use login as sender",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "Không có",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "Cho phép script của sieve",
|
||||
"LABEL_USE_SHORT_LOGIN": "Dùng đăng nhập ngắn",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "Dùng xác minh",
|
||||
"LABEL_SET_SENDER": "Dùng tên đăng nhập là email người dùng",
|
||||
"LABEL_AUTH_PLAIN_LINE": "Force single command AUTH PLAIN login",
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@
|
|||
"SECURE_OPTION_NONE": "无",
|
||||
"LABEL_ALLOW_SIEVE_SCRIPTS": "可使用筛选脚本",
|
||||
"LABEL_USE_SHORT_LOGIN": "使用短用户名登录",
|
||||
"LABEL_LOWERCASE_LOGIN": "Lowercase login (case-insensitive)",
|
||||
"LABEL_USE_AUTH": "使用认证",
|
||||
"LABEL_SET_SENDER": "使用登录名作为发件人",
|
||||
"LABEL_AUTH_PLAIN_LINE": "强制单一 AUTH PLAIN 命令登录",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,17 @@
|
|||
value: imapShortLogin
|
||||
}
|
||||
}"></div>
|
||||
<span style="opacity:0.7"> (user@domain.com → user)</span>
|
||||
<span style="opacity:0.7"> (user@example.com → user)</span>
|
||||
<span style="opacity:0.7"> (user@example.com → user)</span>
|
||||
<br>
|
||||
<div style="display: inline-block;" data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_LOWERCASE_LOGIN',
|
||||
value: imapLowerLogin
|
||||
}
|
||||
}"></div>
|
||||
<span style="opacity:0.7"> (USER@example.com → user@example.com)</span>
|
||||
|
||||
<h4>SSL/TLS</h4>
|
||||
<div data-bind="component: {
|
||||
|
|
@ -157,7 +167,16 @@
|
|||
value: smtpShortLogin
|
||||
}
|
||||
}"></div>
|
||||
<span style="opacity:0.7"> (user@domain.com → user)</span>
|
||||
<span style="opacity:0.7"> (user@example.com → user)</span>
|
||||
<br>
|
||||
<div style="display: inline-block;" data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_LOWERCASE_LOGIN',
|
||||
value: smtpLowerLogin
|
||||
}
|
||||
}"></div>
|
||||
<span style="opacity:0.7"> (USER@example.com → user@example.com)</span>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue