mirror of
https://github.com/optim-enterprises-bv/Mailu-OIDC.git
synced 2025-10-29 09:12:41 +00:00
updated and merge conflicts fixed for mailu master
This commit is contained in:
26
.github/workflows/lock-closed-issues.yml
vendored
Normal file
26
.github/workflows/lock-closed-issues.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
name: 'Lock closed issues'
|
||||||
|
# Workflow that automatically locks already closed issues,
|
||||||
|
# pull requests and discussions.
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '30 6 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
discussions: write
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: lock-threads
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
action:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: dessant/lock-threads@v5
|
||||||
|
with:
|
||||||
|
issue-inactive-days: 21
|
||||||
|
pr-inactive-days: 28
|
||||||
|
discussion-inactive-days: 28
|
||||||
@@ -9,10 +9,11 @@ module.exports = {
|
|||||||
mode: 'production',
|
mode: 'production',
|
||||||
entry: {
|
entry: {
|
||||||
app: {
|
app: {
|
||||||
import: ['./assets/app.css', './assets/mailu.png', './assets/app.js'],
|
import: ['./assets/app.css', './assets/app.js'],
|
||||||
dependOn: 'vendor',
|
dependOn: 'vendor',
|
||||||
},
|
},
|
||||||
vendor: './assets/vendor.js',
|
vendor: './assets/vendor.js',
|
||||||
|
logo: './assets/mailu.png',
|
||||||
},
|
},
|
||||||
output: {
|
output: {
|
||||||
path: path.resolve(__dirname, 'static/'),
|
path: path.resolve(__dirname, 'static/'),
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
[python: **.py]
|
[python: **.py]
|
||||||
[jinja2: **/templates/**.html]
|
[jinja2: **/templates/**.html]
|
||||||
extensions=jinja2.ext.autoescape,jinja2.ext.with_
|
|
||||||
@@ -242,8 +242,7 @@ class User(Resource):
|
|||||||
if 'forward_enabled' in data:
|
if 'forward_enabled' in data:
|
||||||
user_found.forward_enabled = data['forward_enabled']
|
user_found.forward_enabled = data['forward_enabled']
|
||||||
if 'forward_destination' in data and len(data['forward_destination']) > 0:
|
if 'forward_destination' in data and len(data['forward_destination']) > 0:
|
||||||
if len(data['forward_destination']) == 0:
|
user_found.forward_destination = data['forward_destination']
|
||||||
user_found.forward_destination = data['forward_destination']
|
|
||||||
if 'forward_keep' in data:
|
if 'forward_keep' in data:
|
||||||
user_found.forward_keep = data['forward_keep']
|
user_found.forward_keep = data['forward_keep']
|
||||||
if 'reply_enabled' in data:
|
if 'reply_enabled' in data:
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ DEFAULT_CONFIG = {
|
|||||||
'DB_PW': None,
|
'DB_PW': None,
|
||||||
'DB_HOST': 'database',
|
'DB_HOST': 'database',
|
||||||
'DB_NAME': 'mailu',
|
'DB_NAME': 'mailu',
|
||||||
|
'DB_APPENDIX': '',
|
||||||
'SQLITE_DATABASE_FILE': 'data/main.db',
|
'SQLITE_DATABASE_FILE': 'data/main.db',
|
||||||
'SQLALCHEMY_DATABASE_URI': 'sqlite:////data/main.db',
|
'SQLALCHEMY_DATABASE_URI': 'sqlite:////data/main.db',
|
||||||
'SQLALCHEMY_DATABASE_URI_ROUNDCUBE': 'sqlite:////data/roundcube.db',
|
'SQLALCHEMY_DATABASE_URI_ROUNDCUBE': 'sqlite:////data/roundcube.db',
|
||||||
@@ -95,7 +96,7 @@ DEFAULT_CONFIG = {
|
|||||||
'SESSION_TIMEOUT': 3600,
|
'SESSION_TIMEOUT': 3600,
|
||||||
'PERMANENT_SESSION_LIFETIME': 30*24*3600,
|
'PERMANENT_SESSION_LIFETIME': 30*24*3600,
|
||||||
'SESSION_COOKIE_SECURE': None,
|
'SESSION_COOKIE_SECURE': None,
|
||||||
'CREDENTIAL_ROUNDS': 12,
|
'CREDENTIAL_ROUNDS': 13,
|
||||||
'TLS_PERMISSIVE': True,
|
'TLS_PERMISSIVE': True,
|
||||||
'TZ': 'Etc/UTC',
|
'TZ': 'Etc/UTC',
|
||||||
'DEFAULT_SPAM_THRESHOLD': 80,
|
'DEFAULT_SPAM_THRESHOLD': 80,
|
||||||
@@ -114,8 +115,8 @@ class ConfigManager:
|
|||||||
|
|
||||||
DB_TEMPLATES = {
|
DB_TEMPLATES = {
|
||||||
'sqlite': 'sqlite:////{SQLITE_DATABASE_FILE}',
|
'sqlite': 'sqlite:////{SQLITE_DATABASE_FILE}',
|
||||||
'postgresql': 'postgresql://{DB_USER}:{DB_PW}@{DB_HOST}/{DB_NAME}',
|
'postgresql': 'postgresql://{DB_USER}:{DB_PW}@{DB_HOST}/{DB_NAME}{DB_APPENDIX}',
|
||||||
'mysql': 'mysql+mysqlconnector://{DB_USER}:{DB_PW}@{DB_HOST}/{DB_NAME}',
|
'mysql': 'mysql+mysqlconnector://{DB_USER}:{DB_PW}@{DB_HOST}/{DB_NAME}{DB_APPENDIX}',
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ def handle_authentication(headers):
|
|||||||
ip = urllib.parse.unquote(headers["Client-Ip"])
|
ip = urllib.parse.unquote(headers["Client-Ip"])
|
||||||
except:
|
except:
|
||||||
app.logger.warning(f'Received undecodable user/password from front: {headers.get("Auth-User", "")!r}')
|
app.logger.warning(f'Received undecodable user/password from front: {headers.get("Auth-User", "")!r}')
|
||||||
|
# app.logger.warn(f'Received undecodable user/password from front: {headers.get("Auth-User", "")!r}')
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
user = models.User.query.get(user_email) if '@' in user_email else None
|
user = models.User.query.get(user_email) if '@' in user_email else None
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ def autoconfig_mozilla():
|
|||||||
<username>%EMAILADDRESS%</username>
|
<username>%EMAILADDRESS%</username>
|
||||||
<authentication>password-cleartext</authentication>
|
<authentication>password-cleartext</authentication>
|
||||||
<addThisServer>true</addThisServer>
|
<addThisServer>true</addThisServer>
|
||||||
<useGlobalPreferredServer>true</useGlobalPreferredServer>
|
<useGlobalPreferredServer>false</useGlobalPreferredServer>
|
||||||
</outgoingServer>
|
</outgoingServer>
|
||||||
|
|
||||||
<documentation url="https://{hostname}/admin/client">
|
<documentation url="https://{hostname}/admin/client">
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from mailu import models
|
|||||||
from mailu.internal import internal
|
from mailu.internal import internal
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
|
import idna
|
||||||
|
|
||||||
def vault_error(*messages, status=404):
|
def vault_error(*messages, status=404):
|
||||||
return flask.make_response(flask.jsonify({'errors':messages}), status)
|
return flask.make_response(flask.jsonify({'errors':messages}), status)
|
||||||
@@ -19,7 +20,16 @@ def rspamd_dkim_key(domain_name):
|
|||||||
if key := domain.dkim_key:
|
if key := domain.dkim_key:
|
||||||
selectors.append(
|
selectors.append(
|
||||||
{
|
{
|
||||||
'domain' : domain.name,
|
'domain' : idna.encode(domain.name.lower()).decode('ascii'),
|
||||||
|
'key' : key.decode('utf8'),
|
||||||
|
'selector': flask.current_app.config.get('DKIM_SELECTOR', 'dkim'),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
elif domain := models.Alternative.query.get(domain_name):
|
||||||
|
if key := domain.domain.dkim_key:
|
||||||
|
selectors.append(
|
||||||
|
{
|
||||||
|
'domain' : idna.encode(domain.name.lower()).decode('ascii'),
|
||||||
'key' : key.decode('utf8'),
|
'key' : key.decode('utf8'),
|
||||||
'selector': flask.current_app.config.get('DKIM_SELECTOR', 'dkim'),
|
'selector': flask.current_app.config.get('DKIM_SELECTOR', 'dkim'),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -358,6 +358,54 @@ class Alternative(Base):
|
|||||||
domain = db.relationship(Domain,
|
domain = db.relationship(Domain,
|
||||||
backref=db.backref('alternatives', cascade='all, delete-orphan'))
|
backref=db.backref('alternatives', cascade='all, delete-orphan'))
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dns_dkim(self):
|
||||||
|
""" return DKIM record for domain """
|
||||||
|
if self.domain.dkim_key:
|
||||||
|
selector = app.config['DKIM_SELECTOR']
|
||||||
|
return f'{selector}._domainkey.{self.name}. 600 IN TXT "v=DKIM1; k=rsa; p={self.domain.dkim_publickey}"'
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def dns_dmarc(self):
|
||||||
|
""" return DMARC record for domain """
|
||||||
|
if self.domain.dkim_key:
|
||||||
|
domain = app.config['DOMAIN']
|
||||||
|
rua = app.config['DMARC_RUA']
|
||||||
|
rua = f' rua=mailto:{rua}@{domain};' if rua else ''
|
||||||
|
ruf = app.config['DMARC_RUF']
|
||||||
|
ruf = f' ruf=mailto:{ruf}@{domain};' if ruf else ''
|
||||||
|
return f'_dmarc.{self.name}. 600 IN TXT "v=DMARC1; p=reject;{rua}{ruf} adkim=s; aspf=s"'
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def dns_dmarc_report(self):
|
||||||
|
""" return DMARC report record for mailu server """
|
||||||
|
if self.domain.dkim_key:
|
||||||
|
domain = app.config['DOMAIN']
|
||||||
|
return f'{self.name}._report._dmarc.{domain}. 600 IN TXT "v=DMARC1;"'
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def dns_mx(self):
|
||||||
|
""" return MX record for domain """
|
||||||
|
hostname = app.config['HOSTNAME']
|
||||||
|
return f'{self.name}. 600 IN MX 10 {hostname}.'
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def dns_spf(self):
|
||||||
|
""" return SPF record for domain """
|
||||||
|
hostname = app.config['HOSTNAME']
|
||||||
|
return f'{self.name}. 600 IN TXT "v=spf1 mx a:{hostname} ~all"'
|
||||||
|
|
||||||
|
def check_mx(self):
|
||||||
|
""" checks if MX record for domain points to mailu host """
|
||||||
|
try:
|
||||||
|
hostnames = set(app.config['HOSTNAMES'].split(','))
|
||||||
|
return any(
|
||||||
|
rset.exchange.to_text().rstrip('.') in hostnames
|
||||||
|
for rset in dns.resolver.resolve(self.name, 'MX')
|
||||||
|
)
|
||||||
|
except dns.exception.DNSException:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Relay(Base):
|
class Relay(Base):
|
||||||
""" Relayed mail domain.
|
""" Relayed mail domain.
|
||||||
|
|||||||
@@ -1148,7 +1148,7 @@ class TokenSchema(BaseSchema):
|
|||||||
sibling = True
|
sibling = True
|
||||||
|
|
||||||
password = PasswordField(required=True, metadata={'model': models.User})
|
password = PasswordField(required=True, metadata={'model': models.User})
|
||||||
hash_password = fields.Boolean(load_only=True, missing=False)
|
hash_password = fields.Boolean(load_only=True, load_default=False)
|
||||||
|
|
||||||
|
|
||||||
@mapped
|
@mapped
|
||||||
@@ -1193,7 +1193,7 @@ class UserSchema(BaseSchema):
|
|||||||
fetches = fields.Nested(FetchSchema, many=True)
|
fetches = fields.Nested(FetchSchema, many=True)
|
||||||
|
|
||||||
password = PasswordField(required=True, metadata={'model': models.User})
|
password = PasswordField(required=True, metadata={'model': models.User})
|
||||||
hash_password = fields.Boolean(load_only=True, missing=False)
|
hash_password = fields.Boolean(load_only=True, load_default=False)
|
||||||
|
|
||||||
|
|
||||||
@mapped
|
@mapped
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: Mailu 2024.06\n"
|
||||||
"Report-Msgid-Bugs-To: translate@s474n.com\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-05-22 18:47+0200\n"
|
"POT-Creation-Date: 2024-06-20 12:30+0000\n"
|
||||||
"PO-Revision-Date: 2023-02-21 16:14+0100\n"
|
"PO-Revision-Date: 2024-09-10 17:16+0200\n"
|
||||||
"Last-Translator: S474N <translate@s474n.com>\n"
|
"Last-Translator: kunago <miris@kunago.com>\n"
|
||||||
"Language-Team: Czech\n"
|
"Language-Team: Czech\n"
|
||||||
"Language: cs_CZ\n"
|
"Language: cs_CZ\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -17,23 +17,39 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);\n"
|
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);\n"
|
||||||
"Generated-By: Babel 2.3.4\n"
|
"Generated-By: Babel 2.3.4\n"
|
||||||
"X-Generator: Poedit 3.2.2\n"
|
"X-Generator: Poedit 3.5\n"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:8 mailu/ui/forms.py:79
|
#: mailu/sso/forms.py:8 mailu/ui/forms.py:91
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:80 mailu/ui/forms.py:93
|
#: mailu/sso/forms.py:9 mailu/ui/forms.py:92 mailu/ui/forms.py:108
|
||||||
#: mailu/ui/forms.py:112 mailu/ui/forms.py:166
|
#: mailu/ui/forms.py:128 mailu/ui/forms.py:135 mailu/ui/forms.py:197
|
||||||
#: mailu/ui/templates/client.html:32 mailu/ui/templates/client.html:57
|
#: mailu/ui/templates/client.html:31 mailu/ui/templates/client.html:56
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Heslo"
|
msgstr "Heslo"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:10 mailu/sso/forms.py:11 mailu/sso/templates/login.html:4
|
#: mailu/sso/forms.py:11 mailu/sso/forms.py:12 mailu/sso/templates/login.html:4
|
||||||
#: mailu/ui/templates/sidebar.html:142
|
#: mailu/sso/templates/sidebar_sso.html:42 mailu/ui/templates/sidebar.html:144
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
msgstr "Přihlásit se"
|
msgstr "Přihlásit se"
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:15 mailu/ui/forms.py:134
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr "Současné heslo"
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:16
|
||||||
|
msgid "New password"
|
||||||
|
msgstr "Nové heslo"
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:17
|
||||||
|
msgid "New password (again)"
|
||||||
|
msgstr "Nové heslo (znovu)"
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:19
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr "Změnit heslo"
|
||||||
|
|
||||||
#: mailu/sso/templates/base_sso.html:8 mailu/ui/templates/base.html:8
|
#: mailu/sso/templates/base_sso.html:8 mailu/ui/templates/base.html:8
|
||||||
msgid "Admin page for"
|
msgid "Admin page for"
|
||||||
msgstr "Admin stránka pro"
|
msgstr "Admin stránka pro"
|
||||||
@@ -46,255 +62,301 @@ msgstr "přepnout postranní panel"
|
|||||||
msgid "change language"
|
msgid "change language"
|
||||||
msgstr "změnit jazyk"
|
msgstr "změnit jazyk"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:4 mailu/ui/templates/sidebar.html:94
|
#: mailu/sso/templates/sidebar_sso.html:4 mailu/ui/templates/sidebar.html:96
|
||||||
msgid "Go to"
|
msgid "Go to"
|
||||||
msgstr "Jít"
|
msgstr "Přejít"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:9 mailu/ui/templates/client.html:4
|
#: mailu/sso/templates/sidebar_sso.html:9 mailu/ui/templates/client.html:4
|
||||||
#: mailu/ui/templates/sidebar.html:50 mailu/ui/templates/sidebar.html:107
|
#: mailu/ui/templates/sidebar.html:52 mailu/ui/templates/sidebar.html:109
|
||||||
msgid "Client setup"
|
msgid "Client setup"
|
||||||
msgstr "Nastavení klienta"
|
msgstr "Nastavení klienta"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:16 mailu/ui/templates/sidebar.html:114
|
#: mailu/sso/templates/sidebar_sso.html:16 mailu/ui/templates/sidebar.html:116
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr "Webová stránka"
|
msgstr "Webová stránka"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:22 mailu/ui/templates/sidebar.html:120
|
#: mailu/sso/templates/sidebar_sso.html:22 mailu/ui/templates/sidebar.html:122
|
||||||
msgid "Help"
|
msgid "Help"
|
||||||
msgstr "Pomoc"
|
msgstr "Pomoc"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:35
|
#: mailu/sso/templates/sidebar_sso.html:35
|
||||||
#: mailu/ui/templates/domain/signup.html:4 mailu/ui/templates/sidebar.html:127
|
#: mailu/ui/templates/domain/signup.html:4 mailu/ui/templates/sidebar.html:129
|
||||||
msgid "Register a domain"
|
msgid "Register a domain"
|
||||||
msgstr "Registrovat doménu"
|
msgstr "Registrovat doménu"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:49 mailu/ui/forms.py:95
|
#: mailu/sso/templates/sidebar_sso.html:55 mailu/ui/forms.py:111
|
||||||
#: mailu/ui/templates/sidebar.html:149 mailu/ui/templates/user/signup.html:4
|
#: mailu/ui/templates/sidebar.html:151 mailu/ui/templates/user/signup.html:4
|
||||||
#: mailu/ui/templates/user/signup_domain.html:4
|
#: mailu/ui/templates/user/signup_domain.html:4
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr "Registrovat se"
|
msgstr "Registrovat se"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:33 mailu/ui/forms.py:36
|
#: mailu/sso/views/base.py:48
|
||||||
msgid "Invalid email address."
|
msgid "Too many attempts from your IP (rate-limit)"
|
||||||
msgstr "Špatná mailová adresa."
|
msgstr "Příliš mnoho pokusů z vaší IP adresy (omezení rychlosti)"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:45
|
#: mailu/sso/views/base.py:51
|
||||||
|
msgid "Too many attempts for this user (rate-limit)"
|
||||||
|
msgstr "Příliš mnoho pokusů tohoto uživatele (omezení rychlosti)"
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:69
|
||||||
|
msgid "Wrong e-mail or password"
|
||||||
|
msgstr "Chybný e-mail nebo heslo"
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:85
|
||||||
|
msgid "The new password can't be the same as the old password"
|
||||||
|
msgstr "Nové heslo nemůže být shodné s původním"
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:88
|
||||||
|
msgid "The new passwords don't match"
|
||||||
|
msgstr "Nová hesla se neshodují"
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:100
|
||||||
|
msgid "The current password is incorrect!"
|
||||||
|
msgstr "Současné heslo není správné!"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:34 mailu/ui/forms.py:37
|
||||||
|
msgid "Invalid email address."
|
||||||
|
msgstr "Neplatná e-mailová adresa."
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:47
|
||||||
|
msgid "Invalid list of folders."
|
||||||
|
msgstr "Neplatný seznam složek."
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:56
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Potvrdit"
|
msgstr "Potvrdit"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:48 mailu/ui/forms.py:58
|
#: mailu/ui/forms.py:59 mailu/ui/forms.py:69
|
||||||
#: mailu/ui/templates/domain/details.html:26
|
#: mailu/ui/templates/domain/details.html:26
|
||||||
#: mailu/ui/templates/domain/list.html:19 mailu/ui/templates/relay/list.html:18
|
#: mailu/ui/templates/domain/list.html:19 mailu/ui/templates/relay/list.html:18
|
||||||
msgid "Domain name"
|
msgid "Domain name"
|
||||||
msgstr "Název domény"
|
msgstr "Název domény"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:49
|
#: mailu/ui/forms.py:60
|
||||||
msgid "Maximum user count"
|
msgid "Maximum user count"
|
||||||
msgstr "Maximální počet uživatelů"
|
msgstr "Maximální počet uživatelů"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:50
|
#: mailu/ui/forms.py:61
|
||||||
msgid "Maximum alias count"
|
msgid "Maximum alias count"
|
||||||
msgstr "Maximální počet aliasů"
|
msgstr "Maximální počet aliasů"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:51
|
#: mailu/ui/forms.py:62
|
||||||
msgid "Maximum user quota"
|
msgid "Maximum user quota"
|
||||||
msgstr "Maximální uživatelská kvóta"
|
msgstr "Maximální kvóta uživatele"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:52
|
#: mailu/ui/forms.py:63 mailu/ui/templates/domain/list.html:24
|
||||||
msgid "Enable sign-up"
|
msgid "Enable sign-up"
|
||||||
msgstr "Povolit registraci"
|
msgstr "Povolit registraci"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:53 mailu/ui/forms.py:74 mailu/ui/forms.py:86
|
#: mailu/ui/forms.py:64 mailu/ui/forms.py:86 mailu/ui/forms.py:100
|
||||||
#: mailu/ui/forms.py:132 mailu/ui/forms.py:144
|
#: mailu/ui/forms.py:155 mailu/ui/forms.py:175
|
||||||
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:22
|
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:23
|
||||||
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:20
|
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:21
|
||||||
#: mailu/ui/templates/user/list.html:24
|
#: mailu/ui/templates/user/list.html:24
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr "Komentář"
|
msgstr "Komentář"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:54 mailu/ui/forms.py:68 mailu/ui/forms.py:75
|
#: mailu/ui/forms.py:65 mailu/ui/forms.py:80 mailu/ui/forms.py:87
|
||||||
#: mailu/ui/forms.py:88 mailu/ui/forms.py:136 mailu/ui/forms.py:145
|
#: mailu/ui/forms.py:103 mailu/ui/forms.py:159 mailu/ui/forms.py:176
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Uložit"
|
msgstr "Uložit"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:59
|
#: mailu/ui/forms.py:70
|
||||||
msgid "Initial admin"
|
msgid "Initial admin"
|
||||||
msgstr "Hlavní admin"
|
msgstr "Výchozí admin"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:60
|
#: mailu/ui/forms.py:71
|
||||||
msgid "Admin password"
|
msgid "Admin password"
|
||||||
msgstr "Heslo admina"
|
msgstr "Heslo admina"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:61 mailu/ui/forms.py:81 mailu/ui/forms.py:94
|
#: mailu/ui/forms.py:72 mailu/ui/forms.py:93 mailu/ui/forms.py:109
|
||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "Potvrdit heslo"
|
msgstr "Potvrdit heslo"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:63
|
#: mailu/ui/forms.py:75
|
||||||
msgid "Create"
|
msgid "Create"
|
||||||
msgstr "Vytvořit"
|
msgstr "Vytvořit"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:67
|
#: mailu/ui/forms.py:79
|
||||||
msgid "Alternative name"
|
msgid "Alternative name"
|
||||||
msgstr "Alternativní jméno"
|
msgstr "Alternativní jméno"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:72
|
#: mailu/ui/forms.py:84
|
||||||
msgid "Relayed domain name"
|
msgid "Relayed domain name"
|
||||||
msgstr "Seznam předávaných domén"
|
msgstr "Seznam předávaných domén"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:73 mailu/ui/templates/relay/list.html:19
|
#: mailu/ui/forms.py:85 mailu/ui/templates/relay/list.html:19
|
||||||
msgid "Remote host"
|
msgid "Remote host"
|
||||||
msgstr "Vzdálený hostitel"
|
msgstr "Vzdálený hostitel"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:82 mailu/ui/templates/user/list.html:23
|
#: mailu/ui/forms.py:95 mailu/ui/templates/domain/list.html:22
|
||||||
#: mailu/ui/templates/user/signup_domain.html:16
|
#: mailu/ui/templates/user/list.html:23
|
||||||
|
#: mailu/ui/templates/user/signup_domain.html:17
|
||||||
msgid "Quota"
|
msgid "Quota"
|
||||||
msgstr "Kvóta"
|
msgstr "Kvóta"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:83
|
#: mailu/ui/forms.py:96
|
||||||
msgid "Allow IMAP access"
|
msgid "Allow IMAP access"
|
||||||
msgstr "Povolit přístup IMAP"
|
msgstr "Povolit přístup IMAP"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:84
|
#: mailu/ui/forms.py:97
|
||||||
msgid "Allow POP3 access"
|
msgid "Allow POP3 access"
|
||||||
msgstr "Povolit přístup POP3"
|
msgstr "Povolit přístup POP3"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:85 mailu/ui/forms.py:101
|
#: mailu/ui/forms.py:98
|
||||||
|
msgid "Allow the user to spoof the sender (send email as anyone)"
|
||||||
|
msgstr "Povolit uživateli napodobit odesílatele (odeslat e-mail jako kdokoli)"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:99 mailu/ui/forms.py:117
|
||||||
#: mailu/ui/templates/user/settings.html:15
|
#: mailu/ui/templates/user/settings.html:15
|
||||||
msgid "Displayed name"
|
msgid "Displayed name"
|
||||||
msgstr "Zobrazené jméno"
|
msgstr "Zobrazené jméno"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:87
|
#: mailu/ui/forms.py:101
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Povoleno"
|
msgstr "Povoleno"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:92
|
|
||||||
msgid "Email address"
|
|
||||||
msgstr "Emailová adresa"
|
|
||||||
|
|
||||||
#: mailu/ui/forms.py:102
|
#: mailu/ui/forms.py:102
|
||||||
|
msgid "Force password change at next login"
|
||||||
|
msgstr "Vynutit změnu hesla při příštím přihlášení"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:107
|
||||||
|
msgid "Email address"
|
||||||
|
msgstr "E-mailová adresa"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:118
|
||||||
msgid "Enable spam filter"
|
msgid "Enable spam filter"
|
||||||
msgstr "Povolit filtr spamu"
|
msgstr "Povolit filtr spamu"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:103
|
#: mailu/ui/forms.py:119
|
||||||
msgid "Enable marking spam mails as read"
|
msgid "Enable marking spam mails as read"
|
||||||
msgstr "Povolit označování spamových e-mailů jako přečtených"
|
msgstr "Povolit označování spamových e-mailů jako přečtených"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:104
|
#: mailu/ui/forms.py:120
|
||||||
msgid "Spam filter tolerance"
|
msgid "Spam filter tolerance"
|
||||||
msgstr "Tolerance spamového filtru"
|
msgstr "Tolerance spamového filtru"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:105
|
#: mailu/ui/forms.py:121
|
||||||
msgid "Enable forwarding"
|
msgid "Enable forwarding"
|
||||||
msgstr "Povolit přeposílání"
|
msgstr "Povolit přeposílání"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:106
|
#: mailu/ui/forms.py:122
|
||||||
msgid "Keep a copy of the emails"
|
msgid "Keep a copy of the emails"
|
||||||
msgstr "Zachovat kopii e-mailů"
|
msgstr "Zachovat kopii e-mailů"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:107 mailu/ui/forms.py:143
|
#: mailu/ui/forms.py:123 mailu/ui/forms.py:174
|
||||||
#: mailu/ui/templates/alias/list.html:21
|
#: mailu/ui/templates/alias/list.html:21
|
||||||
msgid "Destination"
|
msgid "Destination"
|
||||||
msgstr "Cíl"
|
msgstr "Cíl"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:108
|
#: mailu/ui/forms.py:124
|
||||||
msgid "Save settings"
|
msgid "Save settings"
|
||||||
msgstr "Uložit nastavení"
|
msgstr "Uložit nastavení"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:113
|
#: mailu/ui/forms.py:129 mailu/ui/forms.py:136
|
||||||
msgid "Password check"
|
msgid "Password check"
|
||||||
msgstr "Kontrola hesla"
|
msgstr "Kontrola hesla"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:114 mailu/ui/templates/sidebar.html:25
|
#: mailu/ui/forms.py:131 mailu/ui/forms.py:138
|
||||||
|
#: mailu/ui/templates/sidebar.html:25
|
||||||
msgid "Update password"
|
msgid "Update password"
|
||||||
msgstr "Aktualizovat heslo"
|
msgstr "Aktualizovat heslo"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:118
|
#: mailu/ui/forms.py:141
|
||||||
msgid "Enable automatic reply"
|
msgid "Enable automatic reply"
|
||||||
msgstr "Povolit automatickou odpověď"
|
msgstr "Povolit automatickou odpověď"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:119
|
#: mailu/ui/forms.py:142
|
||||||
msgid "Reply subject"
|
msgid "Reply subject"
|
||||||
msgstr "Předmět odpovědi"
|
msgstr "Předmět odpovědi"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:120
|
#: mailu/ui/forms.py:143
|
||||||
msgid "Reply body"
|
msgid "Reply body"
|
||||||
msgstr "Tělo odpovědi"
|
msgstr "Tělo odpovědi"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:122
|
#: mailu/ui/forms.py:145
|
||||||
msgid "Start of vacation"
|
msgid "Start of vacation"
|
||||||
msgstr "Začátek dovolené"
|
msgstr "Začátek dovolené"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:123
|
#: mailu/ui/forms.py:146
|
||||||
msgid "End of vacation"
|
msgid "End of vacation"
|
||||||
msgstr "Konec dovolené"
|
msgstr "Konec dovolené"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:124
|
#: mailu/ui/forms.py:147
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aktualizovat"
|
msgstr "Aktualizovat"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:129
|
#: mailu/ui/forms.py:152
|
||||||
msgid "Your token (write it down, as it will never be displayed again)"
|
msgid "Your token (write it down, as it will never be displayed again)"
|
||||||
msgstr "Váš token (zapište si ho, protože se již nikdy nezobrazí)"
|
msgstr "Váš token (zapište si ho, protože se již nikdy nezobrazí)"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:134 mailu/ui/templates/token/list.html:21
|
#: mailu/ui/forms.py:157 mailu/ui/templates/token/list.html:22
|
||||||
msgid "Authorized IP"
|
msgid "Authorized IP"
|
||||||
msgstr "Autorizovaná IP"
|
msgstr "Autorizovaná IP"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:140
|
#: mailu/ui/forms.py:171
|
||||||
msgid "Alias"
|
msgid "Alias"
|
||||||
msgstr "Alias"
|
msgstr "Alias"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:142
|
#: mailu/ui/forms.py:173
|
||||||
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
||||||
msgstr "Použít syntaxi jako SQL (např. pro doménové koše)"
|
msgstr "Použít syntaxi SQL LIKE (např. pro doménové koše)"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:149
|
#: mailu/ui/forms.py:180
|
||||||
msgid "Admin email"
|
msgid "Admin email"
|
||||||
msgstr "Email admina"
|
msgstr "E-mail admina"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:150 mailu/ui/forms.py:155 mailu/ui/forms.py:168
|
#: mailu/ui/forms.py:181 mailu/ui/forms.py:186 mailu/ui/forms.py:201
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Poslat"
|
msgstr "Odeslat"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:154
|
#: mailu/ui/forms.py:185
|
||||||
msgid "Manager email"
|
msgid "Manager email"
|
||||||
msgstr "E-mail manažera"
|
msgstr "E-mail manažera"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:159
|
#: mailu/ui/forms.py:190
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protokol"
|
msgstr "Protokol"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:162
|
#: mailu/ui/forms.py:193
|
||||||
msgid "Hostname or IP"
|
msgid "Hostname or IP"
|
||||||
msgstr "Hostitel nebo IP"
|
msgstr "Hostitel nebo IP"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:163 mailu/ui/templates/client.html:20
|
#: mailu/ui/forms.py:194 mailu/ui/templates/client.html:19
|
||||||
#: mailu/ui/templates/client.html:45
|
#: mailu/ui/templates/client.html:44
|
||||||
msgid "TCP port"
|
msgid "TCP port"
|
||||||
msgstr "TCP port"
|
msgstr "TCP port"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:164
|
#: mailu/ui/forms.py:195
|
||||||
msgid "Enable TLS"
|
msgid "Enable TLS"
|
||||||
msgstr "Povolit TLS"
|
msgstr "Povolit TLS"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:165 mailu/ui/templates/client.html:28
|
#: mailu/ui/forms.py:196 mailu/ui/templates/client.html:27
|
||||||
#: mailu/ui/templates/client.html:53 mailu/ui/templates/fetch/list.html:21
|
#: mailu/ui/templates/client.html:52 mailu/ui/templates/fetch/list.html:21
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Uživatelské jméno"
|
msgstr "Uživatelské jméno"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:167
|
#: mailu/ui/forms.py:198
|
||||||
msgid "Keep emails on the server"
|
msgid "Keep emails on the server"
|
||||||
msgstr "Zachovat e-maily na serveru"
|
msgstr "Ponechat e-maily na serveru"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:172
|
#: mailu/ui/forms.py:199
|
||||||
|
msgid "Rescan emails locally"
|
||||||
|
msgstr "Přeskenovat e-maily lokálně"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:200
|
||||||
|
msgid "Folders to fetch on the server"
|
||||||
|
msgstr "Složky na serveru určené ke stažení"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:205
|
||||||
msgid "Announcement subject"
|
msgid "Announcement subject"
|
||||||
msgstr "Předmět oznámení"
|
msgstr "Předmět oznámení"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:174
|
#: mailu/ui/forms.py:207
|
||||||
msgid "Announcement body"
|
msgid "Announcement body"
|
||||||
msgstr "Tělo oznámení"
|
msgstr "Tělo oznámení"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:176
|
#: mailu/ui/forms.py:209
|
||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr "Poslat"
|
msgstr "Poslat"
|
||||||
|
|
||||||
@@ -302,7 +364,7 @@ msgstr "Poslat"
|
|||||||
msgid "Public announcement"
|
msgid "Public announcement"
|
||||||
msgstr "Veřejné oznámení"
|
msgstr "Veřejné oznámení"
|
||||||
|
|
||||||
#: mailu/ui/templates/antispam.html:4 mailu/ui/templates/sidebar.html:80
|
#: mailu/ui/templates/antispam.html:4 mailu/ui/templates/sidebar.html:82
|
||||||
#: mailu/ui/templates/user/settings.html:19
|
#: mailu/ui/templates/user/settings.html:19
|
||||||
msgid "Antispam"
|
msgid "Antispam"
|
||||||
msgstr "Antispam"
|
msgstr "Antispam"
|
||||||
@@ -315,22 +377,30 @@ msgstr "Stavová stránka RSPAMD"
|
|||||||
msgid "configure your email client"
|
msgid "configure your email client"
|
||||||
msgstr "nakonfigurovat e-mailového klienta"
|
msgstr "nakonfigurovat e-mailového klienta"
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:13
|
#: mailu/ui/templates/client.html:12
|
||||||
msgid "Incoming mail"
|
msgid "Incoming mail"
|
||||||
msgstr "Příchozí mail"
|
msgstr "Příchozí mail"
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:16 mailu/ui/templates/client.html:41
|
#: mailu/ui/templates/client.html:15 mailu/ui/templates/client.html:40
|
||||||
msgid "Mail protocol"
|
msgid "Mail protocol"
|
||||||
msgstr "Poštovní protokol"
|
msgstr "Poštovní protokol"
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:24 mailu/ui/templates/client.html:49
|
#: mailu/ui/templates/client.html:23 mailu/ui/templates/client.html:48
|
||||||
msgid "Server name"
|
msgid "Server name"
|
||||||
msgstr "Název serveru"
|
msgstr "Název serveru"
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:38
|
#: mailu/ui/templates/client.html:37
|
||||||
msgid "Outgoing mail"
|
msgid "Outgoing mail"
|
||||||
msgstr "Odchozí pošta"
|
msgstr "Odchozí pošta"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:62
|
||||||
|
msgid "If you use an Apple device,"
|
||||||
|
msgstr "Pokud používáte zařízení Apple,"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:63
|
||||||
|
msgid "click here to auto-configure it."
|
||||||
|
msgstr "klepněte zde pro automatické nastavení."
|
||||||
|
|
||||||
#: mailu/ui/templates/confirm.html:4
|
#: mailu/ui/templates/confirm.html:4
|
||||||
msgid "Confirm action"
|
msgid "Confirm action"
|
||||||
msgstr "Potvrdit akci"
|
msgstr "Potvrdit akci"
|
||||||
@@ -348,7 +418,7 @@ msgstr "Chyba Dockeru"
|
|||||||
msgid "An error occurred while talking to the Docker server."
|
msgid "An error occurred while talking to the Docker server."
|
||||||
msgstr "Při komunikaci se serverem Docker došlo k chybě."
|
msgstr "Při komunikaci se serverem Docker došlo k chybě."
|
||||||
|
|
||||||
#: mailu/ui/templates/macros.html:129
|
#: mailu/ui/templates/macros.html:128
|
||||||
msgid "copy to clipboard"
|
msgid "copy to clipboard"
|
||||||
msgstr "zkopírovat do schránky"
|
msgstr "zkopírovat do schránky"
|
||||||
|
|
||||||
@@ -356,48 +426,48 @@ msgstr "zkopírovat do schránky"
|
|||||||
msgid "My account"
|
msgid "My account"
|
||||||
msgstr "Můj účet"
|
msgstr "Můj účet"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:19 mailu/ui/templates/user/list.html:37
|
#: mailu/ui/templates/sidebar.html:19 mailu/ui/templates/user/list.html:36
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Nastavení"
|
msgstr "Nastavení"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:31 mailu/ui/templates/user/list.html:38
|
#: mailu/ui/templates/sidebar.html:31 mailu/ui/templates/user/list.html:37
|
||||||
msgid "Auto-reply"
|
msgid "Auto-reply"
|
||||||
msgstr "Automatická odpověď"
|
msgstr "Automatická odpověď"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:4 mailu/ui/templates/sidebar.html:37
|
#: mailu/ui/templates/fetch/list.html:4 mailu/ui/templates/sidebar.html:38
|
||||||
#: mailu/ui/templates/user/list.html:39
|
#: mailu/ui/templates/user/list.html:39
|
||||||
msgid "Fetched accounts"
|
msgid "Fetched accounts"
|
||||||
msgstr "Fetched účty"
|
msgstr "Stažené účty"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:43 mailu/ui/templates/token/list.html:4
|
#: mailu/ui/templates/sidebar.html:45 mailu/ui/templates/token/list.html:4
|
||||||
msgid "Authentication tokens"
|
msgid "Authentication tokens"
|
||||||
msgstr "Autentizační tokeny"
|
msgstr "Autentizační tokeny"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:56
|
#: mailu/ui/templates/sidebar.html:58
|
||||||
msgid "Administration"
|
msgid "Administration"
|
||||||
msgstr "Administrace"
|
msgstr "Administrace"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:62
|
#: mailu/ui/templates/sidebar.html:64
|
||||||
msgid "Announcement"
|
msgid "Announcement"
|
||||||
msgstr "Oznámení"
|
msgstr "Oznámení"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:68
|
#: mailu/ui/templates/sidebar.html:70
|
||||||
msgid "Administrators"
|
msgid "Administrators"
|
||||||
msgstr "Administrátoři"
|
msgstr "Administrátoři"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:74
|
#: mailu/ui/templates/sidebar.html:76
|
||||||
msgid "Relayed domains"
|
msgid "Relayed domains"
|
||||||
msgstr "Relayované domény"
|
msgstr "Relayované domény"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:88
|
#: mailu/ui/templates/sidebar.html:90
|
||||||
msgid "Mail domains"
|
msgid "Mail domains"
|
||||||
msgstr "Poštovní domény"
|
msgstr "Poštovní domény"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:99
|
#: mailu/ui/templates/sidebar.html:101
|
||||||
msgid "Webmail"
|
msgid "Webmail"
|
||||||
msgstr "Webmail"
|
msgstr "Webmail"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:135
|
#: mailu/ui/templates/sidebar.html:137
|
||||||
msgid "Sign out"
|
msgid "Sign out"
|
||||||
msgstr "Odhlásit se"
|
msgstr "Odhlásit se"
|
||||||
|
|
||||||
@@ -411,7 +481,7 @@ msgstr "Přidat globálního administrátora"
|
|||||||
|
|
||||||
#: mailu/ui/templates/admin/list.html:4
|
#: mailu/ui/templates/admin/list.html:4
|
||||||
msgid "Global administrators"
|
msgid "Global administrators"
|
||||||
msgstr "Globální administrátor"
|
msgstr "Globální administrátoři"
|
||||||
|
|
||||||
#: mailu/ui/templates/admin/list.html:9
|
#: mailu/ui/templates/admin/list.html:9
|
||||||
msgid "Add administrator"
|
msgid "Add administrator"
|
||||||
@@ -429,14 +499,20 @@ msgstr "Akce"
|
|||||||
#: mailu/ui/templates/admin/list.html:18 mailu/ui/templates/alias/list.html:20
|
#: mailu/ui/templates/admin/list.html:18 mailu/ui/templates/alias/list.html:20
|
||||||
#: mailu/ui/templates/manager/list.html:20 mailu/ui/templates/user/list.html:21
|
#: mailu/ui/templates/manager/list.html:20 mailu/ui/templates/user/list.html:21
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "E-mail"
|
||||||
|
|
||||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:32
|
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:31
|
||||||
#: mailu/ui/templates/alternative/list.html:29
|
#: mailu/ui/templates/domain/list.html:35 mailu/ui/templates/fetch/list.html:35
|
||||||
#: mailu/ui/templates/domain/list.html:34 mailu/ui/templates/fetch/list.html:34
|
|
||||||
#: mailu/ui/templates/manager/list.html:27
|
#: mailu/ui/templates/manager/list.html:27
|
||||||
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:30
|
#: mailu/ui/templates/relay/list.html:29 mailu/ui/templates/user/list.html:33
|
||||||
#: mailu/ui/templates/user/list.html:34
|
msgid "Edit"
|
||||||
|
msgstr "Upravit"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/admin/list.html:26 mailu/ui/templates/alias/list.html:32
|
||||||
|
#: mailu/ui/templates/alternative/list.html:29
|
||||||
|
#: mailu/ui/templates/domain/list.html:36 mailu/ui/templates/fetch/list.html:36
|
||||||
|
#: mailu/ui/templates/manager/list.html:28
|
||||||
|
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:31
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Vymazat"
|
msgstr "Vymazat"
|
||||||
|
|
||||||
@@ -458,26 +534,20 @@ msgstr "Přidat alias"
|
|||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:23
|
#: mailu/ui/templates/alias/list.html:23
|
||||||
#: mailu/ui/templates/alternative/list.html:21
|
#: mailu/ui/templates/alternative/list.html:21
|
||||||
#: mailu/ui/templates/domain/list.html:23 mailu/ui/templates/fetch/list.html:25
|
#: mailu/ui/templates/domain/list.html:25 mailu/ui/templates/fetch/list.html:27
|
||||||
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:22
|
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:23
|
||||||
#: mailu/ui/templates/user/list.html:25
|
#: mailu/ui/templates/user/list.html:25
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr "Vytvořeno"
|
msgstr "Vytvořeno"
|
||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:24
|
#: mailu/ui/templates/alias/list.html:24
|
||||||
#: mailu/ui/templates/alternative/list.html:22
|
#: mailu/ui/templates/alternative/list.html:22
|
||||||
#: mailu/ui/templates/domain/list.html:24 mailu/ui/templates/fetch/list.html:26
|
#: mailu/ui/templates/domain/list.html:26 mailu/ui/templates/fetch/list.html:28
|
||||||
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:23
|
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:24
|
||||||
#: mailu/ui/templates/user/list.html:26
|
#: mailu/ui/templates/user/list.html:26
|
||||||
msgid "Last edit"
|
msgid "Last edit"
|
||||||
msgstr "Poslední úprava"
|
msgstr "Poslední úprava"
|
||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:31 mailu/ui/templates/domain/list.html:33
|
|
||||||
#: mailu/ui/templates/fetch/list.html:33 mailu/ui/templates/relay/list.html:29
|
|
||||||
#: mailu/ui/templates/user/list.html:33
|
|
||||||
msgid "Edit"
|
|
||||||
msgstr "Upravit"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/alternative/create.html:4
|
#: mailu/ui/templates/alternative/create.html:4
|
||||||
msgid "Create alternative domain"
|
msgid "Create alternative domain"
|
||||||
msgstr "Vytvořit alternativní doménu"
|
msgstr "Vytvořit alternativní doménu"
|
||||||
@@ -511,6 +581,10 @@ msgstr "Obnovit klíče"
|
|||||||
msgid "Generate keys"
|
msgid "Generate keys"
|
||||||
msgstr "Generovat klíče"
|
msgstr "Generovat klíče"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/details.html:19
|
||||||
|
msgid "Download zonefile"
|
||||||
|
msgstr "Stáhnout zonefile"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:30
|
#: mailu/ui/templates/domain/details.html:30
|
||||||
msgid "DNS MX entry"
|
msgid "DNS MX entry"
|
||||||
msgstr "Záznam DNS MX"
|
msgstr "Záznam DNS MX"
|
||||||
@@ -520,24 +594,20 @@ msgid "DNS SPF entries"
|
|||||||
msgstr "Záznamy DNS SPF"
|
msgstr "Záznamy DNS SPF"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:40
|
#: mailu/ui/templates/domain/details.html:40
|
||||||
msgid "DKIM public key"
|
|
||||||
msgstr "Veřejný klíč DKIM"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:44
|
|
||||||
msgid "DNS DKIM entry"
|
msgid "DNS DKIM entry"
|
||||||
msgstr "Záznam DNS DKIM"
|
msgstr "Záznam DNS DKIM"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:48
|
#: mailu/ui/templates/domain/details.html:44
|
||||||
msgid "DNS DMARC entry"
|
msgid "DNS DMARC entry"
|
||||||
msgstr "Záznam DNS DMARC"
|
msgstr "Záznam DNS DMARC"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:58
|
#: mailu/ui/templates/domain/details.html:53
|
||||||
msgid "DNS TLSA entry"
|
msgid "DNS TLSA entry"
|
||||||
msgstr "Záznam DNS TLSA"
|
msgstr "Záznam DNS TLSA"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:63
|
#: mailu/ui/templates/domain/details.html:58
|
||||||
msgid "DNS client auto-configuration entries"
|
msgid "DNS client auto-configuration entries"
|
||||||
msgstr "Položky automatické konfigurace klienta DNS"
|
msgstr "Položky automatického nastavení klienta DNS"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/edit.html:4
|
#: mailu/ui/templates/domain/edit.html:4
|
||||||
msgid "Edit domain"
|
msgid "Edit domain"
|
||||||
@@ -559,25 +629,35 @@ msgstr "Počet poštovních schránek"
|
|||||||
msgid "Alias count"
|
msgid "Alias count"
|
||||||
msgstr "Počet aliasů"
|
msgstr "Počet aliasů"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:31
|
#: mailu/ui/templates/domain/list.html:33
|
||||||
msgid "Details"
|
msgid "Details"
|
||||||
msgstr "Podrobnosti"
|
msgstr "Podrobnosti"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:38
|
|
||||||
msgid "Users"
|
|
||||||
msgstr "Uživatelů"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:39
|
|
||||||
msgid "Aliases"
|
|
||||||
msgstr "Aliasů"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:40
|
#: mailu/ui/templates/domain/list.html:40
|
||||||
msgid "Managers"
|
msgid "Users"
|
||||||
msgstr "Manažerů"
|
msgstr "Uživatelé"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:41
|
||||||
|
msgid "Aliases"
|
||||||
|
msgstr "Aliasy"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:42
|
#: mailu/ui/templates/domain/list.html:42
|
||||||
|
msgid "Managers"
|
||||||
|
msgstr "Manažeři"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:44
|
||||||
msgid "Alternatives"
|
msgid "Alternatives"
|
||||||
msgstr "Alternativ"
|
msgstr "Alternativy"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:52 mailu/ui/templates/fetch/list.html:40
|
||||||
|
#: mailu/ui/templates/fetch/list.html:41
|
||||||
|
msgid "yes"
|
||||||
|
msgstr "ano"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:52 mailu/ui/templates/fetch/list.html:40
|
||||||
|
#: mailu/ui/templates/fetch/list.html:41
|
||||||
|
msgid "no"
|
||||||
|
msgstr "ne"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/signup.html:13
|
#: mailu/ui/templates/domain/signup.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -585,7 +665,7 @@ msgid ""
|
|||||||
" domain zone so that the domain <code>MX</code> points to this server"
|
" domain zone so that the domain <code>MX</code> points to this server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Chcete-li zaregistrovat novou doménu, musíte nejprve nastavit\n"
|
"Chcete-li zaregistrovat novou doménu, musíte nejprve nastavit\n"
|
||||||
" zónu domény tak, aby doménový <code>MX</code> záznam ukazovala na tento "
|
" zónu domény tak, aby doménový <code>MX</code> záznam odkazoval na tento "
|
||||||
"server"
|
"server"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/signup.html:18
|
#: mailu/ui/templates/domain/signup.html:18
|
||||||
@@ -598,19 +678,18 @@ msgid ""
|
|||||||
" expires."
|
" expires."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Pokud nevíte, jak nastavit <code>MX</code> záznam pro zónu DNS,\n"
|
"Pokud nevíte, jak nastavit <code>MX</code> záznam pro zónu DNS,\n"
|
||||||
" kontaktujte svého poskytovatele DNS nebo správce. Také prosím počkejte "
|
" kontaktujte svého poskytovatele DNS nebo správce. Dále prosím počkejte\n"
|
||||||
"a\n"
|
" několik minut po nastavení <code>MX</code> záznamu, aby se vymazal z "
|
||||||
" několik minut po <code>MX</code> tak, aby vypršela v mezipaměti "
|
"mezipaměti\n"
|
||||||
"místního\n"
|
" místního serveru."
|
||||||
" serveru."
|
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/create.html:4
|
#: mailu/ui/templates/fetch/create.html:4
|
||||||
msgid "Add a fetched account"
|
msgid "Add a fetched account"
|
||||||
msgstr "Přidejte fetched účet"
|
msgstr "Přidejte stanovaný účet"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/edit.html:4
|
#: mailu/ui/templates/fetch/edit.html:4
|
||||||
msgid "Update a fetched account"
|
msgid "Update a fetched account"
|
||||||
msgstr "Aktualizujte fetched účet"
|
msgstr "Aktualizujte stahovaný účet"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:12
|
#: mailu/ui/templates/fetch/list.html:12
|
||||||
msgid "Add an account"
|
msgid "Add an account"
|
||||||
@@ -622,23 +701,23 @@ msgstr "Koncový bod"
|
|||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:22
|
#: mailu/ui/templates/fetch/list.html:22
|
||||||
msgid "Keep emails"
|
msgid "Keep emails"
|
||||||
msgstr "Zachovat emaily"
|
msgstr "Ponechat e-maily"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:23
|
#: mailu/ui/templates/fetch/list.html:23
|
||||||
|
msgid "Rescan emails"
|
||||||
|
msgstr "Přeskenovat e-maily"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/fetch/list.html:24
|
||||||
|
msgid "Folders"
|
||||||
|
msgstr "Složky"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/fetch/list.html:25
|
||||||
msgid "Last check"
|
msgid "Last check"
|
||||||
msgstr "Poslední kontrola"
|
msgstr "Poslední kontrola"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:24
|
#: mailu/ui/templates/fetch/list.html:26
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Status"
|
msgstr "Stav"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:38
|
|
||||||
msgid "yes"
|
|
||||||
msgstr "ano"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:38
|
|
||||||
msgid "no"
|
|
||||||
msgstr "ne"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/manager/create.html:4
|
#: mailu/ui/templates/manager/create.html:4
|
||||||
msgid "Add a manager"
|
msgid "Add a manager"
|
||||||
@@ -676,15 +755,19 @@ msgstr "Vytvořit ověřovací token"
|
|||||||
msgid "New token"
|
msgid "New token"
|
||||||
msgstr "Nový token"
|
msgstr "Nový token"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/token/list.html:20
|
||||||
|
msgid "ID"
|
||||||
|
msgstr "ID"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/create.html:4
|
#: mailu/ui/templates/user/create.html:4
|
||||||
msgid "New user"
|
msgid "New user"
|
||||||
msgstr "Nový uživatel"
|
msgstr "Nový uživatel"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/create.html:15
|
#: mailu/ui/templates/user/create.html:15
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Všeobecné"
|
msgstr "Obecné"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/create.html:23
|
#: mailu/ui/templates/user/create.html:24
|
||||||
msgid "Features and quotas"
|
msgid "Features and quotas"
|
||||||
msgstr "Funkce a kvóty"
|
msgstr "Funkce a kvóty"
|
||||||
|
|
||||||
@@ -724,10 +807,13 @@ msgstr "Automatické přeposlání"
|
|||||||
msgid "pick a domain for the new account"
|
msgid "pick a domain for the new account"
|
||||||
msgstr "vybrat doménu pro nový účet"
|
msgstr "vybrat doménu pro nový účet"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/signup_domain.html:14
|
#: mailu/ui/templates/user/signup_domain.html:15
|
||||||
msgid "Domain"
|
msgid "Domain"
|
||||||
msgstr "Doména"
|
msgstr "Doména"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/signup_domain.html:15
|
#: mailu/ui/templates/user/signup_domain.html:16
|
||||||
msgid "Available slots"
|
msgid "Available slots"
|
||||||
msgstr "Dostupných slotů"
|
msgstr "Dostupné sloty"
|
||||||
|
|
||||||
|
#~ msgid "DKIM public key"
|
||||||
|
#~ msgstr "Veřejný klíč DKIM"
|
||||||
|
|||||||
@@ -3,33 +3,49 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Mailu\n"
|
"Project-Id-Version: Mailu\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-05-22 18:47+0200\n"
|
"POT-Creation-Date: 2024-06-20 12:30+0000\n"
|
||||||
"PO-Revision-Date: 2021-03-04 18:46+0000\n"
|
"PO-Revision-Date: 2021-03-04 18:46+0000\n"
|
||||||
"Last-Translator: Anonymous <noreply@weblate.org>\n"
|
"Last-Translator: Anonymous <noreply@weblate.org>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"Language-Team: German "
|
"Language-Team: German "
|
||||||
"<https://translate.tedomum.net/projects/mailu/admin/de/>\n"
|
"<https://translate.tedomum.net/projects/mailu/admin/de/>\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.3.4\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:8 mailu/ui/forms.py:79
|
#: mailu/sso/forms.py:8 mailu/ui/forms.py:91
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:80 mailu/ui/forms.py:93
|
#: mailu/sso/forms.py:9 mailu/ui/forms.py:92 mailu/ui/forms.py:108
|
||||||
#: mailu/ui/forms.py:112 mailu/ui/forms.py:166
|
#: mailu/ui/forms.py:128 mailu/ui/forms.py:135 mailu/ui/forms.py:197
|
||||||
#: mailu/ui/templates/client.html:32 mailu/ui/templates/client.html:57
|
#: mailu/ui/templates/client.html:31 mailu/ui/templates/client.html:56
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Passwort"
|
msgstr "Passwort"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:10 mailu/sso/forms.py:11 mailu/sso/templates/login.html:4
|
#: mailu/sso/forms.py:11 mailu/sso/forms.py:12 mailu/sso/templates/login.html:4
|
||||||
#: mailu/ui/templates/sidebar.html:142
|
#: mailu/sso/templates/sidebar_sso.html:42 mailu/ui/templates/sidebar.html:144
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
msgstr "Anmelden"
|
msgstr "Anmelden"
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:15 mailu/ui/forms.py:134
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr "Aktuelles Passwort"
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:16
|
||||||
|
msgid "New password"
|
||||||
|
msgstr "Neues Passwort"
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:17
|
||||||
|
msgid "New password (again)"
|
||||||
|
msgstr "Passwort wiederholen"
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:19
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr "Passwort ändern"
|
||||||
|
|
||||||
#: mailu/sso/templates/base_sso.html:8 mailu/ui/templates/base.html:8
|
#: mailu/sso/templates/base_sso.html:8 mailu/ui/templates/base.html:8
|
||||||
msgid "Admin page for"
|
msgid "Admin page for"
|
||||||
msgstr "Administration für"
|
msgstr "Administration für"
|
||||||
@@ -42,255 +58,301 @@ msgstr "Seitenleiste ein-/ausklapen"
|
|||||||
msgid "change language"
|
msgid "change language"
|
||||||
msgstr "Sprachauswahl"
|
msgstr "Sprachauswahl"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:4 mailu/ui/templates/sidebar.html:94
|
#: mailu/sso/templates/sidebar_sso.html:4 mailu/ui/templates/sidebar.html:96
|
||||||
msgid "Go to"
|
msgid "Go to"
|
||||||
msgstr "Wechseln zu"
|
msgstr "Wechseln zu"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:9 mailu/ui/templates/client.html:4
|
#: mailu/sso/templates/sidebar_sso.html:9 mailu/ui/templates/client.html:4
|
||||||
#: mailu/ui/templates/sidebar.html:50 mailu/ui/templates/sidebar.html:107
|
#: mailu/ui/templates/sidebar.html:52 mailu/ui/templates/sidebar.html:109
|
||||||
msgid "Client setup"
|
msgid "Client setup"
|
||||||
msgstr "Client Einrichtung"
|
msgstr "Client Einrichtung"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:16 mailu/ui/templates/sidebar.html:114
|
#: mailu/sso/templates/sidebar_sso.html:16 mailu/ui/templates/sidebar.html:116
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr "Webseite"
|
msgstr "Webseite"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:22 mailu/ui/templates/sidebar.html:120
|
#: mailu/sso/templates/sidebar_sso.html:22 mailu/ui/templates/sidebar.html:122
|
||||||
msgid "Help"
|
msgid "Help"
|
||||||
msgstr "Hilfe"
|
msgstr "Hilfe"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:35
|
#: mailu/sso/templates/sidebar_sso.html:35
|
||||||
#: mailu/ui/templates/domain/signup.html:4 mailu/ui/templates/sidebar.html:127
|
#: mailu/ui/templates/domain/signup.html:4 mailu/ui/templates/sidebar.html:129
|
||||||
msgid "Register a domain"
|
msgid "Register a domain"
|
||||||
msgstr "Regestrieren Sie eine Domain"
|
msgstr "Regestrieren Sie eine Domain"
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:49 mailu/ui/forms.py:95
|
#: mailu/sso/templates/sidebar_sso.html:55 mailu/ui/forms.py:111
|
||||||
#: mailu/ui/templates/sidebar.html:149 mailu/ui/templates/user/signup.html:4
|
#: mailu/ui/templates/sidebar.html:151 mailu/ui/templates/user/signup.html:4
|
||||||
#: mailu/ui/templates/user/signup_domain.html:4
|
#: mailu/ui/templates/user/signup_domain.html:4
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr "Registrieren"
|
msgstr "Registrieren"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:33 mailu/ui/forms.py:36
|
#: mailu/sso/views/base.py:48
|
||||||
|
msgid "Too many attempts from your IP (rate-limit)"
|
||||||
|
msgstr "Zu viele Versuche von Ihrer IP (Rate-Limit)"
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:51
|
||||||
|
msgid "Too many attempts for this user (rate-limit)"
|
||||||
|
msgstr "Zu viele Versuche für diesen Benutzer (Rate-Limit)"
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:69
|
||||||
|
msgid "Wrong e-mail or password"
|
||||||
|
msgstr "Falsche E-Mail oder Passwort"
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:85
|
||||||
|
msgid "The new password can't be the same as the old password"
|
||||||
|
msgstr "Das neue Passwort darf nicht mit dem alten Passwort übereinstimmen"
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:88
|
||||||
|
msgid "The new passwords don't match"
|
||||||
|
msgstr "Die neuen Passwörter stimmen nicht überein"
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:100
|
||||||
|
msgid "The current password is incorrect!"
|
||||||
|
msgstr "Das aktuelle Passwort ist falsch!"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:34 mailu/ui/forms.py:37
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr "Ungültige E-Mail-Adresse."
|
msgstr "Ungültige E-Mail-Adresse."
|
||||||
|
|
||||||
#: mailu/ui/forms.py:45
|
#: mailu/ui/forms.py:47
|
||||||
|
msgid "Invalid list of folders."
|
||||||
|
msgstr "Ungültige Ordnerliste."
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:56
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Bestätigen"
|
msgstr "Bestätigen"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:48 mailu/ui/forms.py:58
|
#: mailu/ui/forms.py:59 mailu/ui/forms.py:69
|
||||||
#: mailu/ui/templates/domain/details.html:26
|
#: mailu/ui/templates/domain/details.html:26
|
||||||
#: mailu/ui/templates/domain/list.html:19 mailu/ui/templates/relay/list.html:18
|
#: mailu/ui/templates/domain/list.html:19 mailu/ui/templates/relay/list.html:18
|
||||||
msgid "Domain name"
|
msgid "Domain name"
|
||||||
msgstr "Domain-Name"
|
msgstr "Domain-Name"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:49
|
#: mailu/ui/forms.py:60
|
||||||
msgid "Maximum user count"
|
msgid "Maximum user count"
|
||||||
msgstr "Maximale Anzahl Benutzer"
|
msgstr "Maximale Anzahl Benutzer"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:50
|
#: mailu/ui/forms.py:61
|
||||||
msgid "Maximum alias count"
|
msgid "Maximum alias count"
|
||||||
msgstr "Maximale Anzahl Aliase"
|
msgstr "Maximale Anzahl Aliase"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:51
|
#: mailu/ui/forms.py:62
|
||||||
msgid "Maximum user quota"
|
msgid "Maximum user quota"
|
||||||
msgstr "Maximale Quota pro Benutzer"
|
msgstr "Maximale Quota pro Benutzer"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:52
|
#: mailu/ui/forms.py:63 mailu/ui/templates/domain/list.html:24
|
||||||
msgid "Enable sign-up"
|
msgid "Enable sign-up"
|
||||||
msgstr "Neuanmeldung erlauben"
|
msgstr "Neuanmeldung erlauben"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:53 mailu/ui/forms.py:74 mailu/ui/forms.py:86
|
#: mailu/ui/forms.py:64 mailu/ui/forms.py:86 mailu/ui/forms.py:100
|
||||||
#: mailu/ui/forms.py:132 mailu/ui/forms.py:144
|
#: mailu/ui/forms.py:155 mailu/ui/forms.py:175
|
||||||
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:22
|
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:23
|
||||||
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:20
|
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:21
|
||||||
#: mailu/ui/templates/user/list.html:24
|
#: mailu/ui/templates/user/list.html:24
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr "Kommentar"
|
msgstr "Kommentar"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:54 mailu/ui/forms.py:68 mailu/ui/forms.py:75
|
#: mailu/ui/forms.py:65 mailu/ui/forms.py:80 mailu/ui/forms.py:87
|
||||||
#: mailu/ui/forms.py:88 mailu/ui/forms.py:136 mailu/ui/forms.py:145
|
#: mailu/ui/forms.py:103 mailu/ui/forms.py:159 mailu/ui/forms.py:176
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Speichern"
|
msgstr "Speichern"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:59
|
#: mailu/ui/forms.py:70
|
||||||
msgid "Initial admin"
|
msgid "Initial admin"
|
||||||
msgstr "Initiale Admin-Adresse"
|
msgstr "Initiale Admin-Adresse"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:60
|
#: mailu/ui/forms.py:71
|
||||||
msgid "Admin password"
|
msgid "Admin password"
|
||||||
msgstr "Administrator Passwort"
|
msgstr "Administrator Passwort"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:61 mailu/ui/forms.py:81 mailu/ui/forms.py:94
|
#: mailu/ui/forms.py:72 mailu/ui/forms.py:93 mailu/ui/forms.py:109
|
||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "Passwort bestätigen"
|
msgstr "Passwort bestätigen"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:63
|
#: mailu/ui/forms.py:75
|
||||||
msgid "Create"
|
msgid "Create"
|
||||||
msgstr "Erstellen"
|
msgstr "Erstellen"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:67
|
#: mailu/ui/forms.py:79
|
||||||
msgid "Alternative name"
|
msgid "Alternative name"
|
||||||
msgstr "Alternativer Name"
|
msgstr "Alternativer Name"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:72
|
#: mailu/ui/forms.py:84
|
||||||
msgid "Relayed domain name"
|
msgid "Relayed domain name"
|
||||||
msgstr "Relay-Domain-Name"
|
msgstr "Relay-Domain-Name"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:73 mailu/ui/templates/relay/list.html:19
|
#: mailu/ui/forms.py:85 mailu/ui/templates/relay/list.html:19
|
||||||
msgid "Remote host"
|
msgid "Remote host"
|
||||||
msgstr "Entfernter Host"
|
msgstr "Entfernter Host"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:82 mailu/ui/templates/user/list.html:23
|
#: mailu/ui/forms.py:95 mailu/ui/templates/domain/list.html:22
|
||||||
#: mailu/ui/templates/user/signup_domain.html:16
|
#: mailu/ui/templates/user/list.html:23
|
||||||
|
#: mailu/ui/templates/user/signup_domain.html:17
|
||||||
msgid "Quota"
|
msgid "Quota"
|
||||||
msgstr "Kontingent"
|
msgstr "Kontingent"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:83
|
#: mailu/ui/forms.py:96
|
||||||
msgid "Allow IMAP access"
|
msgid "Allow IMAP access"
|
||||||
msgstr "Zugriff via IMAP erlauben"
|
msgstr "Zugriff via IMAP erlauben"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:84
|
#: mailu/ui/forms.py:97
|
||||||
msgid "Allow POP3 access"
|
msgid "Allow POP3 access"
|
||||||
msgstr "Zugriff via POP3 erlauben"
|
msgstr "Zugriff via POP3 erlauben"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:85 mailu/ui/forms.py:101
|
#: mailu/ui/forms.py:98
|
||||||
|
msgid "Allow the user to spoof the sender (send email as anyone)"
|
||||||
|
msgstr "Dem Benutzer ermöglichen, den Absender zu fälschen (E-Mail als jedermann senden)"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:99 mailu/ui/forms.py:117
|
||||||
#: mailu/ui/templates/user/settings.html:15
|
#: mailu/ui/templates/user/settings.html:15
|
||||||
msgid "Displayed name"
|
msgid "Displayed name"
|
||||||
msgstr "Angezeigter Name"
|
msgstr "Angezeigter Name"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:87
|
#: mailu/ui/forms.py:101
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Aktiv"
|
msgstr "Aktiv"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:92
|
#: mailu/ui/forms.py:102
|
||||||
|
msgid "Force password change at next login"
|
||||||
|
msgstr "Kennwortänderung bei der nächsten Anmeldung erzwingen"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:107
|
||||||
msgid "Email address"
|
msgid "Email address"
|
||||||
msgstr "E-Mail-Adresse"
|
msgstr "E-Mail-Adresse"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:102
|
#: mailu/ui/forms.py:118
|
||||||
msgid "Enable spam filter"
|
msgid "Enable spam filter"
|
||||||
msgstr "Spamfilter aktivieren"
|
msgstr "Spamfilter aktivieren"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:103
|
#: mailu/ui/forms.py:119
|
||||||
msgid "Enable marking spam mails as read"
|
msgid "Enable marking spam mails as read"
|
||||||
msgstr "Spam automatisch als gelesen markieren"
|
msgstr "Spam automatisch als gelesen markieren"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:104
|
#: mailu/ui/forms.py:120
|
||||||
msgid "Spam filter tolerance"
|
msgid "Spam filter tolerance"
|
||||||
msgstr "Spamfilter-Grenzwert"
|
msgstr "Spamfilter-Grenzwert"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:105
|
#: mailu/ui/forms.py:121
|
||||||
msgid "Enable forwarding"
|
msgid "Enable forwarding"
|
||||||
msgstr "Weiterleitung aktivieren"
|
msgstr "Weiterleitung aktivieren"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:106
|
#: mailu/ui/forms.py:122
|
||||||
msgid "Keep a copy of the emails"
|
msgid "Keep a copy of the emails"
|
||||||
msgstr "Kopie der E-Mails behalten"
|
msgstr "Kopie der E-Mails behalten"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:107 mailu/ui/forms.py:143
|
#: mailu/ui/forms.py:123 mailu/ui/forms.py:174
|
||||||
#: mailu/ui/templates/alias/list.html:21
|
#: mailu/ui/templates/alias/list.html:21
|
||||||
msgid "Destination"
|
msgid "Destination"
|
||||||
msgstr "Ziel"
|
msgstr "Ziel"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:108
|
#: mailu/ui/forms.py:124
|
||||||
msgid "Save settings"
|
msgid "Save settings"
|
||||||
msgstr "Einstellungen speichern"
|
msgstr "Einstellungen speichern"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:113
|
#: mailu/ui/forms.py:129 mailu/ui/forms.py:136
|
||||||
msgid "Password check"
|
msgid "Password check"
|
||||||
msgstr "Passwort wiederholen"
|
msgstr "Passwort wiederholen"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:114 mailu/ui/templates/sidebar.html:25
|
#: mailu/ui/forms.py:131 mailu/ui/forms.py:138
|
||||||
|
#: mailu/ui/templates/sidebar.html:25
|
||||||
msgid "Update password"
|
msgid "Update password"
|
||||||
msgstr "Passwort aktualisieren"
|
msgstr "Passwort aktualisieren"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:118
|
#: mailu/ui/forms.py:141
|
||||||
msgid "Enable automatic reply"
|
msgid "Enable automatic reply"
|
||||||
msgstr "Automatische Antwort aktivieren"
|
msgstr "Automatische Antwort aktivieren"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:119
|
#: mailu/ui/forms.py:142
|
||||||
msgid "Reply subject"
|
msgid "Reply subject"
|
||||||
msgstr "Betreff"
|
msgstr "Betreff"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:120
|
#: mailu/ui/forms.py:143
|
||||||
msgid "Reply body"
|
msgid "Reply body"
|
||||||
msgstr "Text"
|
msgstr "Text"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:122
|
#: mailu/ui/forms.py:145
|
||||||
msgid "Start of vacation"
|
msgid "Start of vacation"
|
||||||
msgstr "Beginn der Abwesenheit"
|
msgstr "Beginn der Abwesenheit"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:123
|
#: mailu/ui/forms.py:146
|
||||||
msgid "End of vacation"
|
msgid "End of vacation"
|
||||||
msgstr "Ende der Abwesenheit"
|
msgstr "Ende der Abwesenheit"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:124
|
#: mailu/ui/forms.py:147
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aktualisieren"
|
msgstr "Aktualisieren"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:129
|
#: mailu/ui/forms.py:152
|
||||||
msgid "Your token (write it down, as it will never be displayed again)"
|
msgid "Your token (write it down, as it will never be displayed again)"
|
||||||
msgstr "Token (bitte speichern, da er hier nach nicht mehr angezeigt wird)"
|
msgstr "Token (bitte speichern, da er hier nach nicht mehr angezeigt wird)"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:134 mailu/ui/templates/token/list.html:21
|
#: mailu/ui/forms.py:157 mailu/ui/templates/token/list.html:22
|
||||||
msgid "Authorized IP"
|
msgid "Authorized IP"
|
||||||
msgstr "Authorisierte IP-Adresse"
|
msgstr "Authorisierte IP-Adresse"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:140
|
#: mailu/ui/forms.py:171
|
||||||
msgid "Alias"
|
msgid "Alias"
|
||||||
msgstr "Alias"
|
msgstr "Alias"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:142
|
#: mailu/ui/forms.py:173
|
||||||
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
||||||
msgstr "SQL LIKE Syntax nutzen (z.B. für Catch-All-Aliase)"
|
msgstr "SQL LIKE Syntax nutzen (z.B. für Catch-All-Aliase)"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:149
|
#: mailu/ui/forms.py:180
|
||||||
msgid "Admin email"
|
msgid "Admin email"
|
||||||
msgstr "Administrator E-Mail"
|
msgstr "Administrator E-Mail"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:150 mailu/ui/forms.py:155 mailu/ui/forms.py:168
|
#: mailu/ui/forms.py:181 mailu/ui/forms.py:186 mailu/ui/forms.py:201
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Absenden"
|
msgstr "Absenden"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:154
|
#: mailu/ui/forms.py:185
|
||||||
msgid "Manager email"
|
msgid "Manager email"
|
||||||
msgstr "Manager E-Mail"
|
msgstr "Manager E-Mail"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:159
|
#: mailu/ui/forms.py:190
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protokoll"
|
msgstr "Protokoll"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:162
|
#: mailu/ui/forms.py:193
|
||||||
msgid "Hostname or IP"
|
msgid "Hostname or IP"
|
||||||
msgstr "Hostname oder IP"
|
msgstr "Hostname oder IP"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:163 mailu/ui/templates/client.html:20
|
#: mailu/ui/forms.py:194 mailu/ui/templates/client.html:19
|
||||||
#: mailu/ui/templates/client.html:45
|
#: mailu/ui/templates/client.html:44
|
||||||
msgid "TCP port"
|
msgid "TCP port"
|
||||||
msgstr "TCP Port"
|
msgstr "TCP Port"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:164
|
#: mailu/ui/forms.py:195
|
||||||
msgid "Enable TLS"
|
msgid "Enable TLS"
|
||||||
msgstr "Verschlüsselung aktivieren (TLS)"
|
msgstr "Verschlüsselung aktivieren (TLS)"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:165 mailu/ui/templates/client.html:28
|
#: mailu/ui/forms.py:196 mailu/ui/templates/client.html:27
|
||||||
#: mailu/ui/templates/client.html:53 mailu/ui/templates/fetch/list.html:21
|
#: mailu/ui/templates/client.html:52 mailu/ui/templates/fetch/list.html:21
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Benutzername"
|
msgstr "Benutzername"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:167
|
#: mailu/ui/forms.py:198
|
||||||
msgid "Keep emails on the server"
|
msgid "Keep emails on the server"
|
||||||
msgstr "E-Mails auf dem Server belassen"
|
msgstr "E-Mails auf dem Server belassen"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:172
|
#: mailu/ui/forms.py:199
|
||||||
|
msgid "Rescan emails locally"
|
||||||
|
msgstr "E-Mails lokal erneut scannen"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:200
|
||||||
|
msgid "Folders to fetch on the server"
|
||||||
|
msgstr "Auf dem Server abzurufende Ordner"
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:205
|
||||||
msgid "Announcement subject"
|
msgid "Announcement subject"
|
||||||
msgstr "Betreff"
|
msgstr "Betreff"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:174
|
#: mailu/ui/forms.py:207
|
||||||
msgid "Announcement body"
|
msgid "Announcement body"
|
||||||
msgstr "Text"
|
msgstr "Text"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:176
|
#: mailu/ui/forms.py:209
|
||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr "Absenden"
|
msgstr "Absenden"
|
||||||
|
|
||||||
@@ -298,7 +360,7 @@ msgstr "Absenden"
|
|||||||
msgid "Public announcement"
|
msgid "Public announcement"
|
||||||
msgstr "Öffentliche Bekanntmachung"
|
msgstr "Öffentliche Bekanntmachung"
|
||||||
|
|
||||||
#: mailu/ui/templates/antispam.html:4 mailu/ui/templates/sidebar.html:80
|
#: mailu/ui/templates/antispam.html:4 mailu/ui/templates/sidebar.html:82
|
||||||
#: mailu/ui/templates/user/settings.html:19
|
#: mailu/ui/templates/user/settings.html:19
|
||||||
msgid "Antispam"
|
msgid "Antispam"
|
||||||
msgstr "Antispam"
|
msgstr "Antispam"
|
||||||
@@ -307,6 +369,26 @@ msgstr "Antispam"
|
|||||||
msgid "RSPAMD status page"
|
msgid "RSPAMD status page"
|
||||||
msgstr "RSPAMD Statusseite"
|
msgstr "RSPAMD Statusseite"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:8
|
||||||
|
msgid "configure your email client"
|
||||||
|
msgstr "Informationen zur Einrichtung Ihres Email-Clients"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:12
|
||||||
|
msgid "Incoming mail"
|
||||||
|
msgstr "E-Mail-Empfang"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:15 mailu/ui/templates/client.html:40
|
||||||
|
msgid "Mail protocol"
|
||||||
|
msgstr "E-Mail-Protokoll"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:23 mailu/ui/templates/client.html:48
|
||||||
|
msgid "Server name"
|
||||||
|
msgstr "Servername"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:37
|
||||||
|
msgid "Outgoing mail"
|
||||||
|
msgstr "E-Mail-Versand"
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:62
|
#: mailu/ui/templates/client.html:62
|
||||||
msgid "If you use an Apple device,"
|
msgid "If you use an Apple device,"
|
||||||
msgstr "Falls es sich um ein Apple-Gerät handelt,"
|
msgstr "Falls es sich um ein Apple-Gerät handelt,"
|
||||||
@@ -315,26 +397,6 @@ msgstr "Falls es sich um ein Apple-Gerät handelt,"
|
|||||||
msgid "click here to auto-configure it."
|
msgid "click here to auto-configure it."
|
||||||
msgstr "kann dieses hier automatisch eingerichtet werden."
|
msgstr "kann dieses hier automatisch eingerichtet werden."
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:8
|
|
||||||
msgid "configure your email client"
|
|
||||||
msgstr "Informationen zur Einrichtung Ihres Email-Clients"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:13
|
|
||||||
msgid "Incoming mail"
|
|
||||||
msgstr "E-Mail-Empfang"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:16 mailu/ui/templates/client.html:41
|
|
||||||
msgid "Mail protocol"
|
|
||||||
msgstr "E-Mail-Protokoll"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:24 mailu/ui/templates/client.html:49
|
|
||||||
msgid "Server name"
|
|
||||||
msgstr "Servername"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:38
|
|
||||||
msgid "Outgoing mail"
|
|
||||||
msgstr "E-Mail-Versand"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/confirm.html:4
|
#: mailu/ui/templates/confirm.html:4
|
||||||
msgid "Confirm action"
|
msgid "Confirm action"
|
||||||
msgstr "Aktion bestätigen"
|
msgstr "Aktion bestätigen"
|
||||||
@@ -354,7 +416,7 @@ msgstr ""
|
|||||||
"Während der Kommunikation mit dem Docker Server ist ein Fehler "
|
"Während der Kommunikation mit dem Docker Server ist ein Fehler "
|
||||||
"aufgetreten."
|
"aufgetreten."
|
||||||
|
|
||||||
#: mailu/ui/templates/macros.html:129
|
#: mailu/ui/templates/macros.html:128
|
||||||
msgid "copy to clipboard"
|
msgid "copy to clipboard"
|
||||||
msgstr "In Zwischenablage kopieren"
|
msgstr "In Zwischenablage kopieren"
|
||||||
|
|
||||||
@@ -362,48 +424,48 @@ msgstr "In Zwischenablage kopieren"
|
|||||||
msgid "My account"
|
msgid "My account"
|
||||||
msgstr "Mein Konto"
|
msgstr "Mein Konto"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:19 mailu/ui/templates/user/list.html:37
|
#: mailu/ui/templates/sidebar.html:19 mailu/ui/templates/user/list.html:36
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Einstellungen"
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:31 mailu/ui/templates/user/list.html:38
|
#: mailu/ui/templates/sidebar.html:31 mailu/ui/templates/user/list.html:37
|
||||||
msgid "Auto-reply"
|
msgid "Auto-reply"
|
||||||
msgstr "Auto-Antwort"
|
msgstr "Auto-Antwort"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:4 mailu/ui/templates/sidebar.html:37
|
#: mailu/ui/templates/fetch/list.html:4 mailu/ui/templates/sidebar.html:38
|
||||||
#: mailu/ui/templates/user/list.html:39
|
#: mailu/ui/templates/user/list.html:39
|
||||||
msgid "Fetched accounts"
|
msgid "Fetched accounts"
|
||||||
msgstr "Abgerufene Konten"
|
msgstr "Abgerufene Konten"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:43 mailu/ui/templates/token/list.html:4
|
#: mailu/ui/templates/sidebar.html:45 mailu/ui/templates/token/list.html:4
|
||||||
msgid "Authentication tokens"
|
msgid "Authentication tokens"
|
||||||
msgstr "Authentifizierungs-Tokens"
|
msgstr "Authentifizierungs-Tokens"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:56
|
#: mailu/ui/templates/sidebar.html:58
|
||||||
msgid "Administration"
|
msgid "Administration"
|
||||||
msgstr "Administration"
|
msgstr "Administration"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:62
|
#: mailu/ui/templates/sidebar.html:64
|
||||||
msgid "Announcement"
|
msgid "Announcement"
|
||||||
msgstr "Bekanntmachung"
|
msgstr "Bekanntmachung"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:68
|
#: mailu/ui/templates/sidebar.html:70
|
||||||
msgid "Administrators"
|
msgid "Administrators"
|
||||||
msgstr "Administratoren"
|
msgstr "Administratoren"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:74
|
#: mailu/ui/templates/sidebar.html:76
|
||||||
msgid "Relayed domains"
|
msgid "Relayed domains"
|
||||||
msgstr "Relay-Domains"
|
msgstr "Relay-Domains"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:88
|
#: mailu/ui/templates/sidebar.html:90
|
||||||
msgid "Mail domains"
|
msgid "Mail domains"
|
||||||
msgstr "E-Mail-Domains"
|
msgstr "E-Mail-Domains"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:99
|
#: mailu/ui/templates/sidebar.html:101
|
||||||
msgid "Webmail"
|
msgid "Webmail"
|
||||||
msgstr "Webmail"
|
msgstr "Webmail"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:135
|
#: mailu/ui/templates/sidebar.html:137
|
||||||
msgid "Sign out"
|
msgid "Sign out"
|
||||||
msgstr "Abmelden"
|
msgstr "Abmelden"
|
||||||
|
|
||||||
@@ -437,12 +499,18 @@ msgstr "Aktionen"
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
|
|
||||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:32
|
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:31
|
||||||
#: mailu/ui/templates/alternative/list.html:29
|
#: mailu/ui/templates/domain/list.html:35 mailu/ui/templates/fetch/list.html:35
|
||||||
#: mailu/ui/templates/domain/list.html:34 mailu/ui/templates/fetch/list.html:34
|
|
||||||
#: mailu/ui/templates/manager/list.html:27
|
#: mailu/ui/templates/manager/list.html:27
|
||||||
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:30
|
#: mailu/ui/templates/relay/list.html:29 mailu/ui/templates/user/list.html:33
|
||||||
#: mailu/ui/templates/user/list.html:34
|
msgid "Edit"
|
||||||
|
msgstr "Bearbeiten"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/admin/list.html:26 mailu/ui/templates/alias/list.html:32
|
||||||
|
#: mailu/ui/templates/alternative/list.html:29
|
||||||
|
#: mailu/ui/templates/domain/list.html:36 mailu/ui/templates/fetch/list.html:36
|
||||||
|
#: mailu/ui/templates/manager/list.html:28
|
||||||
|
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:31
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Löschen"
|
msgstr "Löschen"
|
||||||
|
|
||||||
@@ -464,26 +532,20 @@ msgstr "Alias hinzufügen"
|
|||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:23
|
#: mailu/ui/templates/alias/list.html:23
|
||||||
#: mailu/ui/templates/alternative/list.html:21
|
#: mailu/ui/templates/alternative/list.html:21
|
||||||
#: mailu/ui/templates/domain/list.html:23 mailu/ui/templates/fetch/list.html:25
|
#: mailu/ui/templates/domain/list.html:25 mailu/ui/templates/fetch/list.html:27
|
||||||
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:22
|
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:23
|
||||||
#: mailu/ui/templates/user/list.html:25
|
#: mailu/ui/templates/user/list.html:25
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr "Erstellt"
|
msgstr "Erstellt"
|
||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:24
|
#: mailu/ui/templates/alias/list.html:24
|
||||||
#: mailu/ui/templates/alternative/list.html:22
|
#: mailu/ui/templates/alternative/list.html:22
|
||||||
#: mailu/ui/templates/domain/list.html:24 mailu/ui/templates/fetch/list.html:26
|
#: mailu/ui/templates/domain/list.html:26 mailu/ui/templates/fetch/list.html:28
|
||||||
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:23
|
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:24
|
||||||
#: mailu/ui/templates/user/list.html:26
|
#: mailu/ui/templates/user/list.html:26
|
||||||
msgid "Last edit"
|
msgid "Last edit"
|
||||||
msgstr "Zuletzt bearbeitet"
|
msgstr "Zuletzt bearbeitet"
|
||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:31 mailu/ui/templates/domain/list.html:33
|
|
||||||
#: mailu/ui/templates/fetch/list.html:33 mailu/ui/templates/relay/list.html:29
|
|
||||||
#: mailu/ui/templates/user/list.html:33
|
|
||||||
msgid "Edit"
|
|
||||||
msgstr "Bearbeiten"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/alternative/create.html:4
|
#: mailu/ui/templates/alternative/create.html:4
|
||||||
msgid "Create alternative domain"
|
msgid "Create alternative domain"
|
||||||
msgstr "Alternative Domain erstellen"
|
msgstr "Alternative Domain erstellen"
|
||||||
@@ -517,6 +579,10 @@ msgstr "Schlüssel neu erzeugen"
|
|||||||
msgid "Generate keys"
|
msgid "Generate keys"
|
||||||
msgstr "Schlüssel erzeugen"
|
msgstr "Schlüssel erzeugen"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/details.html:19
|
||||||
|
msgid "Download zonefile"
|
||||||
|
msgstr "Zonefile herunterladen"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:30
|
#: mailu/ui/templates/domain/details.html:30
|
||||||
msgid "DNS MX entry"
|
msgid "DNS MX entry"
|
||||||
msgstr "DNS MX Eintrag"
|
msgstr "DNS MX Eintrag"
|
||||||
@@ -526,25 +592,25 @@ msgid "DNS SPF entries"
|
|||||||
msgstr "DNS SPF Einträge"
|
msgstr "DNS SPF Einträge"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:40
|
#: mailu/ui/templates/domain/details.html:40
|
||||||
msgid "DKIM public key"
|
|
||||||
msgstr "DKIM öffentlicher Schlüssel"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:44
|
|
||||||
msgid "DNS DKIM entry"
|
msgid "DNS DKIM entry"
|
||||||
msgstr "DNS DKIM Eintrag"
|
msgstr "DNS DKIM Eintrag"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:48
|
#: mailu/ui/templates/domain/details.html:44
|
||||||
msgid "DNS DMARC entry"
|
msgid "DNS DMARC entry"
|
||||||
msgstr "DNS DMARC Eintrag"
|
msgstr "DNS DMARC Eintrag"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:58
|
#: mailu/ui/templates/domain/details.html:53
|
||||||
msgid "DNS TLSA entry"
|
msgid "DNS TLSA entry"
|
||||||
msgstr "DNS TLSA Eintrag"
|
msgstr "DNS TLSA Eintrag"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:63
|
#: mailu/ui/templates/domain/details.html:58
|
||||||
msgid "DNS client auto-configuration entries"
|
msgid "DNS client auto-configuration entries"
|
||||||
msgstr "DNS Einträge für die automatische Client-Konfiguration"
|
msgstr "DNS Einträge für die automatische Client-Konfiguration"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/details.html:71
|
||||||
|
msgid "Alternative Domain name"
|
||||||
|
msgstr "Alternativer Domain Name"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/edit.html:4
|
#: mailu/ui/templates/domain/edit.html:4
|
||||||
msgid "Edit domain"
|
msgid "Edit domain"
|
||||||
msgstr "Domain bearbeiten"
|
msgstr "Domain bearbeiten"
|
||||||
@@ -565,26 +631,36 @@ msgstr "Anzahl Mailboxen"
|
|||||||
msgid "Alias count"
|
msgid "Alias count"
|
||||||
msgstr "Anzahl Aliase"
|
msgstr "Anzahl Aliase"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:31
|
#: mailu/ui/templates/domain/list.html:33
|
||||||
msgid "Details"
|
msgid "Details"
|
||||||
msgstr "Details"
|
msgstr "Details"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:38
|
#: mailu/ui/templates/domain/list.html:40
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Benutzer"
|
msgstr "Benutzer"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:39
|
#: mailu/ui/templates/domain/list.html:41
|
||||||
msgid "Aliases"
|
msgid "Aliases"
|
||||||
msgstr "Aliase"
|
msgstr "Aliase"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:40
|
#: mailu/ui/templates/domain/list.html:42
|
||||||
msgid "Managers"
|
msgid "Managers"
|
||||||
msgstr "Manager"
|
msgstr "Manager"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:42
|
#: mailu/ui/templates/domain/list.html:44
|
||||||
msgid "Alternatives"
|
msgid "Alternatives"
|
||||||
msgstr "Alternativen"
|
msgstr "Alternativen"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:52 mailu/ui/templates/fetch/list.html:40
|
||||||
|
#: mailu/ui/templates/fetch/list.html:41
|
||||||
|
msgid "yes"
|
||||||
|
msgstr "ja"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:52 mailu/ui/templates/fetch/list.html:40
|
||||||
|
#: mailu/ui/templates/fetch/list.html:41
|
||||||
|
msgid "no"
|
||||||
|
msgstr "nein"
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/signup.html:13
|
#: mailu/ui/templates/domain/signup.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"In order to register a new domain, you must first setup the\n"
|
"In order to register a new domain, you must first setup the\n"
|
||||||
@@ -631,21 +707,21 @@ msgid "Keep emails"
|
|||||||
msgstr "E-Mails behalten"
|
msgstr "E-Mails behalten"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:23
|
#: mailu/ui/templates/fetch/list.html:23
|
||||||
|
msgid "Rescan emails"
|
||||||
|
msgstr "E-Mails erneut scannen"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/fetch/list.html:24
|
||||||
|
msgid "Folders"
|
||||||
|
msgstr "Ordner"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/fetch/list.html:25
|
||||||
msgid "Last check"
|
msgid "Last check"
|
||||||
msgstr "Letzte Prüfung"
|
msgstr "Letzte Prüfung"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:24
|
#: mailu/ui/templates/fetch/list.html:26
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Status"
|
msgstr "Status"
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:38
|
|
||||||
msgid "yes"
|
|
||||||
msgstr "ja"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:38
|
|
||||||
msgid "no"
|
|
||||||
msgstr "nein"
|
|
||||||
|
|
||||||
#: mailu/ui/templates/manager/create.html:4
|
#: mailu/ui/templates/manager/create.html:4
|
||||||
msgid "Add a manager"
|
msgid "Add a manager"
|
||||||
msgstr "Einen Manager hinzufügen"
|
msgstr "Einen Manager hinzufügen"
|
||||||
@@ -682,6 +758,10 @@ msgstr "Authentifizierungs-Token erstellen"
|
|||||||
msgid "New token"
|
msgid "New token"
|
||||||
msgstr "Neuer Token"
|
msgstr "Neuer Token"
|
||||||
|
|
||||||
|
#: mailu/ui/templates/token/list.html:20
|
||||||
|
msgid "ID"
|
||||||
|
msgstr "ID"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/create.html:4
|
#: mailu/ui/templates/user/create.html:4
|
||||||
msgid "New user"
|
msgid "New user"
|
||||||
msgstr "Neuer Benutzer"
|
msgstr "Neuer Benutzer"
|
||||||
@@ -690,7 +770,7 @@ msgstr "Neuer Benutzer"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Allgemein"
|
msgstr "Allgemein"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/create.html:23
|
#: mailu/ui/templates/user/create.html:24
|
||||||
msgid "Features and quotas"
|
msgid "Features and quotas"
|
||||||
msgstr "Funktionen und Quotas"
|
msgstr "Funktionen und Quotas"
|
||||||
|
|
||||||
@@ -730,47 +810,11 @@ msgstr "Auto-Weiterleitung"
|
|||||||
msgid "pick a domain for the new account"
|
msgid "pick a domain for the new account"
|
||||||
msgstr "Wählen Sie eine Domain für das neue Benutzerkonto"
|
msgstr "Wählen Sie eine Domain für das neue Benutzerkonto"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/signup_domain.html:14
|
#: mailu/ui/templates/user/signup_domain.html:15
|
||||||
msgid "Domain"
|
msgid "Domain"
|
||||||
msgstr "Domain"
|
msgstr "Domain"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/signup_domain.html:15
|
#: mailu/ui/templates/user/signup_domain.html:16
|
||||||
msgid "Available slots"
|
msgid "Available slots"
|
||||||
msgstr "Verfügbare Plätze"
|
msgstr "Verfügbare Plätze"
|
||||||
|
|
||||||
#~ msgid "Spam filter threshold"
|
|
||||||
#~ msgstr "Schwellenwert für Spamfilter"
|
|
||||||
|
|
||||||
#~ msgid "Your account"
|
|
||||||
#~ msgstr "Konto"
|
|
||||||
|
|
||||||
#~ msgid "to access the administration tools"
|
|
||||||
#~ msgstr "für administrativen Zugriff"
|
|
||||||
|
|
||||||
#~ msgid "Services status"
|
|
||||||
#~ msgstr "Dienst-Status"
|
|
||||||
|
|
||||||
#~ msgid "Service"
|
|
||||||
#~ msgstr "Dienst"
|
|
||||||
|
|
||||||
#~ msgid "PID"
|
|
||||||
#~ msgstr "PID"
|
|
||||||
|
|
||||||
#~ msgid "Image"
|
|
||||||
#~ msgstr "Image"
|
|
||||||
|
|
||||||
#~ msgid "Started"
|
|
||||||
#~ msgstr "Gestartet"
|
|
||||||
|
|
||||||
#~ msgid "Last update"
|
|
||||||
#~ msgstr "Letztes Update"
|
|
||||||
|
|
||||||
#~ msgid "from"
|
|
||||||
#~ msgstr "von"
|
|
||||||
|
|
||||||
#~ msgid "Forward emails"
|
|
||||||
#~ msgstr "E-Mails weiterleiten"
|
|
||||||
|
|
||||||
#~ msgid "General settings"
|
|
||||||
#~ msgstr "Allgemeine Einstellungen"
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,33 +7,49 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-05-22 18:47+0200\n"
|
"POT-Creation-Date: 2024-06-20 12:30+0000\n"
|
||||||
"PO-Revision-Date: 2021-03-04 18:46+0000\n"
|
"PO-Revision-Date: 2021-03-04 18:46+0000\n"
|
||||||
"Last-Translator: Jaume Barber <jaumebarber@gmail.com>\n"
|
"Last-Translator: Jaume Barber <jaumebarber@gmail.com>\n"
|
||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
"Language-Team: English "
|
"Language-Team: English "
|
||||||
"<https://translate.tedomum.net/projects/mailu/admin/en/>\n"
|
"<https://translate.tedomum.net/projects/mailu/admin/en/>\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.3.4\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:8 mailu/ui/forms.py:79
|
#: mailu/sso/forms.py:8 mailu/ui/forms.py:91
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:80 mailu/ui/forms.py:93
|
#: mailu/sso/forms.py:9 mailu/ui/forms.py:92 mailu/ui/forms.py:108
|
||||||
#: mailu/ui/forms.py:112 mailu/ui/forms.py:166
|
#: mailu/ui/forms.py:128 mailu/ui/forms.py:135 mailu/ui/forms.py:197
|
||||||
#: mailu/ui/templates/client.html:32 mailu/ui/templates/client.html:57
|
#: mailu/ui/templates/client.html:31 mailu/ui/templates/client.html:56
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Password"
|
msgstr "Password"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:10 mailu/sso/forms.py:11 mailu/sso/templates/login.html:4
|
#: mailu/sso/forms.py:11 mailu/sso/forms.py:12 mailu/sso/templates/login.html:4
|
||||||
#: mailu/ui/templates/sidebar.html:142
|
#: mailu/sso/templates/sidebar_sso.html:42 mailu/ui/templates/sidebar.html:144
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:15 mailu/ui/forms.py:134
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:16
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:17
|
||||||
|
msgid "New password (again)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:19
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/base_sso.html:8 mailu/ui/templates/base.html:8
|
#: mailu/sso/templates/base_sso.html:8 mailu/ui/templates/base.html:8
|
||||||
msgid "Admin page for"
|
msgid "Admin page for"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -46,255 +62,301 @@ msgstr ""
|
|||||||
msgid "change language"
|
msgid "change language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:4 mailu/ui/templates/sidebar.html:94
|
#: mailu/sso/templates/sidebar_sso.html:4 mailu/ui/templates/sidebar.html:96
|
||||||
msgid "Go to"
|
msgid "Go to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:9 mailu/ui/templates/client.html:4
|
#: mailu/sso/templates/sidebar_sso.html:9 mailu/ui/templates/client.html:4
|
||||||
#: mailu/ui/templates/sidebar.html:50 mailu/ui/templates/sidebar.html:107
|
#: mailu/ui/templates/sidebar.html:52 mailu/ui/templates/sidebar.html:109
|
||||||
msgid "Client setup"
|
msgid "Client setup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:16 mailu/ui/templates/sidebar.html:114
|
#: mailu/sso/templates/sidebar_sso.html:16 mailu/ui/templates/sidebar.html:116
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:22 mailu/ui/templates/sidebar.html:120
|
#: mailu/sso/templates/sidebar_sso.html:22 mailu/ui/templates/sidebar.html:122
|
||||||
msgid "Help"
|
msgid "Help"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:35
|
#: mailu/sso/templates/sidebar_sso.html:35
|
||||||
#: mailu/ui/templates/domain/signup.html:4 mailu/ui/templates/sidebar.html:127
|
#: mailu/ui/templates/domain/signup.html:4 mailu/ui/templates/sidebar.html:129
|
||||||
msgid "Register a domain"
|
msgid "Register a domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:49 mailu/ui/forms.py:95
|
#: mailu/sso/templates/sidebar_sso.html:55 mailu/ui/forms.py:111
|
||||||
#: mailu/ui/templates/sidebar.html:149 mailu/ui/templates/user/signup.html:4
|
#: mailu/ui/templates/sidebar.html:151 mailu/ui/templates/user/signup.html:4
|
||||||
#: mailu/ui/templates/user/signup_domain.html:4
|
#: mailu/ui/templates/user/signup_domain.html:4
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr "Sign up"
|
msgstr "Sign up"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:33 mailu/ui/forms.py:36
|
#: mailu/sso/views/base.py:48
|
||||||
|
msgid "Too many attempts from your IP (rate-limit)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:51
|
||||||
|
msgid "Too many attempts for this user (rate-limit)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:69
|
||||||
|
msgid "Wrong e-mail or password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:85
|
||||||
|
msgid "The new password can't be the same as the old password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:88
|
||||||
|
msgid "The new passwords don't match"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:100
|
||||||
|
msgid "The current password is incorrect!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:34 mailu/ui/forms.py:37
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:45
|
#: mailu/ui/forms.py:47
|
||||||
|
msgid "Invalid list of folders."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:56
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Confirm"
|
msgstr "Confirm"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:48 mailu/ui/forms.py:58
|
#: mailu/ui/forms.py:59 mailu/ui/forms.py:69
|
||||||
#: mailu/ui/templates/domain/details.html:26
|
#: mailu/ui/templates/domain/details.html:26
|
||||||
#: mailu/ui/templates/domain/list.html:19 mailu/ui/templates/relay/list.html:18
|
#: mailu/ui/templates/domain/list.html:19 mailu/ui/templates/relay/list.html:18
|
||||||
msgid "Domain name"
|
msgid "Domain name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:49
|
#: mailu/ui/forms.py:60
|
||||||
msgid "Maximum user count"
|
msgid "Maximum user count"
|
||||||
msgstr "Maximum user count"
|
msgstr "Maximum user count"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:50
|
#: mailu/ui/forms.py:61
|
||||||
msgid "Maximum alias count"
|
msgid "Maximum alias count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:51
|
#: mailu/ui/forms.py:62
|
||||||
msgid "Maximum user quota"
|
msgid "Maximum user quota"
|
||||||
msgstr "Maximum user quota"
|
msgstr "Maximum user quota"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:52
|
#: mailu/ui/forms.py:63 mailu/ui/templates/domain/list.html:24
|
||||||
msgid "Enable sign-up"
|
msgid "Enable sign-up"
|
||||||
msgstr "Enable sign-up"
|
msgstr "Enable sign-up"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:53 mailu/ui/forms.py:74 mailu/ui/forms.py:86
|
#: mailu/ui/forms.py:64 mailu/ui/forms.py:86 mailu/ui/forms.py:100
|
||||||
#: mailu/ui/forms.py:132 mailu/ui/forms.py:144
|
#: mailu/ui/forms.py:155 mailu/ui/forms.py:175
|
||||||
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:22
|
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:23
|
||||||
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:20
|
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:21
|
||||||
#: mailu/ui/templates/user/list.html:24
|
#: mailu/ui/templates/user/list.html:24
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr "Comment"
|
msgstr "Comment"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:54 mailu/ui/forms.py:68 mailu/ui/forms.py:75
|
#: mailu/ui/forms.py:65 mailu/ui/forms.py:80 mailu/ui/forms.py:87
|
||||||
#: mailu/ui/forms.py:88 mailu/ui/forms.py:136 mailu/ui/forms.py:145
|
#: mailu/ui/forms.py:103 mailu/ui/forms.py:159 mailu/ui/forms.py:176
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Save"
|
msgstr "Save"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:59
|
#: mailu/ui/forms.py:70
|
||||||
msgid "Initial admin"
|
msgid "Initial admin"
|
||||||
msgstr "Initial admin"
|
msgstr "Initial admin"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:60
|
#: mailu/ui/forms.py:71
|
||||||
msgid "Admin password"
|
msgid "Admin password"
|
||||||
msgstr "Admin password"
|
msgstr "Admin password"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:61 mailu/ui/forms.py:81 mailu/ui/forms.py:94
|
#: mailu/ui/forms.py:72 mailu/ui/forms.py:93 mailu/ui/forms.py:109
|
||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "Confirm password"
|
msgstr "Confirm password"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:63
|
#: mailu/ui/forms.py:75
|
||||||
msgid "Create"
|
msgid "Create"
|
||||||
msgstr "Create"
|
msgstr "Create"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:67
|
#: mailu/ui/forms.py:79
|
||||||
msgid "Alternative name"
|
msgid "Alternative name"
|
||||||
msgstr "Alternative name"
|
msgstr "Alternative name"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:72
|
#: mailu/ui/forms.py:84
|
||||||
msgid "Relayed domain name"
|
msgid "Relayed domain name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:73 mailu/ui/templates/relay/list.html:19
|
#: mailu/ui/forms.py:85 mailu/ui/templates/relay/list.html:19
|
||||||
msgid "Remote host"
|
msgid "Remote host"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:82 mailu/ui/templates/user/list.html:23
|
#: mailu/ui/forms.py:95 mailu/ui/templates/domain/list.html:22
|
||||||
#: mailu/ui/templates/user/signup_domain.html:16
|
#: mailu/ui/templates/user/list.html:23
|
||||||
|
#: mailu/ui/templates/user/signup_domain.html:17
|
||||||
msgid "Quota"
|
msgid "Quota"
|
||||||
msgstr "Quota"
|
msgstr "Quota"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:83
|
#: mailu/ui/forms.py:96
|
||||||
msgid "Allow IMAP access"
|
msgid "Allow IMAP access"
|
||||||
msgstr "Allow IMAP access"
|
msgstr "Allow IMAP access"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:84
|
#: mailu/ui/forms.py:97
|
||||||
msgid "Allow POP3 access"
|
msgid "Allow POP3 access"
|
||||||
msgstr "Allow POP3 access"
|
msgstr "Allow POP3 access"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:85 mailu/ui/forms.py:101
|
#: mailu/ui/forms.py:98
|
||||||
|
msgid "Allow the user to spoof the sender (send email as anyone)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:99 mailu/ui/forms.py:117
|
||||||
#: mailu/ui/templates/user/settings.html:15
|
#: mailu/ui/templates/user/settings.html:15
|
||||||
msgid "Displayed name"
|
msgid "Displayed name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:87
|
#: mailu/ui/forms.py:101
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Enabled"
|
msgstr "Enabled"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:92
|
#: mailu/ui/forms.py:102
|
||||||
|
msgid "Force password change at next login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:107
|
||||||
msgid "Email address"
|
msgid "Email address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:102
|
#: mailu/ui/forms.py:118
|
||||||
msgid "Enable spam filter"
|
msgid "Enable spam filter"
|
||||||
msgstr "Enable spam filter"
|
msgstr "Enable spam filter"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:103
|
#: mailu/ui/forms.py:119
|
||||||
msgid "Enable marking spam mails as read"
|
msgid "Enable marking spam mails as read"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:104
|
#: mailu/ui/forms.py:120
|
||||||
msgid "Spam filter tolerance"
|
msgid "Spam filter tolerance"
|
||||||
msgstr "Spam filter tolerance"
|
msgstr "Spam filter tolerance"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:105
|
#: mailu/ui/forms.py:121
|
||||||
msgid "Enable forwarding"
|
msgid "Enable forwarding"
|
||||||
msgstr "Enable forwarding"
|
msgstr "Enable forwarding"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:106
|
#: mailu/ui/forms.py:122
|
||||||
msgid "Keep a copy of the emails"
|
msgid "Keep a copy of the emails"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:107 mailu/ui/forms.py:143
|
#: mailu/ui/forms.py:123 mailu/ui/forms.py:174
|
||||||
#: mailu/ui/templates/alias/list.html:21
|
#: mailu/ui/templates/alias/list.html:21
|
||||||
msgid "Destination"
|
msgid "Destination"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:108
|
#: mailu/ui/forms.py:124
|
||||||
msgid "Save settings"
|
msgid "Save settings"
|
||||||
msgstr "Save settings"
|
msgstr "Save settings"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:113
|
#: mailu/ui/forms.py:129 mailu/ui/forms.py:136
|
||||||
msgid "Password check"
|
msgid "Password check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:114 mailu/ui/templates/sidebar.html:25
|
#: mailu/ui/forms.py:131 mailu/ui/forms.py:138
|
||||||
|
#: mailu/ui/templates/sidebar.html:25
|
||||||
msgid "Update password"
|
msgid "Update password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:118
|
#: mailu/ui/forms.py:141
|
||||||
msgid "Enable automatic reply"
|
msgid "Enable automatic reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:119
|
#: mailu/ui/forms.py:142
|
||||||
msgid "Reply subject"
|
msgid "Reply subject"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:120
|
#: mailu/ui/forms.py:143
|
||||||
msgid "Reply body"
|
msgid "Reply body"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:122
|
#: mailu/ui/forms.py:145
|
||||||
msgid "Start of vacation"
|
msgid "Start of vacation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:123
|
#: mailu/ui/forms.py:146
|
||||||
msgid "End of vacation"
|
msgid "End of vacation"
|
||||||
msgstr "End of vacation"
|
msgstr "End of vacation"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:124
|
#: mailu/ui/forms.py:147
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Update"
|
msgstr "Update"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:129
|
#: mailu/ui/forms.py:152
|
||||||
msgid "Your token (write it down, as it will never be displayed again)"
|
msgid "Your token (write it down, as it will never be displayed again)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:134 mailu/ui/templates/token/list.html:21
|
#: mailu/ui/forms.py:157 mailu/ui/templates/token/list.html:22
|
||||||
msgid "Authorized IP"
|
msgid "Authorized IP"
|
||||||
msgstr "Authorized IP"
|
msgstr "Authorized IP"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:140
|
#: mailu/ui/forms.py:171
|
||||||
msgid "Alias"
|
msgid "Alias"
|
||||||
msgstr "Alias"
|
msgstr "Alias"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:142
|
#: mailu/ui/forms.py:173
|
||||||
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:149
|
#: mailu/ui/forms.py:180
|
||||||
msgid "Admin email"
|
msgid "Admin email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:150 mailu/ui/forms.py:155 mailu/ui/forms.py:168
|
#: mailu/ui/forms.py:181 mailu/ui/forms.py:186 mailu/ui/forms.py:201
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:154
|
#: mailu/ui/forms.py:185
|
||||||
msgid "Manager email"
|
msgid "Manager email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:159
|
#: mailu/ui/forms.py:190
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:162
|
#: mailu/ui/forms.py:193
|
||||||
msgid "Hostname or IP"
|
msgid "Hostname or IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:163 mailu/ui/templates/client.html:20
|
#: mailu/ui/forms.py:194 mailu/ui/templates/client.html:19
|
||||||
#: mailu/ui/templates/client.html:45
|
#: mailu/ui/templates/client.html:44
|
||||||
msgid "TCP port"
|
msgid "TCP port"
|
||||||
msgstr "TCP port"
|
msgstr "TCP port"
|
||||||
|
|
||||||
#: mailu/ui/forms.py:164
|
#: mailu/ui/forms.py:195
|
||||||
msgid "Enable TLS"
|
msgid "Enable TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:165 mailu/ui/templates/client.html:28
|
#: mailu/ui/forms.py:196 mailu/ui/templates/client.html:27
|
||||||
#: mailu/ui/templates/client.html:53 mailu/ui/templates/fetch/list.html:21
|
#: mailu/ui/templates/client.html:52 mailu/ui/templates/fetch/list.html:21
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:167
|
#: mailu/ui/forms.py:198
|
||||||
msgid "Keep emails on the server"
|
msgid "Keep emails on the server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:172
|
#: mailu/ui/forms.py:199
|
||||||
|
msgid "Rescan emails locally"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:200
|
||||||
|
msgid "Folders to fetch on the server"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:205
|
||||||
msgid "Announcement subject"
|
msgid "Announcement subject"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:174
|
#: mailu/ui/forms.py:207
|
||||||
msgid "Announcement body"
|
msgid "Announcement body"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:176
|
#: mailu/ui/forms.py:209
|
||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -302,7 +364,7 @@ msgstr ""
|
|||||||
msgid "Public announcement"
|
msgid "Public announcement"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/antispam.html:4 mailu/ui/templates/sidebar.html:80
|
#: mailu/ui/templates/antispam.html:4 mailu/ui/templates/sidebar.html:82
|
||||||
#: mailu/ui/templates/user/settings.html:19
|
#: mailu/ui/templates/user/settings.html:19
|
||||||
msgid "Antispam"
|
msgid "Antispam"
|
||||||
msgstr "Antispam"
|
msgstr "Antispam"
|
||||||
@@ -315,22 +377,30 @@ msgstr ""
|
|||||||
msgid "configure your email client"
|
msgid "configure your email client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:13
|
#: mailu/ui/templates/client.html:12
|
||||||
msgid "Incoming mail"
|
msgid "Incoming mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:16 mailu/ui/templates/client.html:41
|
#: mailu/ui/templates/client.html:15 mailu/ui/templates/client.html:40
|
||||||
msgid "Mail protocol"
|
msgid "Mail protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:24 mailu/ui/templates/client.html:49
|
#: mailu/ui/templates/client.html:23 mailu/ui/templates/client.html:48
|
||||||
msgid "Server name"
|
msgid "Server name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:38
|
#: mailu/ui/templates/client.html:37
|
||||||
msgid "Outgoing mail"
|
msgid "Outgoing mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:62
|
||||||
|
msgid "If you use an Apple device,"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:63
|
||||||
|
msgid "click here to auto-configure it."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/confirm.html:4
|
#: mailu/ui/templates/confirm.html:4
|
||||||
msgid "Confirm action"
|
msgid "Confirm action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -348,7 +418,7 @@ msgstr "Docker error"
|
|||||||
msgid "An error occurred while talking to the Docker server."
|
msgid "An error occurred while talking to the Docker server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/macros.html:129
|
#: mailu/ui/templates/macros.html:128
|
||||||
msgid "copy to clipboard"
|
msgid "copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -356,48 +426,48 @@ msgstr ""
|
|||||||
msgid "My account"
|
msgid "My account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:19 mailu/ui/templates/user/list.html:37
|
#: mailu/ui/templates/sidebar.html:19 mailu/ui/templates/user/list.html:36
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:31 mailu/ui/templates/user/list.html:38
|
#: mailu/ui/templates/sidebar.html:31 mailu/ui/templates/user/list.html:37
|
||||||
msgid "Auto-reply"
|
msgid "Auto-reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:4 mailu/ui/templates/sidebar.html:37
|
#: mailu/ui/templates/fetch/list.html:4 mailu/ui/templates/sidebar.html:38
|
||||||
#: mailu/ui/templates/user/list.html:39
|
#: mailu/ui/templates/user/list.html:39
|
||||||
msgid "Fetched accounts"
|
msgid "Fetched accounts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:43 mailu/ui/templates/token/list.html:4
|
#: mailu/ui/templates/sidebar.html:45 mailu/ui/templates/token/list.html:4
|
||||||
msgid "Authentication tokens"
|
msgid "Authentication tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:56
|
#: mailu/ui/templates/sidebar.html:58
|
||||||
msgid "Administration"
|
msgid "Administration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:62
|
#: mailu/ui/templates/sidebar.html:64
|
||||||
msgid "Announcement"
|
msgid "Announcement"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:68
|
#: mailu/ui/templates/sidebar.html:70
|
||||||
msgid "Administrators"
|
msgid "Administrators"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:74
|
#: mailu/ui/templates/sidebar.html:76
|
||||||
msgid "Relayed domains"
|
msgid "Relayed domains"
|
||||||
msgstr "Relayed domains"
|
msgstr "Relayed domains"
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:88
|
#: mailu/ui/templates/sidebar.html:90
|
||||||
msgid "Mail domains"
|
msgid "Mail domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:99
|
#: mailu/ui/templates/sidebar.html:101
|
||||||
msgid "Webmail"
|
msgid "Webmail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:135
|
#: mailu/ui/templates/sidebar.html:137
|
||||||
msgid "Sign out"
|
msgid "Sign out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -431,12 +501,18 @@ msgstr ""
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:32
|
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:31
|
||||||
#: mailu/ui/templates/alternative/list.html:29
|
#: mailu/ui/templates/domain/list.html:35 mailu/ui/templates/fetch/list.html:35
|
||||||
#: mailu/ui/templates/domain/list.html:34 mailu/ui/templates/fetch/list.html:34
|
|
||||||
#: mailu/ui/templates/manager/list.html:27
|
#: mailu/ui/templates/manager/list.html:27
|
||||||
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:30
|
#: mailu/ui/templates/relay/list.html:29 mailu/ui/templates/user/list.html:33
|
||||||
#: mailu/ui/templates/user/list.html:34
|
msgid "Edit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/admin/list.html:26 mailu/ui/templates/alias/list.html:32
|
||||||
|
#: mailu/ui/templates/alternative/list.html:29
|
||||||
|
#: mailu/ui/templates/domain/list.html:36 mailu/ui/templates/fetch/list.html:36
|
||||||
|
#: mailu/ui/templates/manager/list.html:28
|
||||||
|
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:31
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -458,26 +534,20 @@ msgstr ""
|
|||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:23
|
#: mailu/ui/templates/alias/list.html:23
|
||||||
#: mailu/ui/templates/alternative/list.html:21
|
#: mailu/ui/templates/alternative/list.html:21
|
||||||
#: mailu/ui/templates/domain/list.html:23 mailu/ui/templates/fetch/list.html:25
|
#: mailu/ui/templates/domain/list.html:25 mailu/ui/templates/fetch/list.html:27
|
||||||
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:22
|
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:23
|
||||||
#: mailu/ui/templates/user/list.html:25
|
#: mailu/ui/templates/user/list.html:25
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:24
|
#: mailu/ui/templates/alias/list.html:24
|
||||||
#: mailu/ui/templates/alternative/list.html:22
|
#: mailu/ui/templates/alternative/list.html:22
|
||||||
#: mailu/ui/templates/domain/list.html:24 mailu/ui/templates/fetch/list.html:26
|
#: mailu/ui/templates/domain/list.html:26 mailu/ui/templates/fetch/list.html:28
|
||||||
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:23
|
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:24
|
||||||
#: mailu/ui/templates/user/list.html:26
|
#: mailu/ui/templates/user/list.html:26
|
||||||
msgid "Last edit"
|
msgid "Last edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:31 mailu/ui/templates/domain/list.html:33
|
|
||||||
#: mailu/ui/templates/fetch/list.html:33 mailu/ui/templates/relay/list.html:29
|
|
||||||
#: mailu/ui/templates/user/list.html:33
|
|
||||||
msgid "Edit"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mailu/ui/templates/alternative/create.html:4
|
#: mailu/ui/templates/alternative/create.html:4
|
||||||
msgid "Create alternative domain"
|
msgid "Create alternative domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -524,22 +594,18 @@ msgid "DNS SPF entries"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:40
|
#: mailu/ui/templates/domain/details.html:40
|
||||||
msgid "DKIM public key"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:44
|
|
||||||
msgid "DNS DKIM entry"
|
msgid "DNS DKIM entry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:48
|
#: mailu/ui/templates/domain/details.html:44
|
||||||
msgid "DNS DMARC entry"
|
msgid "DNS DMARC entry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:58
|
#: mailu/ui/templates/domain/details.html:53
|
||||||
msgid "DNS TLSA entry"
|
msgid "DNS TLSA entry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:63
|
#: mailu/ui/templates/domain/details.html:58
|
||||||
msgid "DNS client auto-configuration entries"
|
msgid "DNS client auto-configuration entries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -563,26 +629,36 @@ msgstr ""
|
|||||||
msgid "Alias count"
|
msgid "Alias count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:31
|
#: mailu/ui/templates/domain/list.html:33
|
||||||
msgid "Details"
|
msgid "Details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:38
|
#: mailu/ui/templates/domain/list.html:40
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:39
|
#: mailu/ui/templates/domain/list.html:41
|
||||||
msgid "Aliases"
|
msgid "Aliases"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:40
|
#: mailu/ui/templates/domain/list.html:42
|
||||||
msgid "Managers"
|
msgid "Managers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:42
|
#: mailu/ui/templates/domain/list.html:44
|
||||||
msgid "Alternatives"
|
msgid "Alternatives"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:52 mailu/ui/templates/fetch/list.html:40
|
||||||
|
#: mailu/ui/templates/fetch/list.html:41
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:52 mailu/ui/templates/fetch/list.html:40
|
||||||
|
#: mailu/ui/templates/fetch/list.html:41
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/signup.html:13
|
#: mailu/ui/templates/domain/signup.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"In order to register a new domain, you must first setup the\n"
|
"In order to register a new domain, you must first setup the\n"
|
||||||
@@ -621,21 +697,21 @@ msgid "Keep emails"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:23
|
#: mailu/ui/templates/fetch/list.html:23
|
||||||
msgid "Last check"
|
msgid "Rescan emails"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:24
|
#: mailu/ui/templates/fetch/list.html:24
|
||||||
|
msgid "Folders"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/fetch/list.html:25
|
||||||
|
msgid "Last check"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/fetch/list.html:26
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:38
|
|
||||||
msgid "yes"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:38
|
|
||||||
msgid "no"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mailu/ui/templates/manager/create.html:4
|
#: mailu/ui/templates/manager/create.html:4
|
||||||
msgid "Add a manager"
|
msgid "Add a manager"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -672,6 +748,10 @@ msgstr ""
|
|||||||
msgid "New token"
|
msgid "New token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/token/list.html:20
|
||||||
|
msgid "ID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/user/create.html:4
|
#: mailu/ui/templates/user/create.html:4
|
||||||
msgid "New user"
|
msgid "New user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -680,7 +760,7 @@ msgstr ""
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/user/create.html:23
|
#: mailu/ui/templates/user/create.html:24
|
||||||
msgid "Features and quotas"
|
msgid "Features and quotas"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -720,29 +800,11 @@ msgstr ""
|
|||||||
msgid "pick a domain for the new account"
|
msgid "pick a domain for the new account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/user/signup_domain.html:14
|
#: mailu/ui/templates/user/signup_domain.html:15
|
||||||
msgid "Domain"
|
msgid "Domain"
|
||||||
msgstr "Domain"
|
msgstr "Domain"
|
||||||
|
|
||||||
#: mailu/ui/templates/user/signup_domain.html:15
|
#: mailu/ui/templates/user/signup_domain.html:16
|
||||||
msgid "Available slots"
|
msgid "Available slots"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Your account"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Spam filter threshold"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "from"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "General settings"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "to access the administration tools"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Forward emails"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,20 @@
|
|||||||
from wtforms import validators, fields, widgets
|
from wtforms import validators, fields, widgets
|
||||||
|
from wtforms.validators import ValidationError
|
||||||
from wtforms_components import fields as fields_
|
from wtforms_components import fields as fields_
|
||||||
from flask_babel import lazy_gettext as _
|
from flask_babel import lazy_gettext as _
|
||||||
|
|
||||||
import flask_login
|
import flask_login
|
||||||
import flask_wtf
|
import flask_wtf
|
||||||
import re
|
import re
|
||||||
|
import string
|
||||||
import ipaddress
|
import ipaddress
|
||||||
|
|
||||||
LOCALPART_REGEX = r'^[a-zA-Z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&\'*+/=?^_`{|}~-]+)*$'
|
LOCALPART_REGEX = r'^[a-zA-Z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&\'*+/=?^_`{|}~-]+)*$'
|
||||||
|
|
||||||
|
def checkStrippable(form, field):
|
||||||
|
if field.data != field.data.strip(string.whitespace):
|
||||||
|
raise ValidationError(_('Passwords should not start or end with whitespaces'))
|
||||||
|
|
||||||
class DestinationField(fields.SelectMultipleField):
|
class DestinationField(fields.SelectMultipleField):
|
||||||
""" Allow for multiple emails selection from current user choices and
|
""" Allow for multiple emails selection from current user choices and
|
||||||
additional email addresses.
|
additional email addresses.
|
||||||
@@ -68,7 +74,7 @@ class DomainForm(flask_wtf.FlaskForm):
|
|||||||
class DomainSignupForm(flask_wtf.FlaskForm):
|
class DomainSignupForm(flask_wtf.FlaskForm):
|
||||||
name = fields.StringField(_('Domain name'), [validators.DataRequired()])
|
name = fields.StringField(_('Domain name'), [validators.DataRequired()])
|
||||||
localpart = fields.StringField(_('Initial admin'), [validators.DataRequired()])
|
localpart = fields.StringField(_('Initial admin'), [validators.DataRequired()])
|
||||||
pw = fields.PasswordField(_('Admin password'), [validators.DataRequired()])
|
pw = fields.PasswordField(_('Admin password'), [validators.DataRequired(), checkStrippable])
|
||||||
pw2 = fields.PasswordField(_('Confirm password'), [validators.EqualTo('pw')])
|
pw2 = fields.PasswordField(_('Confirm password'), [validators.EqualTo('pw')])
|
||||||
pwned = fields.HiddenField(label='', default=-1)
|
pwned = fields.HiddenField(label='', default=-1)
|
||||||
captcha = flask_wtf.RecaptchaField()
|
captcha = flask_wtf.RecaptchaField()
|
||||||
@@ -90,7 +96,7 @@ class RelayForm(flask_wtf.FlaskForm):
|
|||||||
class UserForm(flask_wtf.FlaskForm):
|
class UserForm(flask_wtf.FlaskForm):
|
||||||
localpart = fields.StringField(_('E-mail'), [validators.DataRequired(), validators.Regexp(LOCALPART_REGEX)])
|
localpart = fields.StringField(_('E-mail'), [validators.DataRequired(), validators.Regexp(LOCALPART_REGEX)])
|
||||||
pw = fields.PasswordField(_('Password'))
|
pw = fields.PasswordField(_('Password'))
|
||||||
pw2 = fields.PasswordField(_('Confirm password'), [validators.EqualTo('pw')])
|
pw2 = fields.PasswordField(_('Confirm password'), [checkStrippable, validators.EqualTo('pw')])
|
||||||
pwned = fields.HiddenField(label='', default=-1)
|
pwned = fields.HiddenField(label='', default=-1)
|
||||||
quota_bytes = fields_.IntegerSliderField(_('Quota'), default=10**9)
|
quota_bytes = fields_.IntegerSliderField(_('Quota'), default=10**9)
|
||||||
enable_imap = fields.BooleanField(_('Allow IMAP access'), default=True)
|
enable_imap = fields.BooleanField(_('Allow IMAP access'), default=True)
|
||||||
@@ -105,7 +111,7 @@ class UserForm(flask_wtf.FlaskForm):
|
|||||||
|
|
||||||
class UserSignupForm(flask_wtf.FlaskForm):
|
class UserSignupForm(flask_wtf.FlaskForm):
|
||||||
localpart = fields.StringField(_('Email address'), [validators.DataRequired(), validators.Regexp(LOCALPART_REGEX)])
|
localpart = fields.StringField(_('Email address'), [validators.DataRequired(), validators.Regexp(LOCALPART_REGEX)])
|
||||||
pw = fields.PasswordField(_('Password'), [validators.DataRequired()])
|
pw = fields.PasswordField(_('Password'), [validators.DataRequired(), checkStrippable])
|
||||||
pw2 = fields.PasswordField(_('Confirm password'), [validators.EqualTo('pw')])
|
pw2 = fields.PasswordField(_('Confirm password'), [validators.EqualTo('pw')])
|
||||||
pwned = fields.HiddenField(label='', default=-1)
|
pwned = fields.HiddenField(label='', default=-1)
|
||||||
submit = fields.SubmitField(_('Sign up'))
|
submit = fields.SubmitField(_('Sign up'))
|
||||||
@@ -132,7 +138,7 @@ class UserPasswordForm(flask_wtf.FlaskForm):
|
|||||||
|
|
||||||
class UserPasswordChangeForm(flask_wtf.FlaskForm):
|
class UserPasswordChangeForm(flask_wtf.FlaskForm):
|
||||||
current_pw = fields.PasswordField(_('Current password'), [validators.DataRequired()])
|
current_pw = fields.PasswordField(_('Current password'), [validators.DataRequired()])
|
||||||
pw = fields.PasswordField(_('Password'), [validators.DataRequired()])
|
pw = fields.PasswordField(_('Password'), [validators.DataRequired(), checkStrippable])
|
||||||
pw2 = fields.PasswordField(_('Password check'), [validators.DataRequired()])
|
pw2 = fields.PasswordField(_('Password check'), [validators.DataRequired()])
|
||||||
pwned = fields.HiddenField(label='', default=-1)
|
pwned = fields.HiddenField(label='', default=-1)
|
||||||
submit = fields.SubmitField(_('Update password'))
|
submit = fields.SubmitField(_('Update password'))
|
||||||
|
|||||||
@@ -63,4 +63,36 @@
|
|||||||
</pre></td>
|
</pre></td>
|
||||||
</tr>
|
</tr>
|
||||||
{%- endcall %}
|
{%- endcall %}
|
||||||
|
|
||||||
|
{%- for alternative in domain.alternatives %}
|
||||||
|
|
||||||
|
{%- call macros.table(datatable=False) %}
|
||||||
|
<tr>
|
||||||
|
<th>{% trans %}Alternative Domain name{% endtrans %}</th>
|
||||||
|
<td>{{ alternative.name }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>{% trans %}DNS MX entry{% endtrans %} <i class="fa {{ 'fa-check-circle text-success' if alternative.check_mx() else 'fa-exclamation-circle text-danger' }}"></i></th>
|
||||||
|
<td>{{ macros.clip("dns_mx") }}<pre id="dns_mx" class="pre-config border bg-light">{{ alternative.dns_mx }}</pre></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>{% trans %}DNS SPF entries{% endtrans %}</th>
|
||||||
|
<td>{{ macros.clip("dns_spf") }}<pre id="dns_spf" class="pre-config border bg-light">{{ alternative.dns_spf }}</pre>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{%- if alternative.domain.dkim_publickey %}
|
||||||
|
<tr>
|
||||||
|
<th>{% trans %}DNS DKIM entry{% endtrans %}</th>
|
||||||
|
<td>{{ macros.clip("dns_dkim") }}<pre id="dns_dkim" class="pre-config border bg-light">{{ alternative.dns_dkim }}</pre></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>{% trans %}DNS DMARC entry{% endtrans %}</th>
|
||||||
|
<td>
|
||||||
|
{{ macros.clip("dns_dmarc") }}<pre id="dns_dmarc" class="pre-config border bg-light">{{ alternative.dns_dmarc }}</pre>
|
||||||
|
{{ macros.clip("dns_dmarc_report") }}<pre id="dns_dmarc_report" class="pre-config border bg-light">{{ alternative.dns_dmarc_report }}</pre>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{%- endif %}
|
||||||
|
{%- endcall %}
|
||||||
|
{%- endfor %}
|
||||||
{%- endblock %}
|
{%- endblock %}
|
||||||
|
|||||||
@@ -1,37 +1,53 @@
|
|||||||
# Translations template for PROJECT.
|
# Translations template for PROJECT.
|
||||||
# Copyright (C) 2022 ORGANIZATION
|
# Copyright (C) 2024 ORGANIZATION
|
||||||
# This file is distributed under the same license as the PROJECT project.
|
# This file is distributed under the same license as the PROJECT project.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-05-22 18:47+0200\n"
|
"POT-Creation-Date: 2024-06-20 12:30+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.3.4\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#: mailu/sso/forms.py:8 mailu/ui/forms.py:79
|
#: mailu/sso/forms.py:8 mailu/ui/forms.py:91
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:80 mailu/ui/forms.py:93
|
#: mailu/sso/forms.py:9 mailu/ui/forms.py:92 mailu/ui/forms.py:108
|
||||||
#: mailu/ui/forms.py:112 mailu/ui/forms.py:166
|
#: mailu/ui/forms.py:128 mailu/ui/forms.py:135 mailu/ui/forms.py:197
|
||||||
#: mailu/ui/templates/client.html:32 mailu/ui/templates/client.html:57
|
#: mailu/ui/templates/client.html:31 mailu/ui/templates/client.html:56
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/forms.py:10 mailu/sso/forms.py:11 mailu/sso/templates/login.html:4
|
#: mailu/sso/forms.py:11 mailu/sso/forms.py:12 mailu/sso/templates/login.html:4
|
||||||
#: mailu/ui/templates/sidebar.html:142
|
#: mailu/sso/templates/sidebar_sso.html:42 mailu/ui/templates/sidebar.html:144
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:15 mailu/ui/forms.py:134
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:16
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:17
|
||||||
|
msgid "New password (again)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/forms.py:19
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/base_sso.html:8 mailu/ui/templates/base.html:8
|
#: mailu/sso/templates/base_sso.html:8 mailu/ui/templates/base.html:8
|
||||||
msgid "Admin page for"
|
msgid "Admin page for"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -44,255 +60,301 @@ msgstr ""
|
|||||||
msgid "change language"
|
msgid "change language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:4 mailu/ui/templates/sidebar.html:94
|
#: mailu/sso/templates/sidebar_sso.html:4 mailu/ui/templates/sidebar.html:96
|
||||||
msgid "Go to"
|
msgid "Go to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:9 mailu/ui/templates/client.html:4
|
#: mailu/sso/templates/sidebar_sso.html:9 mailu/ui/templates/client.html:4
|
||||||
#: mailu/ui/templates/sidebar.html:50 mailu/ui/templates/sidebar.html:107
|
#: mailu/ui/templates/sidebar.html:52 mailu/ui/templates/sidebar.html:109
|
||||||
msgid "Client setup"
|
msgid "Client setup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:16 mailu/ui/templates/sidebar.html:114
|
#: mailu/sso/templates/sidebar_sso.html:16 mailu/ui/templates/sidebar.html:116
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:22 mailu/ui/templates/sidebar.html:120
|
#: mailu/sso/templates/sidebar_sso.html:22 mailu/ui/templates/sidebar.html:122
|
||||||
msgid "Help"
|
msgid "Help"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:35
|
#: mailu/sso/templates/sidebar_sso.html:35
|
||||||
#: mailu/ui/templates/domain/signup.html:4 mailu/ui/templates/sidebar.html:127
|
#: mailu/ui/templates/domain/signup.html:4 mailu/ui/templates/sidebar.html:129
|
||||||
msgid "Register a domain"
|
msgid "Register a domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/sso/templates/sidebar_sso.html:49 mailu/ui/forms.py:95
|
#: mailu/sso/templates/sidebar_sso.html:55 mailu/ui/forms.py:111
|
||||||
#: mailu/ui/templates/sidebar.html:149 mailu/ui/templates/user/signup.html:4
|
#: mailu/ui/templates/sidebar.html:151 mailu/ui/templates/user/signup.html:4
|
||||||
#: mailu/ui/templates/user/signup_domain.html:4
|
#: mailu/ui/templates/user/signup_domain.html:4
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:33 mailu/ui/forms.py:36
|
#: mailu/sso/views/base.py:48
|
||||||
|
msgid "Too many attempts from your IP (rate-limit)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:51
|
||||||
|
msgid "Too many attempts for this user (rate-limit)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:69
|
||||||
|
msgid "Wrong e-mail or password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:85
|
||||||
|
msgid "The new password can't be the same as the old password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:88
|
||||||
|
msgid "The new passwords don't match"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/sso/views/base.py:100
|
||||||
|
msgid "The current password is incorrect!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:34 mailu/ui/forms.py:37
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:45
|
#: mailu/ui/forms.py:47
|
||||||
|
msgid "Invalid list of folders."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:56
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:48 mailu/ui/forms.py:58
|
#: mailu/ui/forms.py:59 mailu/ui/forms.py:69
|
||||||
#: mailu/ui/templates/domain/details.html:26
|
#: mailu/ui/templates/domain/details.html:26
|
||||||
#: mailu/ui/templates/domain/list.html:19 mailu/ui/templates/relay/list.html:18
|
#: mailu/ui/templates/domain/list.html:19 mailu/ui/templates/relay/list.html:18
|
||||||
msgid "Domain name"
|
msgid "Domain name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:49
|
#: mailu/ui/forms.py:60
|
||||||
msgid "Maximum user count"
|
msgid "Maximum user count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:50
|
#: mailu/ui/forms.py:61
|
||||||
msgid "Maximum alias count"
|
msgid "Maximum alias count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:51
|
#: mailu/ui/forms.py:62
|
||||||
msgid "Maximum user quota"
|
msgid "Maximum user quota"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:52
|
#: mailu/ui/forms.py:63 mailu/ui/templates/domain/list.html:24
|
||||||
msgid "Enable sign-up"
|
msgid "Enable sign-up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:53 mailu/ui/forms.py:74 mailu/ui/forms.py:86
|
#: mailu/ui/forms.py:64 mailu/ui/forms.py:86 mailu/ui/forms.py:100
|
||||||
#: mailu/ui/forms.py:132 mailu/ui/forms.py:144
|
#: mailu/ui/forms.py:155 mailu/ui/forms.py:175
|
||||||
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:22
|
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:23
|
||||||
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:20
|
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:21
|
||||||
#: mailu/ui/templates/user/list.html:24
|
#: mailu/ui/templates/user/list.html:24
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:54 mailu/ui/forms.py:68 mailu/ui/forms.py:75
|
#: mailu/ui/forms.py:65 mailu/ui/forms.py:80 mailu/ui/forms.py:87
|
||||||
#: mailu/ui/forms.py:88 mailu/ui/forms.py:136 mailu/ui/forms.py:145
|
#: mailu/ui/forms.py:103 mailu/ui/forms.py:159 mailu/ui/forms.py:176
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:59
|
#: mailu/ui/forms.py:70
|
||||||
msgid "Initial admin"
|
msgid "Initial admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:60
|
#: mailu/ui/forms.py:71
|
||||||
msgid "Admin password"
|
msgid "Admin password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:61 mailu/ui/forms.py:81 mailu/ui/forms.py:94
|
#: mailu/ui/forms.py:72 mailu/ui/forms.py:93 mailu/ui/forms.py:109
|
||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:63
|
#: mailu/ui/forms.py:75
|
||||||
msgid "Create"
|
msgid "Create"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:67
|
#: mailu/ui/forms.py:79
|
||||||
msgid "Alternative name"
|
msgid "Alternative name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:72
|
#: mailu/ui/forms.py:84
|
||||||
msgid "Relayed domain name"
|
msgid "Relayed domain name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:73 mailu/ui/templates/relay/list.html:19
|
#: mailu/ui/forms.py:85 mailu/ui/templates/relay/list.html:19
|
||||||
msgid "Remote host"
|
msgid "Remote host"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:82 mailu/ui/templates/user/list.html:23
|
#: mailu/ui/forms.py:95 mailu/ui/templates/domain/list.html:22
|
||||||
#: mailu/ui/templates/user/signup_domain.html:16
|
#: mailu/ui/templates/user/list.html:23
|
||||||
|
#: mailu/ui/templates/user/signup_domain.html:17
|
||||||
msgid "Quota"
|
msgid "Quota"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:83
|
#: mailu/ui/forms.py:96
|
||||||
msgid "Allow IMAP access"
|
msgid "Allow IMAP access"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:84
|
#: mailu/ui/forms.py:97
|
||||||
msgid "Allow POP3 access"
|
msgid "Allow POP3 access"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:85 mailu/ui/forms.py:101
|
#: mailu/ui/forms.py:98
|
||||||
|
msgid "Allow the user to spoof the sender (send email as anyone)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:99 mailu/ui/forms.py:117
|
||||||
#: mailu/ui/templates/user/settings.html:15
|
#: mailu/ui/templates/user/settings.html:15
|
||||||
msgid "Displayed name"
|
msgid "Displayed name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:87
|
#: mailu/ui/forms.py:101
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:92
|
#: mailu/ui/forms.py:102
|
||||||
|
msgid "Force password change at next login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:107
|
||||||
msgid "Email address"
|
msgid "Email address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:102
|
#: mailu/ui/forms.py:118
|
||||||
msgid "Enable spam filter"
|
msgid "Enable spam filter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:103
|
#: mailu/ui/forms.py:119
|
||||||
msgid "Enable marking spam mails as read"
|
msgid "Enable marking spam mails as read"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:104
|
#: mailu/ui/forms.py:120
|
||||||
msgid "Spam filter tolerance"
|
msgid "Spam filter tolerance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:105
|
#: mailu/ui/forms.py:121
|
||||||
msgid "Enable forwarding"
|
msgid "Enable forwarding"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:106
|
#: mailu/ui/forms.py:122
|
||||||
msgid "Keep a copy of the emails"
|
msgid "Keep a copy of the emails"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:107 mailu/ui/forms.py:143
|
#: mailu/ui/forms.py:123 mailu/ui/forms.py:174
|
||||||
#: mailu/ui/templates/alias/list.html:21
|
#: mailu/ui/templates/alias/list.html:21
|
||||||
msgid "Destination"
|
msgid "Destination"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:108
|
#: mailu/ui/forms.py:124
|
||||||
msgid "Save settings"
|
msgid "Save settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:113
|
#: mailu/ui/forms.py:129 mailu/ui/forms.py:136
|
||||||
msgid "Password check"
|
msgid "Password check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:114 mailu/ui/templates/sidebar.html:25
|
#: mailu/ui/forms.py:131 mailu/ui/forms.py:138
|
||||||
|
#: mailu/ui/templates/sidebar.html:25
|
||||||
msgid "Update password"
|
msgid "Update password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:118
|
#: mailu/ui/forms.py:141
|
||||||
msgid "Enable automatic reply"
|
msgid "Enable automatic reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:119
|
#: mailu/ui/forms.py:142
|
||||||
msgid "Reply subject"
|
msgid "Reply subject"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:120
|
#: mailu/ui/forms.py:143
|
||||||
msgid "Reply body"
|
msgid "Reply body"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:122
|
#: mailu/ui/forms.py:145
|
||||||
msgid "Start of vacation"
|
msgid "Start of vacation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:123
|
#: mailu/ui/forms.py:146
|
||||||
msgid "End of vacation"
|
msgid "End of vacation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:124
|
#: mailu/ui/forms.py:147
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:129
|
#: mailu/ui/forms.py:152
|
||||||
msgid "Your token (write it down, as it will never be displayed again)"
|
msgid "Your token (write it down, as it will never be displayed again)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:134 mailu/ui/templates/token/list.html:21
|
#: mailu/ui/forms.py:157 mailu/ui/templates/token/list.html:22
|
||||||
msgid "Authorized IP"
|
msgid "Authorized IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:140
|
#: mailu/ui/forms.py:171
|
||||||
msgid "Alias"
|
msgid "Alias"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:142
|
#: mailu/ui/forms.py:173
|
||||||
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:149
|
#: mailu/ui/forms.py:180
|
||||||
msgid "Admin email"
|
msgid "Admin email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:150 mailu/ui/forms.py:155 mailu/ui/forms.py:168
|
#: mailu/ui/forms.py:181 mailu/ui/forms.py:186 mailu/ui/forms.py:201
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:154
|
#: mailu/ui/forms.py:185
|
||||||
msgid "Manager email"
|
msgid "Manager email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:159
|
#: mailu/ui/forms.py:190
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:162
|
#: mailu/ui/forms.py:193
|
||||||
msgid "Hostname or IP"
|
msgid "Hostname or IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:163 mailu/ui/templates/client.html:20
|
#: mailu/ui/forms.py:194 mailu/ui/templates/client.html:19
|
||||||
#: mailu/ui/templates/client.html:45
|
#: mailu/ui/templates/client.html:44
|
||||||
msgid "TCP port"
|
msgid "TCP port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:164
|
#: mailu/ui/forms.py:195
|
||||||
msgid "Enable TLS"
|
msgid "Enable TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:165 mailu/ui/templates/client.html:28
|
#: mailu/ui/forms.py:196 mailu/ui/templates/client.html:27
|
||||||
#: mailu/ui/templates/client.html:53 mailu/ui/templates/fetch/list.html:21
|
#: mailu/ui/templates/client.html:52 mailu/ui/templates/fetch/list.html:21
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:167
|
#: mailu/ui/forms.py:198
|
||||||
msgid "Keep emails on the server"
|
msgid "Keep emails on the server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:172
|
#: mailu/ui/forms.py:199
|
||||||
|
msgid "Rescan emails locally"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:200
|
||||||
|
msgid "Folders to fetch on the server"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/forms.py:205
|
||||||
msgid "Announcement subject"
|
msgid "Announcement subject"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:174
|
#: mailu/ui/forms.py:207
|
||||||
msgid "Announcement body"
|
msgid "Announcement body"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/forms.py:176
|
#: mailu/ui/forms.py:209
|
||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -300,7 +362,7 @@ msgstr ""
|
|||||||
msgid "Public announcement"
|
msgid "Public announcement"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/antispam.html:4 mailu/ui/templates/sidebar.html:80
|
#: mailu/ui/templates/antispam.html:4 mailu/ui/templates/sidebar.html:82
|
||||||
#: mailu/ui/templates/user/settings.html:19
|
#: mailu/ui/templates/user/settings.html:19
|
||||||
msgid "Antispam"
|
msgid "Antispam"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -313,22 +375,30 @@ msgstr ""
|
|||||||
msgid "configure your email client"
|
msgid "configure your email client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:13
|
#: mailu/ui/templates/client.html:12
|
||||||
msgid "Incoming mail"
|
msgid "Incoming mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:16 mailu/ui/templates/client.html:41
|
#: mailu/ui/templates/client.html:15 mailu/ui/templates/client.html:40
|
||||||
msgid "Mail protocol"
|
msgid "Mail protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:24 mailu/ui/templates/client.html:49
|
#: mailu/ui/templates/client.html:23 mailu/ui/templates/client.html:48
|
||||||
msgid "Server name"
|
msgid "Server name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/client.html:38
|
#: mailu/ui/templates/client.html:37
|
||||||
msgid "Outgoing mail"
|
msgid "Outgoing mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:62
|
||||||
|
msgid "If you use an Apple device,"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/client.html:63
|
||||||
|
msgid "click here to auto-configure it."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/confirm.html:4
|
#: mailu/ui/templates/confirm.html:4
|
||||||
msgid "Confirm action"
|
msgid "Confirm action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -346,7 +416,7 @@ msgstr ""
|
|||||||
msgid "An error occurred while talking to the Docker server."
|
msgid "An error occurred while talking to the Docker server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/macros.html:129
|
#: mailu/ui/templates/macros.html:128
|
||||||
msgid "copy to clipboard"
|
msgid "copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -354,48 +424,48 @@ msgstr ""
|
|||||||
msgid "My account"
|
msgid "My account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:19 mailu/ui/templates/user/list.html:37
|
#: mailu/ui/templates/sidebar.html:19 mailu/ui/templates/user/list.html:36
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:31 mailu/ui/templates/user/list.html:38
|
#: mailu/ui/templates/sidebar.html:31 mailu/ui/templates/user/list.html:37
|
||||||
msgid "Auto-reply"
|
msgid "Auto-reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:4 mailu/ui/templates/sidebar.html:37
|
#: mailu/ui/templates/fetch/list.html:4 mailu/ui/templates/sidebar.html:38
|
||||||
#: mailu/ui/templates/user/list.html:39
|
#: mailu/ui/templates/user/list.html:39
|
||||||
msgid "Fetched accounts"
|
msgid "Fetched accounts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:43 mailu/ui/templates/token/list.html:4
|
#: mailu/ui/templates/sidebar.html:45 mailu/ui/templates/token/list.html:4
|
||||||
msgid "Authentication tokens"
|
msgid "Authentication tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:56
|
#: mailu/ui/templates/sidebar.html:58
|
||||||
msgid "Administration"
|
msgid "Administration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:62
|
#: mailu/ui/templates/sidebar.html:64
|
||||||
msgid "Announcement"
|
msgid "Announcement"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:68
|
#: mailu/ui/templates/sidebar.html:70
|
||||||
msgid "Administrators"
|
msgid "Administrators"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:74
|
#: mailu/ui/templates/sidebar.html:76
|
||||||
msgid "Relayed domains"
|
msgid "Relayed domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:88
|
#: mailu/ui/templates/sidebar.html:90
|
||||||
msgid "Mail domains"
|
msgid "Mail domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:99
|
#: mailu/ui/templates/sidebar.html:101
|
||||||
msgid "Webmail"
|
msgid "Webmail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/sidebar.html:135
|
#: mailu/ui/templates/sidebar.html:137
|
||||||
msgid "Sign out"
|
msgid "Sign out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -429,12 +499,18 @@ msgstr ""
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:32
|
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:31
|
||||||
#: mailu/ui/templates/alternative/list.html:29
|
#: mailu/ui/templates/domain/list.html:35 mailu/ui/templates/fetch/list.html:35
|
||||||
#: mailu/ui/templates/domain/list.html:34 mailu/ui/templates/fetch/list.html:34
|
|
||||||
#: mailu/ui/templates/manager/list.html:27
|
#: mailu/ui/templates/manager/list.html:27
|
||||||
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:30
|
#: mailu/ui/templates/relay/list.html:29 mailu/ui/templates/user/list.html:33
|
||||||
#: mailu/ui/templates/user/list.html:34
|
msgid "Edit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/admin/list.html:26 mailu/ui/templates/alias/list.html:32
|
||||||
|
#: mailu/ui/templates/alternative/list.html:29
|
||||||
|
#: mailu/ui/templates/domain/list.html:36 mailu/ui/templates/fetch/list.html:36
|
||||||
|
#: mailu/ui/templates/manager/list.html:28
|
||||||
|
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:31
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -456,26 +532,20 @@ msgstr ""
|
|||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:23
|
#: mailu/ui/templates/alias/list.html:23
|
||||||
#: mailu/ui/templates/alternative/list.html:21
|
#: mailu/ui/templates/alternative/list.html:21
|
||||||
#: mailu/ui/templates/domain/list.html:23 mailu/ui/templates/fetch/list.html:25
|
#: mailu/ui/templates/domain/list.html:25 mailu/ui/templates/fetch/list.html:27
|
||||||
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:22
|
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:23
|
||||||
#: mailu/ui/templates/user/list.html:25
|
#: mailu/ui/templates/user/list.html:25
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:24
|
#: mailu/ui/templates/alias/list.html:24
|
||||||
#: mailu/ui/templates/alternative/list.html:22
|
#: mailu/ui/templates/alternative/list.html:22
|
||||||
#: mailu/ui/templates/domain/list.html:24 mailu/ui/templates/fetch/list.html:26
|
#: mailu/ui/templates/domain/list.html:26 mailu/ui/templates/fetch/list.html:28
|
||||||
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:23
|
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:24
|
||||||
#: mailu/ui/templates/user/list.html:26
|
#: mailu/ui/templates/user/list.html:26
|
||||||
msgid "Last edit"
|
msgid "Last edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/alias/list.html:31 mailu/ui/templates/domain/list.html:33
|
|
||||||
#: mailu/ui/templates/fetch/list.html:33 mailu/ui/templates/relay/list.html:29
|
|
||||||
#: mailu/ui/templates/user/list.html:33
|
|
||||||
msgid "Edit"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mailu/ui/templates/alternative/create.html:4
|
#: mailu/ui/templates/alternative/create.html:4
|
||||||
msgid "Create alternative domain"
|
msgid "Create alternative domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -509,6 +579,10 @@ msgstr ""
|
|||||||
msgid "Generate keys"
|
msgid "Generate keys"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/details.html:19
|
||||||
|
msgid "Download zonefile"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:30
|
#: mailu/ui/templates/domain/details.html:30
|
||||||
msgid "DNS MX entry"
|
msgid "DNS MX entry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -518,22 +592,18 @@ msgid "DNS SPF entries"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:40
|
#: mailu/ui/templates/domain/details.html:40
|
||||||
msgid "DKIM public key"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:44
|
|
||||||
msgid "DNS DKIM entry"
|
msgid "DNS DKIM entry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:48
|
#: mailu/ui/templates/domain/details.html:44
|
||||||
msgid "DNS DMARC entry"
|
msgid "DNS DMARC entry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:58
|
#: mailu/ui/templates/domain/details.html:53
|
||||||
msgid "DNS TLSA entry"
|
msgid "DNS TLSA entry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/details.html:63
|
#: mailu/ui/templates/domain/details.html:58
|
||||||
msgid "DNS client auto-configuration entries"
|
msgid "DNS client auto-configuration entries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -557,26 +627,36 @@ msgstr ""
|
|||||||
msgid "Alias count"
|
msgid "Alias count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:31
|
#: mailu/ui/templates/domain/list.html:33
|
||||||
msgid "Details"
|
msgid "Details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:38
|
#: mailu/ui/templates/domain/list.html:40
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:39
|
#: mailu/ui/templates/domain/list.html:41
|
||||||
msgid "Aliases"
|
msgid "Aliases"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:40
|
#: mailu/ui/templates/domain/list.html:42
|
||||||
msgid "Managers"
|
msgid "Managers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/list.html:42
|
#: mailu/ui/templates/domain/list.html:44
|
||||||
msgid "Alternatives"
|
msgid "Alternatives"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:52 mailu/ui/templates/fetch/list.html:40
|
||||||
|
#: mailu/ui/templates/fetch/list.html:41
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/domain/list.html:52 mailu/ui/templates/fetch/list.html:40
|
||||||
|
#: mailu/ui/templates/fetch/list.html:41
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/domain/signup.html:13
|
#: mailu/ui/templates/domain/signup.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"In order to register a new domain, you must first setup the\n"
|
"In order to register a new domain, you must first setup the\n"
|
||||||
@@ -615,21 +695,21 @@ msgid "Keep emails"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:23
|
#: mailu/ui/templates/fetch/list.html:23
|
||||||
msgid "Last check"
|
msgid "Rescan emails"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:24
|
#: mailu/ui/templates/fetch/list.html:24
|
||||||
|
msgid "Folders"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/fetch/list.html:25
|
||||||
|
msgid "Last check"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/fetch/list.html:26
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:38
|
|
||||||
msgid "yes"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mailu/ui/templates/fetch/list.html:38
|
|
||||||
msgid "no"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mailu/ui/templates/manager/create.html:4
|
#: mailu/ui/templates/manager/create.html:4
|
||||||
msgid "Add a manager"
|
msgid "Add a manager"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -666,6 +746,10 @@ msgstr ""
|
|||||||
msgid "New token"
|
msgid "New token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: mailu/ui/templates/token/list.html:20
|
||||||
|
msgid "ID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/user/create.html:4
|
#: mailu/ui/templates/user/create.html:4
|
||||||
msgid "New user"
|
msgid "New user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -674,7 +758,7 @@ msgstr ""
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/user/create.html:23
|
#: mailu/ui/templates/user/create.html:24
|
||||||
msgid "Features and quotas"
|
msgid "Features and quotas"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -714,11 +798,11 @@ msgstr ""
|
|||||||
msgid "pick a domain for the new account"
|
msgid "pick a domain for the new account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/user/signup_domain.html:14
|
#: mailu/ui/templates/user/signup_domain.html:15
|
||||||
msgid "Domain"
|
msgid "Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mailu/ui/templates/user/signup_domain.html:15
|
#: mailu/ui/templates/user/signup_domain.html:16
|
||||||
msgid "Available slots"
|
msgid "Available slots"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# base system image (intermediate)
|
# base system image (intermediate)
|
||||||
# Note when updating the alpine tag, first manually run the workflow .github/workflows/mirror.yml.
|
# Note when updating the alpine tag, first manually run the workflow .github/workflows/mirror.yml.
|
||||||
# Just run the workflow with the tag that must be synchronised.
|
# Just run the workflow with the tag that must be synchronised.
|
||||||
ARG DISTRO=ghcr.io/mailu/alpine:3.20.3
|
ARG DISTRO=ghcr.io/mailu/alpine:3.21.0
|
||||||
FROM $DISTRO as system
|
FROM $DISTRO as system
|
||||||
|
|
||||||
ENV TZ=Etc/UTC LANG=C.UTF-8
|
ENV TZ=Etc/UTC LANG=C.UTF-8
|
||||||
@@ -15,7 +15,7 @@ RUN set -euxo pipefail \
|
|||||||
; addgroup -Sg ${MAILU_GID} mailu \
|
; addgroup -Sg ${MAILU_GID} mailu \
|
||||||
; adduser -Sg ${MAILU_UID} -G mailu -h /app -g "mailu app" -s /bin/bash mailu \
|
; adduser -Sg ${MAILU_UID} -G mailu -h /app -g "mailu app" -s /bin/bash mailu \
|
||||||
; apk add --no-cache bash ca-certificates curl python3 tzdata \
|
; apk add --no-cache bash ca-certificates curl python3 tzdata \
|
||||||
; ! [[ "$(uname -m)" == x86_64 ]] \
|
; ! [[ "$(apk --print-arch)" == x86_64 ]] \
|
||||||
|| apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing hardened-malloc
|
|| apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing hardened-malloc
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
@@ -27,7 +27,7 @@ CMD /bin/bash
|
|||||||
FROM system as build
|
FROM system as build
|
||||||
|
|
||||||
ARG MAILU_DEPS=prod
|
ARG MAILU_DEPS=prod
|
||||||
ARG SNUFFLEUPAGUS_VERSION=0.10.0
|
ARG SNUFFLEUPAGUS_VERSION=0.11.0
|
||||||
|
|
||||||
ENV VIRTUAL_ENV=/app/venv
|
ENV VIRTUAL_ENV=/app/venv
|
||||||
|
|
||||||
@@ -52,10 +52,10 @@ ENV \
|
|||||||
SNUFFLEUPAGUS_URL="https://github.com/jvoisin/snuffleupagus/archive/refs/tags/v${SNUFFLEUPAGUS_VERSION}.tar.gz"
|
SNUFFLEUPAGUS_URL="https://github.com/jvoisin/snuffleupagus/archive/refs/tags/v${SNUFFLEUPAGUS_VERSION}.tar.gz"
|
||||||
|
|
||||||
RUN set -euxo pipefail \
|
RUN set -euxo pipefail \
|
||||||
; machine="$(uname -m)" \
|
; machine="$(apk --print-arch)" \
|
||||||
; deps="build-base gcc libffi-dev python3-dev" \
|
; deps="build-base gcc libffi-dev python3-dev mariadb-dev" \
|
||||||
; [[ "${machine}" != x86_64 ]] && \
|
; [[ "${machine}" != x86_64 ]] && \
|
||||||
deps="${deps} cargo git libretls-dev mariadb-connector-c-dev postgresql-dev" \
|
deps="${deps} rust cargo git libretls-dev mariadb-connector-c-dev postgresql-dev" \
|
||||||
; apk add --virtual .build-deps ${deps} \
|
; apk add --virtual .build-deps ${deps} \
|
||||||
; [[ "${machine}" == armv7* ]] && \
|
; [[ "${machine}" == armv7* ]] && \
|
||||||
mkdir -p /root/.cargo/registry/index && \
|
mkdir -p /root/.cargo/registry/index && \
|
||||||
|
|||||||
@@ -57,6 +57,11 @@ class LogFilter(object):
|
|||||||
self.stream.flush()
|
self.stream.flush()
|
||||||
|
|
||||||
def _is_compatible_with_hardened_malloc():
|
def _is_compatible_with_hardened_malloc():
|
||||||
|
with open('/proc/version', 'r') as f:
|
||||||
|
major, minor = f.readline().split()[2].split('.')[:2]
|
||||||
|
if int(major) < 6 or int(major) == 6 and int(minor) < 1:
|
||||||
|
return False
|
||||||
|
|
||||||
with open('/proc/cpuinfo', 'r') as f:
|
with open('/proc/cpuinfo', 'r') as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
for line in lines:
|
for line in lines:
|
||||||
@@ -81,9 +86,13 @@ def set_env(required_secrets=[], log_filters=[]):
|
|||||||
log.basicConfig(stream=sys.stderr, level=os.environ.get("LOG_LEVEL", 'WARNING'))
|
log.basicConfig(stream=sys.stderr, level=os.environ.get("LOG_LEVEL", 'WARNING'))
|
||||||
signal.signal(signal.SIGTERM, sigterm_handler)
|
signal.signal(signal.SIGTERM, sigterm_handler)
|
||||||
|
|
||||||
if not 'LD_PRELOAD' in os.environ and _is_compatible_with_hardened_malloc():
|
if _is_compatible_with_hardened_malloc():
|
||||||
log.warning('Your CPU has Advanced Vector Extensions available, we recommend you enable hardened-malloc earlier in the boot process by adding LD_PRELOAD=/usr/lib/libhardened_malloc.so to your mailu.env')
|
if not 'LD_PRELOAD' in os.environ and _is_compatible_with_hardened_malloc():
|
||||||
os.environ['LD_PRELOAD'] = '/usr/lib/libhardened_malloc.so'
|
log.warning('Your CPU has Advanced Vector Extensions available, we recommend you enable hardened-malloc earlier in the boot process by adding LD_PRELOAD=/usr/lib/libhardened_malloc.so to your mailu.env')
|
||||||
|
os.environ['LD_PRELOAD'] = '/usr/lib/libhardened_malloc.so'
|
||||||
|
with open('/proc/sys/vm/max_map_count', 'r') as f:
|
||||||
|
if int(f.readline()) < 1048576:
|
||||||
|
log.warning('Please consider increasing vm.max_map_count to 1048576 as per https://github.com/GrapheneOS/hardened_malloc?tab=readme-ov-file#traditional-linux-based-operating-systems')
|
||||||
|
|
||||||
""" This will set all the environment variables and retains only the secrets we need """
|
""" This will set all the environment variables and retains only the secrets we need """
|
||||||
if 'SECRET_KEY_FILE' in os.environ:
|
if 'SECRET_KEY_FILE' in os.environ:
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ gunicorn
|
|||||||
idna
|
idna
|
||||||
itsdangerous
|
itsdangerous
|
||||||
limits
|
limits
|
||||||
|
mariadb
|
||||||
marshmallow
|
marshmallow
|
||||||
marshmallow-sqlalchemy
|
marshmallow-sqlalchemy
|
||||||
mysql-connector-python
|
mysql-connector-python
|
||||||
@@ -45,6 +46,7 @@ watchdog
|
|||||||
|
|
||||||
# core/postfix
|
# core/postfix
|
||||||
postfix-mta-sts-resolver
|
postfix-mta-sts-resolver
|
||||||
|
uvloop
|
||||||
|
|
||||||
# core/oletools
|
# core/oletools
|
||||||
python-magic
|
python-magic
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ jsonschema==4.22.0
|
|||||||
jsonschema-specifications==2023.12.1
|
jsonschema-specifications==2023.12.1
|
||||||
limits==3.11.0
|
limits==3.11.0
|
||||||
Mako==1.3.3
|
Mako==1.3.3
|
||||||
|
mariadb==1.1.11
|
||||||
MarkupSafe==2.1.5
|
MarkupSafe==2.1.5
|
||||||
marshmallow==3.21.2
|
marshmallow==3.21.2
|
||||||
marshmallow-sqlalchemy==1.0.0
|
marshmallow-sqlalchemy==1.0.0
|
||||||
@@ -79,6 +80,7 @@ tabulate==0.9.0
|
|||||||
tenacity==8.2.3
|
tenacity==8.2.3
|
||||||
typing_extensions==4.11.0
|
typing_extensions==4.11.0
|
||||||
urllib3==2.2.2
|
urllib3==2.2.2
|
||||||
|
uvloop==0.21.0
|
||||||
validators==0.28.1
|
validators==0.28.1
|
||||||
visitor==0.1.3
|
visitor==0.1.3
|
||||||
vobject==0.9.7
|
vobject==0.9.7
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ ARG VERSION
|
|||||||
LABEL version=$VERSION
|
LABEL version=$VERSION
|
||||||
|
|
||||||
RUN set -euxo pipefail \
|
RUN set -euxo pipefail \
|
||||||
; apk add --no-cache certbot nginx nginx-mod-http-brotli nginx-mod-mail openssl \
|
; apk add --no-cache certbot nginx nginx-mod-http-brotli nginx-mod-mail openssl dovecot-lua dovecot-pigeonhole-plugin 'dovecot-lmtpd<2.4' dovecot-pop3d dovecot-submissiond
|
||||||
; apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main dovecot-lua dovecot-pigeonhole-plugin 'dovecot-lmtpd<2.4' dovecot-pop3d dovecot-submissiond
|
|
||||||
|
|
||||||
COPY conf/ /conf/
|
COPY conf/ /conf/
|
||||||
COPY --from=static /static/ /static/
|
COPY --from=static /static/ /static/
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ The minimum length is 3 characters.
|
|||||||
This token must be passed as request header to the API as authentication token.
|
This token must be passed as request header to the API as authentication token.
|
||||||
This is a mandatory setting for using the RESTful API.
|
This is a mandatory setting for using the RESTful API.
|
||||||
|
|
||||||
The ``CREDENTIAL_ROUNDS`` (default: 12) setting is the number of rounds used by the
|
The ``CREDENTIAL_ROUNDS`` (default: 13) setting is the number of rounds used by the
|
||||||
password hashing scheme. The number of rounds can be reduced in case faster
|
password hashing scheme. The number of rounds can be reduced in case faster
|
||||||
authentication is needed or increased when additional protection is desired.
|
authentication is needed or increased when additional protection is desired.
|
||||||
Keep in mind that this is a mitigation against offline attacks on password hashes,
|
Keep in mind that this is a mitigation against offline attacks on password hashes,
|
||||||
|
|||||||
29
docs/faq.rst
29
docs/faq.rst
@@ -986,3 +986,32 @@ Below are the steps for writing the postfix (mail) logs to a log file on the fil
|
|||||||
if [ -d /run/systemd/system ]; then
|
if [ -d /run/systemd/system ]; then
|
||||||
systemctl kill -s HUP rsyslog.service
|
systemctl kill -s HUP rsyslog.service
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
Admin container fails to connect to external MariaDB database
|
||||||
|
`````````````````````````````````````````````````````````````
|
||||||
|
|
||||||
|
If the admin container is `unable to connect to an external MariaDB database due to incompatible collation`_, you may need to change the ``SQLALCHEMY_DATABASE_URI`` setting to ensure the right connector is used.
|
||||||
|
Alternatively, you may set ``DB_APPENDIX`` accordingly. For example: ``?collation=utf8mb4_unicode_ci`` is appended as is just after the database name in case DB_TYPE and related values are set.
|
||||||
|
|
||||||
|
MariaDB has no support for utf8mb4_0900_ai_ci which is the new default since MySQL version 8.0.
|
||||||
|
|
||||||
|
.. _`unable to connect to an external MariaDB database due to incompatible collation`: https://github.com/Mailu/Mailu/issues/3449
|
||||||
|
|
||||||
|
Why is Rspamd giving me an "Illegal instruction" error ?
|
||||||
|
`````````````````````````````````````````````````````````
|
||||||
|
|
||||||
|
On Linux amd64 (x84_64), if the antispam container is crashing and gives you an ``Illegal instruction`` error, you may have a CPU that lacks support of the ``SSE4.2`` instruction set.
|
||||||
|
The more modern and FOSS ``vectorscan`` library used by rspamd superseeded the now closed source Intel ``hyperscan`` library in Alpine Linux, and since August 2024 it requires the ``SSE4.2`` instruction set to work properly.
|
||||||
|
|
||||||
|
Pre-2013 Intel Atom CPUs (Like N2800 or D425), Intel pre-Nehalem architectures and AMD pre-Bulldozer architectures do not support ``SSE4.2``.
|
||||||
|
To check if your CPU supports ``SSE4.2`` you can use this one liner command:
|
||||||
|
|
||||||
|
``if grep -q sse4_2 /proc/cpuinfo; then echo "CPU is SSE4.2 Capable"; else echo "CPU is NOT SSE4.2 capable"; fi``
|
||||||
|
|
||||||
|
A workaround to this issue is to use a x86_32 (or i686) version of rspamd, because the ``vectorscan`` library is only used on 64-bit capable systems.
|
||||||
|
Note that this may stop working in the future, as 32-bit software support is being progressively dropped.
|
||||||
|
|
||||||
|
*Issue reference:* `3713`_.
|
||||||
|
|
||||||
|
.. _`3713`: https://github.com/Mailu/Mailu/issues/3713
|
||||||
|
|||||||
188
docs/reverse.rst
188
docs/reverse.rst
@@ -7,10 +7,31 @@ other Web services are available on other FQDNs served from the same IP address.
|
|||||||
In such a configuration, one would usually run a front-end reverse proxy to serve all
|
In such a configuration, one would usually run a front-end reverse proxy to serve all
|
||||||
Web contents based on criteria like the requested hostname (virtual hosts).
|
Web contents based on criteria like the requested hostname (virtual hosts).
|
||||||
|
|
||||||
|
The Mailu team recommends to use Traefik as reverse proxy. This program is solely designed
|
||||||
|
to act as reverse proxy. It is easy to configure and offers a streamlined experienced when
|
||||||
|
used with other docker containers on the same host.
|
||||||
|
|
||||||
|
When using a reverse proxy, Mailu should still be used for requesting certificates.
|
||||||
|
This prevents duplicate certificates.
|
||||||
|
Other reasons are:
|
||||||
|
|
||||||
|
- Mailu controls the ciphers and keys used for certificates (Mailu has both RSA and ECDSA certs)
|
||||||
|
- Mailu cerbot client is configured to prevent hitting ratelimits of the CA
|
||||||
|
- Due to usage of proxy protocol it is less likely that Mailu becomes an open relay due to misconfiguration of special headers.
|
||||||
|
- No special scripting is required to copy over certs from the proxy to Mailu
|
||||||
|
|
||||||
|
When using Mailu with Traefik as reverse proxy. Traefik is configured to use proxy protocol for all ports, but port 80.
|
||||||
|
Port 80 is configured to let through the letsencrypt HTTP challenges for Mailu.
|
||||||
|
This means that if Traefik must request certificates for other services than Mailu, Traefik should use the TLS (TLS-ALPN-01)
|
||||||
|
challenge method. The HTTP challenge (HTTP-01) cannot be used since this is already used by Mailu.
|
||||||
|
|
||||||
.. _traefik_proxy:
|
.. _traefik_proxy:
|
||||||
|
|
||||||
Traefik as reverse proxy
|
Traefik as reverse proxy (same host)
|
||||||
------------------------
|
------------------------------------
|
||||||
|
|
||||||
|
This example is for when Traefik (reverse proxy) runs on the same host as Mailu.
|
||||||
|
It makes use of the docker configuration method for Traefik.
|
||||||
|
|
||||||
In your docker-compose.yml, remove the `ports` section of the `front` container
|
In your docker-compose.yml, remove the `ports` section of the `front` container
|
||||||
and add a section like follows:
|
and add a section like follows:
|
||||||
@@ -102,7 +123,7 @@ and then add the following to the front section:
|
|||||||
|
|
||||||
in mailu.env:
|
in mailu.env:
|
||||||
|
|
||||||
.. code-block:: docker
|
.. code-block:: bash
|
||||||
|
|
||||||
REAL_IP_FROM=192.168.203.0/24
|
REAL_IP_FROM=192.168.203.0/24
|
||||||
PROXY_PROTOCOL=25,443,465,993,995,4190
|
PROXY_PROTOCOL=25,443,465,993,995,4190
|
||||||
@@ -111,3 +132,164 @@ in mailu.env:
|
|||||||
WEBROOT_REDIRECT=/sso/login
|
WEBROOT_REDIRECT=/sso/login
|
||||||
|
|
||||||
Using the above configuration, Traefik will proxy all the traffic related to Mailu's FQDNs without requiring duplicate certificates.
|
Using the above configuration, Traefik will proxy all the traffic related to Mailu's FQDNs without requiring duplicate certificates.
|
||||||
|
|
||||||
|
|
||||||
|
Traefik as reverse proxy (different host)
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
This example is for when Traefik (reverse proxy) runs on a different server than the Mailu server.
|
||||||
|
This example makes use of the File configuration method (File Provider) of Traefik.
|
||||||
|
It makes use of a single static configuration file and one or more dynamic configuration files.
|
||||||
|
|
||||||
|
This example uses V3 of Traefik. V2 and V3 of Traefik have some differences in the configuration method.
|
||||||
|
|
||||||
|
The contents for the static configuration file. The static configuration file must be provided as argument to Traefik.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
#STATIC CONFIGURATION FILE
|
||||||
|
#Below value for 'directory' is the location where the dynamic configuration files reside:
|
||||||
|
#When a change is made in this folder, Traefik automatically loads or reloads it.
|
||||||
|
providers:
|
||||||
|
file:
|
||||||
|
directory: "/etc/traefik/conf"
|
||||||
|
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: :80
|
||||||
|
websecure:
|
||||||
|
address: :443
|
||||||
|
mailu-smtp:
|
||||||
|
address: :25
|
||||||
|
mailu-imaps:
|
||||||
|
address: :993
|
||||||
|
mailu-pop3s:
|
||||||
|
address: :995
|
||||||
|
mailu-submissions:
|
||||||
|
address: :465
|
||||||
|
mailu-sieve:
|
||||||
|
address: :4190
|
||||||
|
|
||||||
|
#Optional, enables access logging at:
|
||||||
|
accessLog:
|
||||||
|
filePath: "/var/log/traefik_access.log"
|
||||||
|
|
||||||
|
#Optional, enables normal logging at:
|
||||||
|
log:
|
||||||
|
level: INFO
|
||||||
|
filePath: "/var/log/traefik.log"
|
||||||
|
|
||||||
|
|
||||||
|
This is the contents for the dynamic configuration. You can use any filename you want.
|
||||||
|
The extension must end with .yml and the file must be placed in the configured directory for
|
||||||
|
dynamic configuration files.
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
mailu-web:
|
||||||
|
entryPoints:
|
||||||
|
- web
|
||||||
|
rule: "Host(`mail.example.com) || PathPrefix(`/.well-known/acme-challenge/`))"
|
||||||
|
service: "mailu-web"
|
||||||
|
services:
|
||||||
|
mailu-web:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://mailu-server"
|
||||||
|
|
||||||
|
tcp:
|
||||||
|
routers:
|
||||||
|
mailu-websecure:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
# Add other FQDN's here
|
||||||
|
rule: "HostSNI(`mail.example.com`) || HostSNI(`autoconfig.example.com`) || HostSNI(`mta-sts.example.com`)"
|
||||||
|
service: "mailu-websecure"
|
||||||
|
tls:
|
||||||
|
passthrough: true
|
||||||
|
mailu-submissions:
|
||||||
|
entryPoints:
|
||||||
|
- mailu-submissions
|
||||||
|
rule: "HostSNI(`*`)"
|
||||||
|
service: "mailu-submissions"
|
||||||
|
mailu-imaps:
|
||||||
|
entryPoints:
|
||||||
|
- mailu-imaps
|
||||||
|
rule: "HostSNI(`*`)"
|
||||||
|
service: "mailu-imaps"
|
||||||
|
tls:
|
||||||
|
passthrough: true
|
||||||
|
mailu-pop3s:
|
||||||
|
entryPoints:
|
||||||
|
- mailu-pop3s
|
||||||
|
rule: "HostSNI(`*`)"
|
||||||
|
service: "mailu-pop3s"
|
||||||
|
tls:
|
||||||
|
passthrough: true
|
||||||
|
mailu-submissions:
|
||||||
|
entryPoints:
|
||||||
|
- mailu-submissions
|
||||||
|
rule: "HostSNI(`*`)"
|
||||||
|
service: "mailu-submissions"
|
||||||
|
tls:
|
||||||
|
passthrough: true
|
||||||
|
mailu-sieve:
|
||||||
|
entryPoints:
|
||||||
|
- mailu-sieve
|
||||||
|
rule: "HostSNI(`*`)"
|
||||||
|
service: "mailu-sieve"
|
||||||
|
services:
|
||||||
|
mailu-websecure:
|
||||||
|
loadBalancer:
|
||||||
|
proxyProtocol:
|
||||||
|
version: 2
|
||||||
|
servers:
|
||||||
|
- address: "mailu-server:443"
|
||||||
|
mailu-smtp:
|
||||||
|
loadBalancer:
|
||||||
|
proxyProtocol:
|
||||||
|
version: 2
|
||||||
|
servers:
|
||||||
|
- address: "mailu-server:25"
|
||||||
|
mailu-submissions:
|
||||||
|
loadBalancer:
|
||||||
|
proxyProtocol:
|
||||||
|
version: 2
|
||||||
|
servers:
|
||||||
|
- address: "mailu-server:465"
|
||||||
|
mailu-imaps:
|
||||||
|
loadBalancer:
|
||||||
|
proxyProtocol:
|
||||||
|
version: 2
|
||||||
|
servers:
|
||||||
|
- address: "mailu-server:993"
|
||||||
|
mailu-pop3s:
|
||||||
|
loadBalancer:
|
||||||
|
proxyProtocol:
|
||||||
|
version: 2
|
||||||
|
servers:
|
||||||
|
- address: "mailu-server:995"
|
||||||
|
mailu-sieve:
|
||||||
|
loadBalancer:
|
||||||
|
proxyProtocol:
|
||||||
|
version: 2
|
||||||
|
servers:
|
||||||
|
- address: "mailu-server:4190"
|
||||||
|
|
||||||
|
|
||||||
|
In the mailu.env file add the following:
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
#Add the IP address of the Traefik server as value for REAL_IP_FROM
|
||||||
|
REAL_IP_FROM=192.168.2.300/32
|
||||||
|
PROXY_PROTOCOL=25,443,465,993,995,4190
|
||||||
|
TLS_FLAVOR=letsencrypt
|
||||||
|
WEBROOT_REDIRECT=/sso/login
|
||||||
|
|
||||||
|
|
||||||
|
Using the above configuration, Traefik will proxy all the traffic related to Mailu's FQDNs without requiring duplicate certificates.
|
||||||
@@ -22,6 +22,9 @@ linux/arm64v8 or linux/armv7 hardware, so it
|
|||||||
should run on pretty much any cloud server as long as enough power is
|
should run on pretty much any cloud server as long as enough power is
|
||||||
provided.
|
provided.
|
||||||
|
|
||||||
|
On x86_64, check that your processor supports the ``SSE4.2`` instruction set.
|
||||||
|
For example, pre-2013 Intel Atom CPUs lacks ``SSE4.2`` support. See :ref:`faq`.
|
||||||
|
|
||||||
You should also have at least a DNS hostname and a DNS name for receiving
|
You should also have at least a DNS hostname and a DNS name for receiving
|
||||||
emails. Some instructions are provided on the matter in the article
|
emails. Some instructions are provided on the matter in the article
|
||||||
:ref:`dns_setup`.
|
:ref:`dns_setup`.
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ services:
|
|||||||
# Optional services
|
# Optional services
|
||||||
{% if antivirus_enabled %}
|
{% if antivirus_enabled %}
|
||||||
antivirus:
|
antivirus:
|
||||||
image: clamav/clamav-debian:1.2.3-45
|
image: clamav/clamav-debian:1.4
|
||||||
restart: always
|
restart: always
|
||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
@@ -226,13 +226,7 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- clamav
|
- clamav
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ root }}/filter/clamav:/var/lib/clamav"
|
- "{{ root }}/clamav:/var/lib/clamav"
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "kill -0 `cat /tmp/clamd.pid` && kill -0 `cat /tmp/freshclam.pid`"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 3
|
|
||||||
start_period: 10s
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if webdav_enabled %}
|
{% if webdav_enabled %}
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ IP addresses in order to expose its public services. You must at least set up
|
|||||||
an IPv4 or an IPv6 address if you wish to access Mailu.</p>
|
an IPv4 or an IPv6 address if you wish to access Mailu.</p>
|
||||||
|
|
||||||
<p><span class="label label-warning">Warning</span> You must use specific addresses, please
|
<p><span class="label label-warning">Warning</span> You must use specific addresses, please
|
||||||
avoid generic all-interfaces addresses like <code>0.0.0.0</code> or <code>::</code>.
|
avoid generic all-interfaces addresses like <code>0.0.0.0</code> or <code>::</code>. If you still want to use generic addresses you <b>MUST</b> disable <code>userland-proxy</code>; failing to do so will turn your Mailu installation into an open-relay.
|
||||||
<a href="https://mailu.io/{{ version }}/compose/setup.html#bind-address">How to find these addresses.</a></p>
|
<a href="https://mailu.io/{{ version }}/compose/setup.html#bind-address">How to find these addresses.</a> <a href="https://mailu.io/{{ version }}/faq.html#how-to-make-ipv6-work">How to disable userland-proxy.</a></p>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>IPv4 listen address</label>
|
<label>IPv4 listen address</label>
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
|
set -e
|
||||||
echo "Users tests ..."
|
echo "Users tests ..."
|
||||||
# Should fail, admin is already auto-created
|
# Should fail, admin is already auto-created
|
||||||
docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu admin admin mailu.io 'FooBar' && exit 1
|
docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu admin admin mailu.io 'FooBar' && exit 1
|
||||||
echo "The above error was intended!"
|
echo "The above error was intended!"
|
||||||
# Should not fail, but does nothing; ifmissing mode
|
# Should not fail, but does nothing; ifmissing mode
|
||||||
docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu admin admin mailu.io 'FooBar' --mode=ifmissing || exit 1
|
docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu admin admin mailu.io 'FooBar' --mode=ifmissing
|
||||||
# Should not fail and update the password; update mode
|
# Should not fail and update the password; update mode
|
||||||
docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu admin admin mailu.io 'password' --mode=update || exit 1
|
docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu admin admin mailu.io 'password' --mode=update || exit 1
|
||||||
docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu user user mailu.io 'password' || exit 1
|
docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu user user mailu.io 'password' || exit 1
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
python3 tests/email_test.py message-core
|
set -e
|
||||||
|
python3 tests/email_test.py message-core
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
set -e
|
||||||
cat << EOF | docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1
|
cat << EOF | docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1
|
||||||
users:
|
users:
|
||||||
- localpart: forwardinguser
|
- localpart: forwardinguser
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
set -e
|
||||||
|
|
||||||
cat << EOF | docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1
|
cat << EOF | docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1
|
||||||
aliases:
|
aliases:
|
||||||
- localpart: alltheusers
|
- localpart: alltheusers
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
set -e
|
||||||
cat << EOF | docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1
|
cat << EOF | docker compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1
|
||||||
users:
|
users:
|
||||||
- localpart: replyuser
|
- localpart: replyuser
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- clamav
|
- clamav
|
||||||
volumes:
|
volumes:
|
||||||
- "/mailu/filter/clamav:/var/lib/clamav"
|
- "/mailu/clamav:/var/lib/clamav"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "kill -0 `cat /tmp/clamd.pid` && kill -0 `cat /tmp/freshclam.pid`"]
|
test: ["CMD-SHELL", "kill -0 `cat /tmp/clamd.pid` && kill -0 `cat /tmp/freshclam.pid`"]
|
||||||
interval: 10s
|
interval: 10s
|
||||||
|
|||||||
1
towncrier/newsfragments/1753.feature
Normal file
1
towncrier/newsfragments/1753.feature
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Bump CREDENTIAL_ROUNDS to 13. If your system is too slow you may want to revert back to 12.
|
||||||
1
towncrier/newsfragments/3350.feature
Normal file
1
towncrier/newsfragments/3350.feature
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Add DKIM support for alternative domains: alternative domains use the same DKIM key as the main domain.
|
||||||
1
towncrier/newsfragments/3374.bugfix
Normal file
1
towncrier/newsfragments/3374.bugfix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Fix a bug preventing user "forward_destination" to be updated with a PATCH request
|
||||||
1
towncrier/newsfragments/3425.misc
Normal file
1
towncrier/newsfragments/3425.misc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Warn if passwords set from the UI contain leading or trailing whitespaces (see #3425)
|
||||||
1
towncrier/newsfragments/3440.doc
Normal file
1
towncrier/newsfragments/3440.doc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
The reverse proxy documentation page is updated with the scenario where Traefik (the reverse proxy) resides on a different server.
|
||||||
1
towncrier/newsfragments/3449.bugfix
Normal file
1
towncrier/newsfragments/3449.bugfix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Add the mariadb connector, as per #3449
|
||||||
1
towncrier/newsfragments/3587.bugfix
Normal file
1
towncrier/newsfragments/3587.bugfix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Ensure the tests actually work
|
||||||
1
towncrier/newsfragments/3647.misc
Normal file
1
towncrier/newsfragments/3647.misc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Upgrade to snuffleupagus 0.11, filter php:// wrapper types
|
||||||
1
towncrier/newsfragments/3680.misc
Normal file
1
towncrier/newsfragments/3680.misc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Modern docker versions enable the userland-proxy by default, clarify in setup that unless the bindto address is specific that will create problems.
|
||||||
1
towncrier/newsfragments/3721.bugfix
Normal file
1
towncrier/newsfragments/3721.bugfix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
autoconfig shouldn't set useGlobalPreferredServer
|
||||||
1
towncrier/newsfragments/3729.misc
Normal file
1
towncrier/newsfragments/3729.misc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Add optional DB_APPENDIX configuration parameter which is appended as is to the postgresql or mysql URI
|
||||||
7
towncrier/newsfragments/3735.bugfix
Normal file
7
towncrier/newsfragments/3735.bugfix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Place ClamAV files under `mailu/clamav` instead of `mailu/filter/clamav` such that they can be modified by ClamAV
|
||||||
|
itself.
|
||||||
|
|
||||||
|
Users will want to change their `docker-compose.yml` accordingly and remove `mailu/filter/clamav` after upgrade.
|
||||||
|
|
||||||
|
Also ClamAV image tag increased to `1.4` instead of specific (older) release, users will need to update it manually as
|
||||||
|
well and keep it updated over time.
|
||||||
1
towncrier/newsfragments/3753.misc
Normal file
1
towncrier/newsfragments/3753.misc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Update roundcube to 1.6.10
|
||||||
1
towncrier/newsfragments/3758.bugfix
Normal file
1
towncrier/newsfragments/3758.bugfix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
domain name of an IDN domain in the DKIM signature needs to follow RFC6376; puny encoding the domain name when rspamd accesses the vault;
|
||||||
1
towncrier/newsfragments/3836.misc
Normal file
1
towncrier/newsfragments/3836.misc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Remove the healthcheck section of clamav: use upstream's
|
||||||
@@ -28,8 +28,8 @@ RUN set -euxo pipefail \
|
|||||||
; mkdir -p /run/nginx /conf
|
; mkdir -p /run/nginx /conf
|
||||||
|
|
||||||
# roundcube
|
# roundcube
|
||||||
ENV ROUNDCUBE_URL=https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz
|
ENV ROUNDCUBE_URL https://github.com/roundcube/roundcubemail/releases/download/1.6.10/roundcubemail-1.6.10-complete.tar.gz
|
||||||
ENV CARDDAV_URL=https://github.com/mstilkerich/rcmcarddav/releases/download/v5.1.0/carddav-v5.1.0.tar.gz
|
ENV CARDDAV_URL https://github.com/mstilkerich/rcmcarddav/releases/download/v5.1.0/carddav-v5.1.0.tar.gz
|
||||||
|
|
||||||
RUN set -euxo pipefail \
|
RUN set -euxo pipefail \
|
||||||
; cd /var/www \
|
; cd /var/www \
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ sp.readonly_exec.enable();
|
|||||||
# PHP has a lot of wrappers, most of them aren't usually useful, you should
|
# PHP has a lot of wrappers, most of them aren't usually useful, you should
|
||||||
# only enable the ones you're using.
|
# only enable the ones you're using.
|
||||||
sp.wrappers_whitelist.list("file,php,phar,mailsosubstreams,mailsoliteral,mailsotempfile,mailsobinary");
|
sp.wrappers_whitelist.list("file,php,phar,mailsosubstreams,mailsoliteral,mailsotempfile,mailsobinary");
|
||||||
|
# The "php" wrapper can be further filtered: we probably don't want 'filter' nor 'fd'
|
||||||
|
sp.wrappers_whitelist.php_list("stdout,stdin,stderr,input,output,memory,temp");
|
||||||
|
|
||||||
# Prevent sloppy comparisons.
|
# Prevent sloppy comparisons.
|
||||||
sp.sloppy_comparison.enable();
|
sp.sloppy_comparison.enable();
|
||||||
|
|||||||
Reference in New Issue
Block a user