mirror of
https://github.com/optim-enterprises-bv/Mailu-OIDC.git
synced 2025-10-28 16:52:31 +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',
|
||||
entry: {
|
||||
app: {
|
||||
import: ['./assets/app.css', './assets/mailu.png', './assets/app.js'],
|
||||
import: ['./assets/app.css', './assets/app.js'],
|
||||
dependOn: 'vendor',
|
||||
},
|
||||
vendor: './assets/vendor.js',
|
||||
logo: './assets/mailu.png',
|
||||
},
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'static/'),
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
[python: **.py]
|
||||
[jinja2: **/templates/**.html]
|
||||
extensions=jinja2.ext.autoescape,jinja2.ext.with_
|
||||
[jinja2: **/templates/**.html]
|
||||
@@ -242,8 +242,7 @@ class User(Resource):
|
||||
if 'forward_enabled' in data:
|
||||
user_found.forward_enabled = data['forward_enabled']
|
||||
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:
|
||||
user_found.forward_keep = data['forward_keep']
|
||||
if 'reply_enabled' in data:
|
||||
|
||||
@@ -25,6 +25,7 @@ DEFAULT_CONFIG = {
|
||||
'DB_PW': None,
|
||||
'DB_HOST': 'database',
|
||||
'DB_NAME': 'mailu',
|
||||
'DB_APPENDIX': '',
|
||||
'SQLITE_DATABASE_FILE': 'data/main.db',
|
||||
'SQLALCHEMY_DATABASE_URI': 'sqlite:////data/main.db',
|
||||
'SQLALCHEMY_DATABASE_URI_ROUNDCUBE': 'sqlite:////data/roundcube.db',
|
||||
@@ -95,7 +96,7 @@ DEFAULT_CONFIG = {
|
||||
'SESSION_TIMEOUT': 3600,
|
||||
'PERMANENT_SESSION_LIFETIME': 30*24*3600,
|
||||
'SESSION_COOKIE_SECURE': None,
|
||||
'CREDENTIAL_ROUNDS': 12,
|
||||
'CREDENTIAL_ROUNDS': 13,
|
||||
'TLS_PERMISSIVE': True,
|
||||
'TZ': 'Etc/UTC',
|
||||
'DEFAULT_SPAM_THRESHOLD': 80,
|
||||
@@ -114,8 +115,8 @@ class ConfigManager:
|
||||
|
||||
DB_TEMPLATES = {
|
||||
'sqlite': 'sqlite:////{SQLITE_DATABASE_FILE}',
|
||||
'postgresql': 'postgresql://{DB_USER}:{DB_PW}@{DB_HOST}/{DB_NAME}',
|
||||
'mysql': 'mysql+mysqlconnector://{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}{DB_APPENDIX}',
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
|
||||
@@ -106,6 +106,7 @@ def handle_authentication(headers):
|
||||
ip = urllib.parse.unquote(headers["Client-Ip"])
|
||||
except:
|
||||
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:
|
||||
try:
|
||||
user = models.User.query.get(user_email) if '@' in user_email else None
|
||||
|
||||
@@ -31,7 +31,7 @@ def autoconfig_mozilla():
|
||||
<username>%EMAILADDRESS%</username>
|
||||
<authentication>password-cleartext</authentication>
|
||||
<addThisServer>true</addThisServer>
|
||||
<useGlobalPreferredServer>true</useGlobalPreferredServer>
|
||||
<useGlobalPreferredServer>false</useGlobalPreferredServer>
|
||||
</outgoingServer>
|
||||
|
||||
<documentation url="https://{hostname}/admin/client">
|
||||
|
||||
@@ -2,6 +2,7 @@ from mailu import models
|
||||
from mailu.internal import internal
|
||||
|
||||
import flask
|
||||
import idna
|
||||
|
||||
def vault_error(*messages, status=404):
|
||||
return flask.make_response(flask.jsonify({'errors':messages}), status)
|
||||
@@ -19,7 +20,16 @@ def rspamd_dkim_key(domain_name):
|
||||
if key := domain.dkim_key:
|
||||
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'),
|
||||
'selector': flask.current_app.config.get('DKIM_SELECTOR', 'dkim'),
|
||||
}
|
||||
|
||||
@@ -358,6 +358,54 @@ class Alternative(Base):
|
||||
domain = db.relationship(Domain,
|
||||
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):
|
||||
""" Relayed mail domain.
|
||||
|
||||
@@ -1148,7 +1148,7 @@ class TokenSchema(BaseSchema):
|
||||
sibling = True
|
||||
|
||||
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
|
||||
@@ -1193,7 +1193,7 @@ class UserSchema(BaseSchema):
|
||||
fetches = fields.Nested(FetchSchema, many=True)
|
||||
|
||||
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
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: translate@s474n.com\n"
|
||||
"POT-Creation-Date: 2022-05-22 18:47+0200\n"
|
||||
"PO-Revision-Date: 2023-02-21 16:14+0100\n"
|
||||
"Last-Translator: S474N <translate@s474n.com>\n"
|
||||
"Project-Id-Version: Mailu 2024.06\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-06-20 12:30+0000\n"
|
||||
"PO-Revision-Date: 2024-09-10 17:16+0200\n"
|
||||
"Last-Translator: kunago <miris@kunago.com>\n"
|
||||
"Language-Team: Czech\n"
|
||||
"Language: cs_CZ\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,23 +17,39 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);\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"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:80 mailu/ui/forms.py:93
|
||||
#: mailu/ui/forms.py:112 mailu/ui/forms.py:166
|
||||
#: mailu/ui/templates/client.html:32 mailu/ui/templates/client.html:57
|
||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:92 mailu/ui/forms.py:108
|
||||
#: mailu/ui/forms.py:128 mailu/ui/forms.py:135 mailu/ui/forms.py:197
|
||||
#: mailu/ui/templates/client.html:31 mailu/ui/templates/client.html:56
|
||||
msgid "Password"
|
||||
msgstr "Heslo"
|
||||
|
||||
#: mailu/sso/forms.py:10 mailu/sso/forms.py:11 mailu/sso/templates/login.html:4
|
||||
#: mailu/ui/templates/sidebar.html:142
|
||||
#: mailu/sso/forms.py:11 mailu/sso/forms.py:12 mailu/sso/templates/login.html:4
|
||||
#: mailu/sso/templates/sidebar_sso.html:42 mailu/ui/templates/sidebar.html:144
|
||||
msgid "Sign in"
|
||||
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
|
||||
msgid "Admin page for"
|
||||
msgstr "Admin stránka pro"
|
||||
@@ -46,255 +62,301 @@ msgstr "přepnout postranní panel"
|
||||
msgid "change language"
|
||||
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"
|
||||
msgstr "Jít"
|
||||
msgstr "Přejít"
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
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"
|
||||
msgstr "Pomoc"
|
||||
|
||||
#: 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"
|
||||
msgstr "Registrovat doménu"
|
||||
|
||||
#: mailu/sso/templates/sidebar_sso.html:49 mailu/ui/forms.py:95
|
||||
#: mailu/ui/templates/sidebar.html:149 mailu/ui/templates/user/signup.html:4
|
||||
#: mailu/sso/templates/sidebar_sso.html:55 mailu/ui/forms.py:111
|
||||
#: mailu/ui/templates/sidebar.html:151 mailu/ui/templates/user/signup.html:4
|
||||
#: mailu/ui/templates/user/signup_domain.html:4
|
||||
msgid "Sign up"
|
||||
msgstr "Registrovat se"
|
||||
|
||||
#: mailu/ui/forms.py:33 mailu/ui/forms.py:36
|
||||
msgid "Invalid email address."
|
||||
msgstr "Špatná mailová adresa."
|
||||
#: mailu/sso/views/base.py:48
|
||||
msgid "Too many attempts from your IP (rate-limit)"
|
||||
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"
|
||||
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/list.html:19 mailu/ui/templates/relay/list.html:18
|
||||
msgid "Domain name"
|
||||
msgstr "Název domény"
|
||||
|
||||
#: mailu/ui/forms.py:49
|
||||
#: mailu/ui/forms.py:60
|
||||
msgid "Maximum user count"
|
||||
msgstr "Maximální počet uživatelů"
|
||||
|
||||
#: mailu/ui/forms.py:50
|
||||
#: mailu/ui/forms.py:61
|
||||
msgid "Maximum alias count"
|
||||
msgstr "Maximální počet aliasů"
|
||||
|
||||
#: mailu/ui/forms.py:51
|
||||
#: mailu/ui/forms.py:62
|
||||
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"
|
||||
msgstr "Povolit registraci"
|
||||
|
||||
#: mailu/ui/forms.py:53 mailu/ui/forms.py:74 mailu/ui/forms.py:86
|
||||
#: mailu/ui/forms.py:132 mailu/ui/forms.py:144
|
||||
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:22
|
||||
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:20
|
||||
#: mailu/ui/forms.py:64 mailu/ui/forms.py:86 mailu/ui/forms.py:100
|
||||
#: mailu/ui/forms.py:155 mailu/ui/forms.py:175
|
||||
#: 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:21
|
||||
#: mailu/ui/templates/user/list.html:24
|
||||
msgid "Comment"
|
||||
msgstr "Komentář"
|
||||
|
||||
#: mailu/ui/forms.py:54 mailu/ui/forms.py:68 mailu/ui/forms.py:75
|
||||
#: mailu/ui/forms.py:88 mailu/ui/forms.py:136 mailu/ui/forms.py:145
|
||||
#: mailu/ui/forms.py:65 mailu/ui/forms.py:80 mailu/ui/forms.py:87
|
||||
#: mailu/ui/forms.py:103 mailu/ui/forms.py:159 mailu/ui/forms.py:176
|
||||
msgid "Save"
|
||||
msgstr "Uložit"
|
||||
|
||||
#: mailu/ui/forms.py:59
|
||||
#: mailu/ui/forms.py:70
|
||||
msgid "Initial admin"
|
||||
msgstr "Hlavní admin"
|
||||
msgstr "Výchozí admin"
|
||||
|
||||
#: mailu/ui/forms.py:60
|
||||
#: mailu/ui/forms.py:71
|
||||
msgid "Admin password"
|
||||
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"
|
||||
msgstr "Potvrdit heslo"
|
||||
|
||||
#: mailu/ui/forms.py:63
|
||||
#: mailu/ui/forms.py:75
|
||||
msgid "Create"
|
||||
msgstr "Vytvořit"
|
||||
|
||||
#: mailu/ui/forms.py:67
|
||||
#: mailu/ui/forms.py:79
|
||||
msgid "Alternative name"
|
||||
msgstr "Alternativní jméno"
|
||||
|
||||
#: mailu/ui/forms.py:72
|
||||
#: mailu/ui/forms.py:84
|
||||
msgid "Relayed domain name"
|
||||
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"
|
||||
msgstr "Vzdálený hostitel"
|
||||
|
||||
#: mailu/ui/forms.py:82 mailu/ui/templates/user/list.html:23
|
||||
#: mailu/ui/templates/user/signup_domain.html:16
|
||||
#: mailu/ui/forms.py:95 mailu/ui/templates/domain/list.html:22
|
||||
#: mailu/ui/templates/user/list.html:23
|
||||
#: mailu/ui/templates/user/signup_domain.html:17
|
||||
msgid "Quota"
|
||||
msgstr "Kvóta"
|
||||
|
||||
#: mailu/ui/forms.py:83
|
||||
#: mailu/ui/forms.py:96
|
||||
msgid "Allow IMAP access"
|
||||
msgstr "Povolit přístup IMAP"
|
||||
|
||||
#: mailu/ui/forms.py:84
|
||||
#: mailu/ui/forms.py:97
|
||||
msgid "Allow POP3 access"
|
||||
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
|
||||
msgid "Displayed name"
|
||||
msgstr "Zobrazené jméno"
|
||||
|
||||
#: mailu/ui/forms.py:87
|
||||
#: mailu/ui/forms.py:101
|
||||
msgid "Enabled"
|
||||
msgstr "Povoleno"
|
||||
|
||||
#: mailu/ui/forms.py:92
|
||||
msgid "Email address"
|
||||
msgstr "Emailová adresa"
|
||||
|
||||
#: 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"
|
||||
msgstr "Povolit filtr spamu"
|
||||
|
||||
#: mailu/ui/forms.py:103
|
||||
#: mailu/ui/forms.py:119
|
||||
msgid "Enable marking spam mails as read"
|
||||
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"
|
||||
msgstr "Tolerance spamového filtru"
|
||||
|
||||
#: mailu/ui/forms.py:105
|
||||
#: mailu/ui/forms.py:121
|
||||
msgid "Enable forwarding"
|
||||
msgstr "Povolit přeposílání"
|
||||
|
||||
#: mailu/ui/forms.py:106
|
||||
#: mailu/ui/forms.py:122
|
||||
msgid "Keep a copy of the emails"
|
||||
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
|
||||
msgid "Destination"
|
||||
msgstr "Cíl"
|
||||
|
||||
#: mailu/ui/forms.py:108
|
||||
#: mailu/ui/forms.py:124
|
||||
msgid "Save settings"
|
||||
msgstr "Uložit nastavení"
|
||||
|
||||
#: mailu/ui/forms.py:113
|
||||
#: mailu/ui/forms.py:129 mailu/ui/forms.py:136
|
||||
msgid "Password check"
|
||||
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"
|
||||
msgstr "Aktualizovat heslo"
|
||||
|
||||
#: mailu/ui/forms.py:118
|
||||
#: mailu/ui/forms.py:141
|
||||
msgid "Enable automatic reply"
|
||||
msgstr "Povolit automatickou odpověď"
|
||||
|
||||
#: mailu/ui/forms.py:119
|
||||
#: mailu/ui/forms.py:142
|
||||
msgid "Reply subject"
|
||||
msgstr "Předmět odpovědi"
|
||||
|
||||
#: mailu/ui/forms.py:120
|
||||
#: mailu/ui/forms.py:143
|
||||
msgid "Reply body"
|
||||
msgstr "Tělo odpovědi"
|
||||
|
||||
#: mailu/ui/forms.py:122
|
||||
#: mailu/ui/forms.py:145
|
||||
msgid "Start of vacation"
|
||||
msgstr "Začátek dovolené"
|
||||
|
||||
#: mailu/ui/forms.py:123
|
||||
#: mailu/ui/forms.py:146
|
||||
msgid "End of vacation"
|
||||
msgstr "Konec dovolené"
|
||||
|
||||
#: mailu/ui/forms.py:124
|
||||
#: mailu/ui/forms.py:147
|
||||
msgid "Update"
|
||||
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)"
|
||||
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"
|
||||
msgstr "Autorizovaná IP"
|
||||
|
||||
#: mailu/ui/forms.py:140
|
||||
#: mailu/ui/forms.py:171
|
||||
msgid "Alias"
|
||||
msgstr "Alias"
|
||||
|
||||
#: mailu/ui/forms.py:142
|
||||
#: mailu/ui/forms.py:173
|
||||
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"
|
||||
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"
|
||||
msgstr "Poslat"
|
||||
msgstr "Odeslat"
|
||||
|
||||
#: mailu/ui/forms.py:154
|
||||
#: mailu/ui/forms.py:185
|
||||
msgid "Manager email"
|
||||
msgstr "E-mail manažera"
|
||||
|
||||
#: mailu/ui/forms.py:159
|
||||
#: mailu/ui/forms.py:190
|
||||
msgid "Protocol"
|
||||
msgstr "Protokol"
|
||||
|
||||
#: mailu/ui/forms.py:162
|
||||
#: mailu/ui/forms.py:193
|
||||
msgid "Hostname or IP"
|
||||
msgstr "Hostitel nebo IP"
|
||||
|
||||
#: mailu/ui/forms.py:163 mailu/ui/templates/client.html:20
|
||||
#: mailu/ui/templates/client.html:45
|
||||
#: mailu/ui/forms.py:194 mailu/ui/templates/client.html:19
|
||||
#: mailu/ui/templates/client.html:44
|
||||
msgid "TCP port"
|
||||
msgstr "TCP port"
|
||||
|
||||
#: mailu/ui/forms.py:164
|
||||
#: mailu/ui/forms.py:195
|
||||
msgid "Enable TLS"
|
||||
msgstr "Povolit TLS"
|
||||
|
||||
#: mailu/ui/forms.py:165 mailu/ui/templates/client.html:28
|
||||
#: mailu/ui/templates/client.html:53 mailu/ui/templates/fetch/list.html:21
|
||||
#: mailu/ui/forms.py:196 mailu/ui/templates/client.html:27
|
||||
#: mailu/ui/templates/client.html:52 mailu/ui/templates/fetch/list.html:21
|
||||
msgid "Username"
|
||||
msgstr "Uživatelské jméno"
|
||||
|
||||
#: mailu/ui/forms.py:167
|
||||
#: mailu/ui/forms.py:198
|
||||
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"
|
||||
msgstr "Předmět oznámení"
|
||||
|
||||
#: mailu/ui/forms.py:174
|
||||
#: mailu/ui/forms.py:207
|
||||
msgid "Announcement body"
|
||||
msgstr "Tělo oznámení"
|
||||
|
||||
#: mailu/ui/forms.py:176
|
||||
#: mailu/ui/forms.py:209
|
||||
msgid "Send"
|
||||
msgstr "Poslat"
|
||||
|
||||
@@ -302,7 +364,7 @@ msgstr "Poslat"
|
||||
msgid "Public announcement"
|
||||
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
|
||||
msgid "Antispam"
|
||||
msgstr "Antispam"
|
||||
@@ -315,22 +377,30 @@ msgstr "Stavová stránka RSPAMD"
|
||||
msgid "configure your email client"
|
||||
msgstr "nakonfigurovat e-mailového klienta"
|
||||
|
||||
#: mailu/ui/templates/client.html:13
|
||||
#: mailu/ui/templates/client.html:12
|
||||
msgid "Incoming 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"
|
||||
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"
|
||||
msgstr "Název serveru"
|
||||
|
||||
#: mailu/ui/templates/client.html:38
|
||||
#: mailu/ui/templates/client.html:37
|
||||
msgid "Outgoing mail"
|
||||
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
|
||||
msgid "Confirm action"
|
||||
msgstr "Potvrdit akci"
|
||||
@@ -348,7 +418,7 @@ msgstr "Chyba Dockeru"
|
||||
msgid "An error occurred while talking to the Docker server."
|
||||
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"
|
||||
msgstr "zkopírovat do schránky"
|
||||
|
||||
@@ -356,48 +426,48 @@ msgstr "zkopírovat do schránky"
|
||||
msgid "My account"
|
||||
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"
|
||||
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"
|
||||
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
|
||||
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"
|
||||
msgstr "Autentizační tokeny"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:56
|
||||
#: mailu/ui/templates/sidebar.html:58
|
||||
msgid "Administration"
|
||||
msgstr "Administrace"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:62
|
||||
#: mailu/ui/templates/sidebar.html:64
|
||||
msgid "Announcement"
|
||||
msgstr "Oznámení"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:68
|
||||
#: mailu/ui/templates/sidebar.html:70
|
||||
msgid "Administrators"
|
||||
msgstr "Administrátoři"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:74
|
||||
#: mailu/ui/templates/sidebar.html:76
|
||||
msgid "Relayed domains"
|
||||
msgstr "Relayované domény"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:88
|
||||
#: mailu/ui/templates/sidebar.html:90
|
||||
msgid "Mail domains"
|
||||
msgstr "Poštovní domény"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:99
|
||||
#: mailu/ui/templates/sidebar.html:101
|
||||
msgid "Webmail"
|
||||
msgstr "Webmail"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:135
|
||||
#: mailu/ui/templates/sidebar.html:137
|
||||
msgid "Sign out"
|
||||
msgstr "Odhlásit se"
|
||||
|
||||
@@ -411,7 +481,7 @@ msgstr "Přidat globálního administrátora"
|
||||
|
||||
#: mailu/ui/templates/admin/list.html:4
|
||||
msgid "Global administrators"
|
||||
msgstr "Globální administrátor"
|
||||
msgstr "Globální administrátoři"
|
||||
|
||||
#: mailu/ui/templates/admin/list.html:9
|
||||
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/manager/list.html:20 mailu/ui/templates/user/list.html:21
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:32
|
||||
#: mailu/ui/templates/alternative/list.html:29
|
||||
#: mailu/ui/templates/domain/list.html:34 mailu/ui/templates/fetch/list.html:34
|
||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:31
|
||||
#: mailu/ui/templates/domain/list.html:35 mailu/ui/templates/fetch/list.html:35
|
||||
#: mailu/ui/templates/manager/list.html:27
|
||||
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:30
|
||||
#: mailu/ui/templates/user/list.html:34
|
||||
#: mailu/ui/templates/relay/list.html:29 mailu/ui/templates/user/list.html:33
|
||||
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"
|
||||
msgstr "Vymazat"
|
||||
|
||||
@@ -458,26 +534,20 @@ msgstr "Přidat alias"
|
||||
|
||||
#: mailu/ui/templates/alias/list.html:23
|
||||
#: mailu/ui/templates/alternative/list.html:21
|
||||
#: mailu/ui/templates/domain/list.html:23 mailu/ui/templates/fetch/list.html:25
|
||||
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:22
|
||||
#: 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:23
|
||||
#: mailu/ui/templates/user/list.html:25
|
||||
msgid "Created"
|
||||
msgstr "Vytvořeno"
|
||||
|
||||
#: mailu/ui/templates/alias/list.html:24
|
||||
#: mailu/ui/templates/alternative/list.html:22
|
||||
#: mailu/ui/templates/domain/list.html:24 mailu/ui/templates/fetch/list.html:26
|
||||
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:23
|
||||
#: 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:24
|
||||
#: mailu/ui/templates/user/list.html:26
|
||||
msgid "Last edit"
|
||||
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
|
||||
msgid "Create alternative domain"
|
||||
msgstr "Vytvořit alternativní doménu"
|
||||
@@ -511,6 +581,10 @@ msgstr "Obnovit klíče"
|
||||
msgid "Generate keys"
|
||||
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
|
||||
msgid "DNS MX entry"
|
||||
msgstr "Záznam DNS MX"
|
||||
@@ -520,24 +594,20 @@ msgid "DNS SPF entries"
|
||||
msgstr "Záznamy DNS SPF"
|
||||
|
||||
#: 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"
|
||||
msgstr "Záznam DNS DKIM"
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:48
|
||||
#: mailu/ui/templates/domain/details.html:44
|
||||
msgid "DNS DMARC entry"
|
||||
msgstr "Záznam DNS DMARC"
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:58
|
||||
#: mailu/ui/templates/domain/details.html:53
|
||||
msgid "DNS TLSA entry"
|
||||
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"
|
||||
msgstr "Položky automatické konfigurace klienta DNS"
|
||||
msgstr "Položky automatického nastavení klienta DNS"
|
||||
|
||||
#: mailu/ui/templates/domain/edit.html:4
|
||||
msgid "Edit domain"
|
||||
@@ -559,25 +629,35 @@ msgstr "Počet poštovních schránek"
|
||||
msgid "Alias count"
|
||||
msgstr "Počet aliasů"
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:31
|
||||
#: mailu/ui/templates/domain/list.html:33
|
||||
msgid "Details"
|
||||
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
|
||||
msgid "Managers"
|
||||
msgstr "Manažerů"
|
||||
msgid "Users"
|
||||
msgstr "Uživatelé"
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:41
|
||||
msgid "Aliases"
|
||||
msgstr "Aliasy"
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:42
|
||||
msgid "Managers"
|
||||
msgstr "Manažeři"
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:44
|
||||
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
|
||||
msgid ""
|
||||
@@ -585,7 +665,7 @@ msgid ""
|
||||
" domain zone so that the domain <code>MX</code> points to this server"
|
||||
msgstr ""
|
||||
"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"
|
||||
|
||||
#: mailu/ui/templates/domain/signup.html:18
|
||||
@@ -598,19 +678,18 @@ msgid ""
|
||||
" expires."
|
||||
msgstr ""
|
||||
"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 "
|
||||
"a\n"
|
||||
" několik minut po <code>MX</code> tak, aby vypršela v mezipaměti "
|
||||
"místního\n"
|
||||
" serveru."
|
||||
" kontaktujte svého poskytovatele DNS nebo správce. Dále prosím počkejte\n"
|
||||
" několik minut po nastavení <code>MX</code> záznamu, aby se vymazal z "
|
||||
"mezipaměti\n"
|
||||
" místního serveru."
|
||||
|
||||
#: mailu/ui/templates/fetch/create.html:4
|
||||
msgid "Add a fetched account"
|
||||
msgstr "Přidejte fetched účet"
|
||||
msgstr "Přidejte stanovaný účet"
|
||||
|
||||
#: mailu/ui/templates/fetch/edit.html:4
|
||||
msgid "Update a fetched account"
|
||||
msgstr "Aktualizujte fetched účet"
|
||||
msgstr "Aktualizujte stahovaný účet"
|
||||
|
||||
#: mailu/ui/templates/fetch/list.html:12
|
||||
msgid "Add an account"
|
||||
@@ -622,23 +701,23 @@ msgstr "Koncový bod"
|
||||
|
||||
#: mailu/ui/templates/fetch/list.html:22
|
||||
msgid "Keep emails"
|
||||
msgstr "Zachovat emaily"
|
||||
msgstr "Ponechat e-maily"
|
||||
|
||||
#: 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"
|
||||
msgstr "Poslední kontrola"
|
||||
|
||||
#: mailu/ui/templates/fetch/list.html:24
|
||||
#: mailu/ui/templates/fetch/list.html:26
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: mailu/ui/templates/fetch/list.html:38
|
||||
msgid "yes"
|
||||
msgstr "ano"
|
||||
|
||||
#: mailu/ui/templates/fetch/list.html:38
|
||||
msgid "no"
|
||||
msgstr "ne"
|
||||
msgstr "Stav"
|
||||
|
||||
#: mailu/ui/templates/manager/create.html:4
|
||||
msgid "Add a manager"
|
||||
@@ -676,15 +755,19 @@ msgstr "Vytvořit ověřovací token"
|
||||
msgid "New token"
|
||||
msgstr "Nový token"
|
||||
|
||||
#: mailu/ui/templates/token/list.html:20
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: mailu/ui/templates/user/create.html:4
|
||||
msgid "New user"
|
||||
msgstr "Nový uživatel"
|
||||
|
||||
#: mailu/ui/templates/user/create.html:15
|
||||
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"
|
||||
msgstr "Funkce a kvóty"
|
||||
|
||||
@@ -724,10 +807,13 @@ msgstr "Automatické přeposlání"
|
||||
msgid "pick a domain for the new account"
|
||||
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"
|
||||
msgstr "Doména"
|
||||
|
||||
#: mailu/ui/templates/user/signup_domain.html:15
|
||||
#: mailu/ui/templates/user/signup_domain.html:16
|
||||
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 ""
|
||||
"Project-Id-Version: Mailu\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"
|
||||
"Last-Translator: Anonymous <noreply@weblate.org>\n"
|
||||
"Language: de\n"
|
||||
"Language-Team: German "
|
||||
"<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"
|
||||
"Content-Type: text/plain; charset=utf-8\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"
|
||||
msgstr "E-Mail"
|
||||
|
||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:80 mailu/ui/forms.py:93
|
||||
#: mailu/ui/forms.py:112 mailu/ui/forms.py:166
|
||||
#: mailu/ui/templates/client.html:32 mailu/ui/templates/client.html:57
|
||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:92 mailu/ui/forms.py:108
|
||||
#: mailu/ui/forms.py:128 mailu/ui/forms.py:135 mailu/ui/forms.py:197
|
||||
#: mailu/ui/templates/client.html:31 mailu/ui/templates/client.html:56
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: mailu/sso/forms.py:10 mailu/sso/forms.py:11 mailu/sso/templates/login.html:4
|
||||
#: mailu/ui/templates/sidebar.html:142
|
||||
#: mailu/sso/forms.py:11 mailu/sso/forms.py:12 mailu/sso/templates/login.html:4
|
||||
#: mailu/sso/templates/sidebar_sso.html:42 mailu/ui/templates/sidebar.html:144
|
||||
msgid "Sign in"
|
||||
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
|
||||
msgid "Admin page for"
|
||||
msgstr "Administration für"
|
||||
@@ -42,255 +58,301 @@ msgstr "Seitenleiste ein-/ausklapen"
|
||||
msgid "change language"
|
||||
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"
|
||||
msgstr "Wechseln zu"
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
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"
|
||||
msgstr "Hilfe"
|
||||
|
||||
#: 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"
|
||||
msgstr "Regestrieren Sie eine Domain"
|
||||
|
||||
#: mailu/sso/templates/sidebar_sso.html:49 mailu/ui/forms.py:95
|
||||
#: mailu/ui/templates/sidebar.html:149 mailu/ui/templates/user/signup.html:4
|
||||
#: mailu/sso/templates/sidebar_sso.html:55 mailu/ui/forms.py:111
|
||||
#: mailu/ui/templates/sidebar.html:151 mailu/ui/templates/user/signup.html:4
|
||||
#: mailu/ui/templates/user/signup_domain.html:4
|
||||
msgid "Sign up"
|
||||
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."
|
||||
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"
|
||||
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/list.html:19 mailu/ui/templates/relay/list.html:18
|
||||
msgid "Domain name"
|
||||
msgstr "Domain-Name"
|
||||
|
||||
#: mailu/ui/forms.py:49
|
||||
#: mailu/ui/forms.py:60
|
||||
msgid "Maximum user count"
|
||||
msgstr "Maximale Anzahl Benutzer"
|
||||
|
||||
#: mailu/ui/forms.py:50
|
||||
#: mailu/ui/forms.py:61
|
||||
msgid "Maximum alias count"
|
||||
msgstr "Maximale Anzahl Aliase"
|
||||
|
||||
#: mailu/ui/forms.py:51
|
||||
#: mailu/ui/forms.py:62
|
||||
msgid "Maximum user quota"
|
||||
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"
|
||||
msgstr "Neuanmeldung erlauben"
|
||||
|
||||
#: mailu/ui/forms.py:53 mailu/ui/forms.py:74 mailu/ui/forms.py:86
|
||||
#: mailu/ui/forms.py:132 mailu/ui/forms.py:144
|
||||
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:22
|
||||
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:20
|
||||
#: mailu/ui/forms.py:64 mailu/ui/forms.py:86 mailu/ui/forms.py:100
|
||||
#: mailu/ui/forms.py:155 mailu/ui/forms.py:175
|
||||
#: 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:21
|
||||
#: mailu/ui/templates/user/list.html:24
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: mailu/ui/forms.py:54 mailu/ui/forms.py:68 mailu/ui/forms.py:75
|
||||
#: mailu/ui/forms.py:88 mailu/ui/forms.py:136 mailu/ui/forms.py:145
|
||||
#: mailu/ui/forms.py:65 mailu/ui/forms.py:80 mailu/ui/forms.py:87
|
||||
#: mailu/ui/forms.py:103 mailu/ui/forms.py:159 mailu/ui/forms.py:176
|
||||
msgid "Save"
|
||||
msgstr "Speichern"
|
||||
|
||||
#: mailu/ui/forms.py:59
|
||||
#: mailu/ui/forms.py:70
|
||||
msgid "Initial admin"
|
||||
msgstr "Initiale Admin-Adresse"
|
||||
|
||||
#: mailu/ui/forms.py:60
|
||||
#: mailu/ui/forms.py:71
|
||||
msgid "Admin password"
|
||||
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"
|
||||
msgstr "Passwort bestätigen"
|
||||
|
||||
#: mailu/ui/forms.py:63
|
||||
#: mailu/ui/forms.py:75
|
||||
msgid "Create"
|
||||
msgstr "Erstellen"
|
||||
|
||||
#: mailu/ui/forms.py:67
|
||||
#: mailu/ui/forms.py:79
|
||||
msgid "Alternative name"
|
||||
msgstr "Alternativer Name"
|
||||
|
||||
#: mailu/ui/forms.py:72
|
||||
#: mailu/ui/forms.py:84
|
||||
msgid "Relayed 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"
|
||||
msgstr "Entfernter Host"
|
||||
|
||||
#: mailu/ui/forms.py:82 mailu/ui/templates/user/list.html:23
|
||||
#: mailu/ui/templates/user/signup_domain.html:16
|
||||
#: mailu/ui/forms.py:95 mailu/ui/templates/domain/list.html:22
|
||||
#: mailu/ui/templates/user/list.html:23
|
||||
#: mailu/ui/templates/user/signup_domain.html:17
|
||||
msgid "Quota"
|
||||
msgstr "Kontingent"
|
||||
|
||||
#: mailu/ui/forms.py:83
|
||||
#: mailu/ui/forms.py:96
|
||||
msgid "Allow IMAP access"
|
||||
msgstr "Zugriff via IMAP erlauben"
|
||||
|
||||
#: mailu/ui/forms.py:84
|
||||
#: mailu/ui/forms.py:97
|
||||
msgid "Allow POP3 access"
|
||||
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
|
||||
msgid "Displayed name"
|
||||
msgstr "Angezeigter Name"
|
||||
|
||||
#: mailu/ui/forms.py:87
|
||||
#: mailu/ui/forms.py:101
|
||||
msgid "Enabled"
|
||||
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"
|
||||
msgstr "E-Mail-Adresse"
|
||||
|
||||
#: mailu/ui/forms.py:102
|
||||
#: mailu/ui/forms.py:118
|
||||
msgid "Enable spam filter"
|
||||
msgstr "Spamfilter aktivieren"
|
||||
|
||||
#: mailu/ui/forms.py:103
|
||||
#: mailu/ui/forms.py:119
|
||||
msgid "Enable marking spam mails as read"
|
||||
msgstr "Spam automatisch als gelesen markieren"
|
||||
|
||||
#: mailu/ui/forms.py:104
|
||||
#: mailu/ui/forms.py:120
|
||||
msgid "Spam filter tolerance"
|
||||
msgstr "Spamfilter-Grenzwert"
|
||||
|
||||
#: mailu/ui/forms.py:105
|
||||
#: mailu/ui/forms.py:121
|
||||
msgid "Enable forwarding"
|
||||
msgstr "Weiterleitung aktivieren"
|
||||
|
||||
#: mailu/ui/forms.py:106
|
||||
#: mailu/ui/forms.py:122
|
||||
msgid "Keep a copy of the emails"
|
||||
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
|
||||
msgid "Destination"
|
||||
msgstr "Ziel"
|
||||
|
||||
#: mailu/ui/forms.py:108
|
||||
#: mailu/ui/forms.py:124
|
||||
msgid "Save settings"
|
||||
msgstr "Einstellungen speichern"
|
||||
|
||||
#: mailu/ui/forms.py:113
|
||||
#: mailu/ui/forms.py:129 mailu/ui/forms.py:136
|
||||
msgid "Password check"
|
||||
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"
|
||||
msgstr "Passwort aktualisieren"
|
||||
|
||||
#: mailu/ui/forms.py:118
|
||||
#: mailu/ui/forms.py:141
|
||||
msgid "Enable automatic reply"
|
||||
msgstr "Automatische Antwort aktivieren"
|
||||
|
||||
#: mailu/ui/forms.py:119
|
||||
#: mailu/ui/forms.py:142
|
||||
msgid "Reply subject"
|
||||
msgstr "Betreff"
|
||||
|
||||
#: mailu/ui/forms.py:120
|
||||
#: mailu/ui/forms.py:143
|
||||
msgid "Reply body"
|
||||
msgstr "Text"
|
||||
|
||||
#: mailu/ui/forms.py:122
|
||||
#: mailu/ui/forms.py:145
|
||||
msgid "Start of vacation"
|
||||
msgstr "Beginn der Abwesenheit"
|
||||
|
||||
#: mailu/ui/forms.py:123
|
||||
#: mailu/ui/forms.py:146
|
||||
msgid "End of vacation"
|
||||
msgstr "Ende der Abwesenheit"
|
||||
|
||||
#: mailu/ui/forms.py:124
|
||||
#: mailu/ui/forms.py:147
|
||||
msgid "Update"
|
||||
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)"
|
||||
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"
|
||||
msgstr "Authorisierte IP-Adresse"
|
||||
|
||||
#: mailu/ui/forms.py:140
|
||||
#: mailu/ui/forms.py:171
|
||||
msgid "Alias"
|
||||
msgstr "Alias"
|
||||
|
||||
#: mailu/ui/forms.py:142
|
||||
#: mailu/ui/forms.py:173
|
||||
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
||||
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"
|
||||
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"
|
||||
msgstr "Absenden"
|
||||
|
||||
#: mailu/ui/forms.py:154
|
||||
#: mailu/ui/forms.py:185
|
||||
msgid "Manager email"
|
||||
msgstr "Manager E-Mail"
|
||||
|
||||
#: mailu/ui/forms.py:159
|
||||
#: mailu/ui/forms.py:190
|
||||
msgid "Protocol"
|
||||
msgstr "Protokoll"
|
||||
|
||||
#: mailu/ui/forms.py:162
|
||||
#: mailu/ui/forms.py:193
|
||||
msgid "Hostname or IP"
|
||||
msgstr "Hostname oder IP"
|
||||
|
||||
#: mailu/ui/forms.py:163 mailu/ui/templates/client.html:20
|
||||
#: mailu/ui/templates/client.html:45
|
||||
#: mailu/ui/forms.py:194 mailu/ui/templates/client.html:19
|
||||
#: mailu/ui/templates/client.html:44
|
||||
msgid "TCP port"
|
||||
msgstr "TCP Port"
|
||||
|
||||
#: mailu/ui/forms.py:164
|
||||
#: mailu/ui/forms.py:195
|
||||
msgid "Enable TLS"
|
||||
msgstr "Verschlüsselung aktivieren (TLS)"
|
||||
|
||||
#: mailu/ui/forms.py:165 mailu/ui/templates/client.html:28
|
||||
#: mailu/ui/templates/client.html:53 mailu/ui/templates/fetch/list.html:21
|
||||
#: mailu/ui/forms.py:196 mailu/ui/templates/client.html:27
|
||||
#: mailu/ui/templates/client.html:52 mailu/ui/templates/fetch/list.html:21
|
||||
msgid "Username"
|
||||
msgstr "Benutzername"
|
||||
|
||||
#: mailu/ui/forms.py:167
|
||||
#: mailu/ui/forms.py:198
|
||||
msgid "Keep emails on the server"
|
||||
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"
|
||||
msgstr "Betreff"
|
||||
|
||||
#: mailu/ui/forms.py:174
|
||||
#: mailu/ui/forms.py:207
|
||||
msgid "Announcement body"
|
||||
msgstr "Text"
|
||||
|
||||
#: mailu/ui/forms.py:176
|
||||
#: mailu/ui/forms.py:209
|
||||
msgid "Send"
|
||||
msgstr "Absenden"
|
||||
|
||||
@@ -298,7 +360,7 @@ msgstr "Absenden"
|
||||
msgid "Public announcement"
|
||||
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
|
||||
msgid "Antispam"
|
||||
msgstr "Antispam"
|
||||
@@ -307,6 +369,26 @@ msgstr "Antispam"
|
||||
msgid "RSPAMD status page"
|
||||
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
|
||||
msgid "If you use an Apple device,"
|
||||
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."
|
||||
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
|
||||
msgid "Confirm action"
|
||||
msgstr "Aktion bestätigen"
|
||||
@@ -354,7 +416,7 @@ msgstr ""
|
||||
"Während der Kommunikation mit dem Docker Server ist ein Fehler "
|
||||
"aufgetreten."
|
||||
|
||||
#: mailu/ui/templates/macros.html:129
|
||||
#: mailu/ui/templates/macros.html:128
|
||||
msgid "copy to clipboard"
|
||||
msgstr "In Zwischenablage kopieren"
|
||||
|
||||
@@ -362,48 +424,48 @@ msgstr "In Zwischenablage kopieren"
|
||||
msgid "My account"
|
||||
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"
|
||||
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"
|
||||
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
|
||||
msgid "Fetched accounts"
|
||||
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"
|
||||
msgstr "Authentifizierungs-Tokens"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:56
|
||||
#: mailu/ui/templates/sidebar.html:58
|
||||
msgid "Administration"
|
||||
msgstr "Administration"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:62
|
||||
#: mailu/ui/templates/sidebar.html:64
|
||||
msgid "Announcement"
|
||||
msgstr "Bekanntmachung"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:68
|
||||
#: mailu/ui/templates/sidebar.html:70
|
||||
msgid "Administrators"
|
||||
msgstr "Administratoren"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:74
|
||||
#: mailu/ui/templates/sidebar.html:76
|
||||
msgid "Relayed domains"
|
||||
msgstr "Relay-Domains"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:88
|
||||
#: mailu/ui/templates/sidebar.html:90
|
||||
msgid "Mail domains"
|
||||
msgstr "E-Mail-Domains"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:99
|
||||
#: mailu/ui/templates/sidebar.html:101
|
||||
msgid "Webmail"
|
||||
msgstr "Webmail"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:135
|
||||
#: mailu/ui/templates/sidebar.html:137
|
||||
msgid "Sign out"
|
||||
msgstr "Abmelden"
|
||||
|
||||
@@ -437,12 +499,18 @@ msgstr "Aktionen"
|
||||
msgid "Email"
|
||||
msgstr "E-Mail"
|
||||
|
||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:32
|
||||
#: mailu/ui/templates/alternative/list.html:29
|
||||
#: mailu/ui/templates/domain/list.html:34 mailu/ui/templates/fetch/list.html:34
|
||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:31
|
||||
#: mailu/ui/templates/domain/list.html:35 mailu/ui/templates/fetch/list.html:35
|
||||
#: mailu/ui/templates/manager/list.html:27
|
||||
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:30
|
||||
#: mailu/ui/templates/user/list.html:34
|
||||
#: mailu/ui/templates/relay/list.html:29 mailu/ui/templates/user/list.html:33
|
||||
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"
|
||||
msgstr "Löschen"
|
||||
|
||||
@@ -464,26 +532,20 @@ msgstr "Alias hinzufügen"
|
||||
|
||||
#: mailu/ui/templates/alias/list.html:23
|
||||
#: mailu/ui/templates/alternative/list.html:21
|
||||
#: mailu/ui/templates/domain/list.html:23 mailu/ui/templates/fetch/list.html:25
|
||||
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:22
|
||||
#: 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:23
|
||||
#: mailu/ui/templates/user/list.html:25
|
||||
msgid "Created"
|
||||
msgstr "Erstellt"
|
||||
|
||||
#: mailu/ui/templates/alias/list.html:24
|
||||
#: mailu/ui/templates/alternative/list.html:22
|
||||
#: mailu/ui/templates/domain/list.html:24 mailu/ui/templates/fetch/list.html:26
|
||||
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:23
|
||||
#: 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:24
|
||||
#: mailu/ui/templates/user/list.html:26
|
||||
msgid "Last edit"
|
||||
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
|
||||
msgid "Create alternative domain"
|
||||
msgstr "Alternative Domain erstellen"
|
||||
@@ -517,6 +579,10 @@ msgstr "Schlüssel neu erzeugen"
|
||||
msgid "Generate keys"
|
||||
msgstr "Schlüssel erzeugen"
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:19
|
||||
msgid "Download zonefile"
|
||||
msgstr "Zonefile herunterladen"
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:30
|
||||
msgid "DNS MX entry"
|
||||
msgstr "DNS MX Eintrag"
|
||||
@@ -526,25 +592,25 @@ msgid "DNS SPF entries"
|
||||
msgstr "DNS SPF Einträge"
|
||||
|
||||
#: 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"
|
||||
msgstr "DNS DKIM Eintrag"
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:48
|
||||
#: mailu/ui/templates/domain/details.html:44
|
||||
msgid "DNS DMARC entry"
|
||||
msgstr "DNS DMARC Eintrag"
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:58
|
||||
#: mailu/ui/templates/domain/details.html:53
|
||||
msgid "DNS TLSA entry"
|
||||
msgstr "DNS TLSA Eintrag"
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:63
|
||||
#: mailu/ui/templates/domain/details.html:58
|
||||
msgid "DNS client auto-configuration entries"
|
||||
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
|
||||
msgid "Edit domain"
|
||||
msgstr "Domain bearbeiten"
|
||||
@@ -565,26 +631,36 @@ msgstr "Anzahl Mailboxen"
|
||||
msgid "Alias count"
|
||||
msgstr "Anzahl Aliase"
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:31
|
||||
#: mailu/ui/templates/domain/list.html:33
|
||||
msgid "Details"
|
||||
msgstr "Details"
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:38
|
||||
#: mailu/ui/templates/domain/list.html:40
|
||||
msgid "Users"
|
||||
msgstr "Benutzer"
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:39
|
||||
#: mailu/ui/templates/domain/list.html:41
|
||||
msgid "Aliases"
|
||||
msgstr "Aliase"
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:40
|
||||
#: mailu/ui/templates/domain/list.html:42
|
||||
msgid "Managers"
|
||||
msgstr "Manager"
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:42
|
||||
#: mailu/ui/templates/domain/list.html:44
|
||||
msgid "Alternatives"
|
||||
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
|
||||
msgid ""
|
||||
"In order to register a new domain, you must first setup the\n"
|
||||
@@ -631,21 +707,21 @@ msgid "Keep emails"
|
||||
msgstr "E-Mails behalten"
|
||||
|
||||
#: 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"
|
||||
msgstr "Letzte Prüfung"
|
||||
|
||||
#: mailu/ui/templates/fetch/list.html:24
|
||||
#: mailu/ui/templates/fetch/list.html:26
|
||||
msgid "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
|
||||
msgid "Add a manager"
|
||||
msgstr "Einen Manager hinzufügen"
|
||||
@@ -682,6 +758,10 @@ msgstr "Authentifizierungs-Token erstellen"
|
||||
msgid "New token"
|
||||
msgstr "Neuer Token"
|
||||
|
||||
#: mailu/ui/templates/token/list.html:20
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: mailu/ui/templates/user/create.html:4
|
||||
msgid "New user"
|
||||
msgstr "Neuer Benutzer"
|
||||
@@ -690,7 +770,7 @@ msgstr "Neuer Benutzer"
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: mailu/ui/templates/user/create.html:23
|
||||
#: mailu/ui/templates/user/create.html:24
|
||||
msgid "Features and quotas"
|
||||
msgstr "Funktionen und Quotas"
|
||||
|
||||
@@ -730,47 +810,11 @@ msgstr "Auto-Weiterleitung"
|
||||
msgid "pick a domain for the new account"
|
||||
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"
|
||||
msgstr "Domain"
|
||||
|
||||
#: mailu/ui/templates/user/signup_domain.html:15
|
||||
#: mailu/ui/templates/user/signup_domain.html:16
|
||||
msgid "Available slots"
|
||||
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 ""
|
||||
"Project-Id-Version: PROJECT VERSION\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"
|
||||
"Last-Translator: Jaume Barber <jaumebarber@gmail.com>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: English "
|
||||
"<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"
|
||||
"Content-Type: text/plain; charset=utf-8\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"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:80 mailu/ui/forms.py:93
|
||||
#: mailu/ui/forms.py:112 mailu/ui/forms.py:166
|
||||
#: mailu/ui/templates/client.html:32 mailu/ui/templates/client.html:57
|
||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:92 mailu/ui/forms.py:108
|
||||
#: mailu/ui/forms.py:128 mailu/ui/forms.py:135 mailu/ui/forms.py:197
|
||||
#: mailu/ui/templates/client.html:31 mailu/ui/templates/client.html:56
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: mailu/sso/forms.py:10 mailu/sso/forms.py:11 mailu/sso/templates/login.html:4
|
||||
#: mailu/ui/templates/sidebar.html:142
|
||||
#: mailu/sso/forms.py:11 mailu/sso/forms.py:12 mailu/sso/templates/login.html:4
|
||||
#: mailu/sso/templates/sidebar_sso.html:42 mailu/ui/templates/sidebar.html:144
|
||||
msgid "Sign in"
|
||||
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
|
||||
msgid "Admin page for"
|
||||
msgstr ""
|
||||
@@ -46,255 +62,301 @@ msgstr ""
|
||||
msgid "change language"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/sso/templates/sidebar_sso.html:49 mailu/ui/forms.py:95
|
||||
#: mailu/ui/templates/sidebar.html:149 mailu/ui/templates/user/signup.html:4
|
||||
#: mailu/sso/templates/sidebar_sso.html:55 mailu/ui/forms.py:111
|
||||
#: mailu/ui/templates/sidebar.html:151 mailu/ui/templates/user/signup.html:4
|
||||
#: mailu/ui/templates/user/signup_domain.html:4
|
||||
msgid "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."
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:45
|
||||
#: mailu/ui/forms.py:47
|
||||
msgid "Invalid list of folders."
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:56
|
||||
msgid "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/list.html:19 mailu/ui/templates/relay/list.html:18
|
||||
msgid "Domain name"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:49
|
||||
#: mailu/ui/forms.py:60
|
||||
msgid "Maximum user count"
|
||||
msgstr "Maximum user count"
|
||||
|
||||
#: mailu/ui/forms.py:50
|
||||
#: mailu/ui/forms.py:61
|
||||
msgid "Maximum alias count"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:51
|
||||
#: mailu/ui/forms.py:62
|
||||
msgid "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"
|
||||
msgstr "Enable sign-up"
|
||||
|
||||
#: mailu/ui/forms.py:53 mailu/ui/forms.py:74 mailu/ui/forms.py:86
|
||||
#: mailu/ui/forms.py:132 mailu/ui/forms.py:144
|
||||
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:22
|
||||
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:20
|
||||
#: mailu/ui/forms.py:64 mailu/ui/forms.py:86 mailu/ui/forms.py:100
|
||||
#: mailu/ui/forms.py:155 mailu/ui/forms.py:175
|
||||
#: 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:21
|
||||
#: mailu/ui/templates/user/list.html:24
|
||||
msgid "Comment"
|
||||
msgstr "Comment"
|
||||
|
||||
#: mailu/ui/forms.py:54 mailu/ui/forms.py:68 mailu/ui/forms.py:75
|
||||
#: mailu/ui/forms.py:88 mailu/ui/forms.py:136 mailu/ui/forms.py:145
|
||||
#: mailu/ui/forms.py:65 mailu/ui/forms.py:80 mailu/ui/forms.py:87
|
||||
#: mailu/ui/forms.py:103 mailu/ui/forms.py:159 mailu/ui/forms.py:176
|
||||
msgid "Save"
|
||||
msgstr "Save"
|
||||
|
||||
#: mailu/ui/forms.py:59
|
||||
#: mailu/ui/forms.py:70
|
||||
msgid "Initial admin"
|
||||
msgstr "Initial admin"
|
||||
|
||||
#: mailu/ui/forms.py:60
|
||||
#: mailu/ui/forms.py:71
|
||||
msgid "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"
|
||||
msgstr "Confirm password"
|
||||
|
||||
#: mailu/ui/forms.py:63
|
||||
#: mailu/ui/forms.py:75
|
||||
msgid "Create"
|
||||
msgstr "Create"
|
||||
|
||||
#: mailu/ui/forms.py:67
|
||||
#: mailu/ui/forms.py:79
|
||||
msgid "Alternative name"
|
||||
msgstr "Alternative name"
|
||||
|
||||
#: mailu/ui/forms.py:72
|
||||
#: mailu/ui/forms.py:84
|
||||
msgid "Relayed domain name"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:82 mailu/ui/templates/user/list.html:23
|
||||
#: mailu/ui/templates/user/signup_domain.html:16
|
||||
#: mailu/ui/forms.py:95 mailu/ui/templates/domain/list.html:22
|
||||
#: mailu/ui/templates/user/list.html:23
|
||||
#: mailu/ui/templates/user/signup_domain.html:17
|
||||
msgid "Quota"
|
||||
msgstr "Quota"
|
||||
|
||||
#: mailu/ui/forms.py:83
|
||||
#: mailu/ui/forms.py:96
|
||||
msgid "Allow IMAP access"
|
||||
msgstr "Allow IMAP access"
|
||||
|
||||
#: mailu/ui/forms.py:84
|
||||
#: mailu/ui/forms.py:97
|
||||
msgid "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
|
||||
msgid "Displayed name"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:87
|
||||
#: mailu/ui/forms.py:101
|
||||
msgid "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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:102
|
||||
#: mailu/ui/forms.py:118
|
||||
msgid "Enable spam filter"
|
||||
msgstr "Enable spam filter"
|
||||
|
||||
#: mailu/ui/forms.py:103
|
||||
#: mailu/ui/forms.py:119
|
||||
msgid "Enable marking spam mails as read"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:104
|
||||
#: mailu/ui/forms.py:120
|
||||
msgid "Spam filter tolerance"
|
||||
msgstr "Spam filter tolerance"
|
||||
|
||||
#: mailu/ui/forms.py:105
|
||||
#: mailu/ui/forms.py:121
|
||||
msgid "Enable forwarding"
|
||||
msgstr "Enable forwarding"
|
||||
|
||||
#: mailu/ui/forms.py:106
|
||||
#: mailu/ui/forms.py:122
|
||||
msgid "Keep a copy of the emails"
|
||||
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
|
||||
msgid "Destination"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:108
|
||||
#: mailu/ui/forms.py:124
|
||||
msgid "Save settings"
|
||||
msgstr "Save settings"
|
||||
|
||||
#: mailu/ui/forms.py:113
|
||||
#: mailu/ui/forms.py:129 mailu/ui/forms.py:136
|
||||
msgid "Password check"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:118
|
||||
#: mailu/ui/forms.py:141
|
||||
msgid "Enable automatic reply"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:119
|
||||
#: mailu/ui/forms.py:142
|
||||
msgid "Reply subject"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:120
|
||||
#: mailu/ui/forms.py:143
|
||||
msgid "Reply body"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:122
|
||||
#: mailu/ui/forms.py:145
|
||||
msgid "Start of vacation"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:123
|
||||
#: mailu/ui/forms.py:146
|
||||
msgid "End of vacation"
|
||||
msgstr "End of vacation"
|
||||
|
||||
#: mailu/ui/forms.py:124
|
||||
#: mailu/ui/forms.py:147
|
||||
msgid "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)"
|
||||
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"
|
||||
msgstr "Authorized IP"
|
||||
|
||||
#: mailu/ui/forms.py:140
|
||||
#: mailu/ui/forms.py:171
|
||||
msgid "Alias"
|
||||
msgstr "Alias"
|
||||
|
||||
#: mailu/ui/forms.py:142
|
||||
#: mailu/ui/forms.py:173
|
||||
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:149
|
||||
#: mailu/ui/forms.py:180
|
||||
msgid "Admin email"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:154
|
||||
#: mailu/ui/forms.py:185
|
||||
msgid "Manager email"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:159
|
||||
#: mailu/ui/forms.py:190
|
||||
msgid "Protocol"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:162
|
||||
#: mailu/ui/forms.py:193
|
||||
msgid "Hostname or IP"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:163 mailu/ui/templates/client.html:20
|
||||
#: mailu/ui/templates/client.html:45
|
||||
#: mailu/ui/forms.py:194 mailu/ui/templates/client.html:19
|
||||
#: mailu/ui/templates/client.html:44
|
||||
msgid "TCP port"
|
||||
msgstr "TCP port"
|
||||
|
||||
#: mailu/ui/forms.py:164
|
||||
#: mailu/ui/forms.py:195
|
||||
msgid "Enable TLS"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:165 mailu/ui/templates/client.html:28
|
||||
#: mailu/ui/templates/client.html:53 mailu/ui/templates/fetch/list.html:21
|
||||
#: mailu/ui/forms.py:196 mailu/ui/templates/client.html:27
|
||||
#: mailu/ui/templates/client.html:52 mailu/ui/templates/fetch/list.html:21
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:167
|
||||
#: mailu/ui/forms.py:198
|
||||
msgid "Keep emails on the server"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:174
|
||||
#: mailu/ui/forms.py:207
|
||||
msgid "Announcement body"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:176
|
||||
#: mailu/ui/forms.py:209
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
|
||||
@@ -302,7 +364,7 @@ msgstr ""
|
||||
msgid "Public announcement"
|
||||
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
|
||||
msgid "Antispam"
|
||||
msgstr "Antispam"
|
||||
@@ -315,22 +377,30 @@ msgstr ""
|
||||
msgid "configure your email client"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/client.html:13
|
||||
#: mailu/ui/templates/client.html:12
|
||||
msgid "Incoming mail"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/client.html:38
|
||||
#: mailu/ui/templates/client.html:37
|
||||
msgid "Outgoing mail"
|
||||
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
|
||||
msgid "Confirm action"
|
||||
msgstr ""
|
||||
@@ -348,7 +418,7 @@ msgstr "Docker error"
|
||||
msgid "An error occurred while talking to the Docker server."
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/macros.html:129
|
||||
#: mailu/ui/templates/macros.html:128
|
||||
msgid "copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
@@ -356,48 +426,48 @@ msgstr ""
|
||||
msgid "My account"
|
||||
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"
|
||||
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"
|
||||
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
|
||||
msgid "Fetched accounts"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:56
|
||||
#: mailu/ui/templates/sidebar.html:58
|
||||
msgid "Administration"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:62
|
||||
#: mailu/ui/templates/sidebar.html:64
|
||||
msgid "Announcement"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:68
|
||||
#: mailu/ui/templates/sidebar.html:70
|
||||
msgid "Administrators"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:74
|
||||
#: mailu/ui/templates/sidebar.html:76
|
||||
msgid "Relayed domains"
|
||||
msgstr "Relayed domains"
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:88
|
||||
#: mailu/ui/templates/sidebar.html:90
|
||||
msgid "Mail domains"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:99
|
||||
#: mailu/ui/templates/sidebar.html:101
|
||||
msgid "Webmail"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:135
|
||||
#: mailu/ui/templates/sidebar.html:137
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
@@ -431,12 +501,18 @@ msgstr ""
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:32
|
||||
#: mailu/ui/templates/alternative/list.html:29
|
||||
#: mailu/ui/templates/domain/list.html:34 mailu/ui/templates/fetch/list.html:34
|
||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:31
|
||||
#: mailu/ui/templates/domain/list.html:35 mailu/ui/templates/fetch/list.html:35
|
||||
#: mailu/ui/templates/manager/list.html:27
|
||||
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:30
|
||||
#: mailu/ui/templates/user/list.html:34
|
||||
#: mailu/ui/templates/relay/list.html:29 mailu/ui/templates/user/list.html:33
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
@@ -458,26 +534,20 @@ msgstr ""
|
||||
|
||||
#: mailu/ui/templates/alias/list.html:23
|
||||
#: mailu/ui/templates/alternative/list.html:21
|
||||
#: mailu/ui/templates/domain/list.html:23 mailu/ui/templates/fetch/list.html:25
|
||||
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:22
|
||||
#: 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:23
|
||||
#: mailu/ui/templates/user/list.html:25
|
||||
msgid "Created"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/alias/list.html:24
|
||||
#: mailu/ui/templates/alternative/list.html:22
|
||||
#: mailu/ui/templates/domain/list.html:24 mailu/ui/templates/fetch/list.html:26
|
||||
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:23
|
||||
#: 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:24
|
||||
#: mailu/ui/templates/user/list.html:26
|
||||
msgid "Last edit"
|
||||
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
|
||||
msgid "Create alternative domain"
|
||||
msgstr ""
|
||||
@@ -524,22 +594,18 @@ msgid "DNS SPF entries"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:40
|
||||
msgid "DKIM public key"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:44
|
||||
msgid "DNS DKIM entry"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:48
|
||||
#: mailu/ui/templates/domain/details.html:44
|
||||
msgid "DNS DMARC entry"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:58
|
||||
#: mailu/ui/templates/domain/details.html:53
|
||||
msgid "DNS TLSA entry"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:63
|
||||
#: mailu/ui/templates/domain/details.html:58
|
||||
msgid "DNS client auto-configuration entries"
|
||||
msgstr ""
|
||||
|
||||
@@ -563,26 +629,36 @@ msgstr ""
|
||||
msgid "Alias count"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:31
|
||||
#: mailu/ui/templates/domain/list.html:33
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:38
|
||||
#: mailu/ui/templates/domain/list.html:40
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:39
|
||||
#: mailu/ui/templates/domain/list.html:41
|
||||
msgid "Aliases"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:40
|
||||
#: mailu/ui/templates/domain/list.html:42
|
||||
msgid "Managers"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:42
|
||||
#: mailu/ui/templates/domain/list.html:44
|
||||
msgid "Alternatives"
|
||||
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
|
||||
msgid ""
|
||||
"In order to register a new domain, you must first setup the\n"
|
||||
@@ -621,21 +697,21 @@ msgid "Keep emails"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/fetch/list.html:23
|
||||
msgid "Last check"
|
||||
msgid "Rescan emails"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
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
|
||||
msgid "Add a manager"
|
||||
msgstr ""
|
||||
@@ -672,6 +748,10 @@ msgstr ""
|
||||
msgid "New token"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/token/list.html:20
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/user/create.html:4
|
||||
msgid "New user"
|
||||
msgstr ""
|
||||
@@ -680,7 +760,7 @@ msgstr ""
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/user/create.html:23
|
||||
#: mailu/ui/templates/user/create.html:24
|
||||
msgid "Features and quotas"
|
||||
msgstr ""
|
||||
|
||||
@@ -720,29 +800,11 @@ msgstr ""
|
||||
msgid "pick a domain for the new account"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/user/signup_domain.html:14
|
||||
#: mailu/ui/templates/user/signup_domain.html:15
|
||||
msgid "Domain"
|
||||
msgstr "Domain"
|
||||
|
||||
#: mailu/ui/templates/user/signup_domain.html:15
|
||||
#: mailu/ui/templates/user/signup_domain.html:16
|
||||
msgid "Available slots"
|
||||
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.validators import ValidationError
|
||||
from wtforms_components import fields as fields_
|
||||
from flask_babel import lazy_gettext as _
|
||||
|
||||
import flask_login
|
||||
import flask_wtf
|
||||
import re
|
||||
import string
|
||||
import ipaddress
|
||||
|
||||
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):
|
||||
""" Allow for multiple emails selection from current user choices and
|
||||
additional email addresses.
|
||||
@@ -68,7 +74,7 @@ class DomainForm(flask_wtf.FlaskForm):
|
||||
class DomainSignupForm(flask_wtf.FlaskForm):
|
||||
name = fields.StringField(_('Domain name'), [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')])
|
||||
pwned = fields.HiddenField(label='', default=-1)
|
||||
captcha = flask_wtf.RecaptchaField()
|
||||
@@ -90,7 +96,7 @@ class RelayForm(flask_wtf.FlaskForm):
|
||||
class UserForm(flask_wtf.FlaskForm):
|
||||
localpart = fields.StringField(_('E-mail'), [validators.DataRequired(), validators.Regexp(LOCALPART_REGEX)])
|
||||
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)
|
||||
quota_bytes = fields_.IntegerSliderField(_('Quota'), default=10**9)
|
||||
enable_imap = fields.BooleanField(_('Allow IMAP access'), default=True)
|
||||
@@ -105,7 +111,7 @@ class UserForm(flask_wtf.FlaskForm):
|
||||
|
||||
class UserSignupForm(flask_wtf.FlaskForm):
|
||||
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')])
|
||||
pwned = fields.HiddenField(label='', default=-1)
|
||||
submit = fields.SubmitField(_('Sign up'))
|
||||
@@ -132,7 +138,7 @@ class UserPasswordForm(flask_wtf.FlaskForm):
|
||||
|
||||
class UserPasswordChangeForm(flask_wtf.FlaskForm):
|
||||
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()])
|
||||
pwned = fields.HiddenField(label='', default=-1)
|
||||
submit = fields.SubmitField(_('Update password'))
|
||||
|
||||
@@ -63,4 +63,36 @@
|
||||
</pre></td>
|
||||
</tr>
|
||||
{%- 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 %}
|
||||
|
||||
@@ -1,37 +1,53 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2022 ORGANIZATION
|
||||
# Copyright (C) 2024 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:80 mailu/ui/forms.py:93
|
||||
#: mailu/ui/forms.py:112 mailu/ui/forms.py:166
|
||||
#: mailu/ui/templates/client.html:32 mailu/ui/templates/client.html:57
|
||||
#: mailu/sso/forms.py:9 mailu/ui/forms.py:92 mailu/ui/forms.py:108
|
||||
#: mailu/ui/forms.py:128 mailu/ui/forms.py:135 mailu/ui/forms.py:197
|
||||
#: mailu/ui/templates/client.html:31 mailu/ui/templates/client.html:56
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/sso/forms.py:10 mailu/sso/forms.py:11 mailu/sso/templates/login.html:4
|
||||
#: mailu/ui/templates/sidebar.html:142
|
||||
#: mailu/sso/forms.py:11 mailu/sso/forms.py:12 mailu/sso/templates/login.html:4
|
||||
#: mailu/sso/templates/sidebar_sso.html:42 mailu/ui/templates/sidebar.html:144
|
||||
msgid "Sign in"
|
||||
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
|
||||
msgid "Admin page for"
|
||||
msgstr ""
|
||||
@@ -44,255 +60,301 @@ msgstr ""
|
||||
msgid "change language"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/sso/templates/sidebar_sso.html:49 mailu/ui/forms.py:95
|
||||
#: mailu/ui/templates/sidebar.html:149 mailu/ui/templates/user/signup.html:4
|
||||
#: mailu/sso/templates/sidebar_sso.html:55 mailu/ui/forms.py:111
|
||||
#: mailu/ui/templates/sidebar.html:151 mailu/ui/templates/user/signup.html:4
|
||||
#: mailu/ui/templates/user/signup_domain.html:4
|
||||
msgid "Sign up"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:45
|
||||
#: mailu/ui/forms.py:47
|
||||
msgid "Invalid list of folders."
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:56
|
||||
msgid "Confirm"
|
||||
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/list.html:19 mailu/ui/templates/relay/list.html:18
|
||||
msgid "Domain name"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:49
|
||||
#: mailu/ui/forms.py:60
|
||||
msgid "Maximum user count"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:50
|
||||
#: mailu/ui/forms.py:61
|
||||
msgid "Maximum alias count"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:51
|
||||
#: mailu/ui/forms.py:62
|
||||
msgid "Maximum user quota"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:52
|
||||
#: mailu/ui/forms.py:63 mailu/ui/templates/domain/list.html:24
|
||||
msgid "Enable sign-up"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:53 mailu/ui/forms.py:74 mailu/ui/forms.py:86
|
||||
#: mailu/ui/forms.py:132 mailu/ui/forms.py:144
|
||||
#: mailu/ui/templates/alias/list.html:22 mailu/ui/templates/domain/list.html:22
|
||||
#: mailu/ui/templates/relay/list.html:20 mailu/ui/templates/token/list.html:20
|
||||
#: mailu/ui/forms.py:64 mailu/ui/forms.py:86 mailu/ui/forms.py:100
|
||||
#: mailu/ui/forms.py:155 mailu/ui/forms.py:175
|
||||
#: 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:21
|
||||
#: mailu/ui/templates/user/list.html:24
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:54 mailu/ui/forms.py:68 mailu/ui/forms.py:75
|
||||
#: mailu/ui/forms.py:88 mailu/ui/forms.py:136 mailu/ui/forms.py:145
|
||||
#: mailu/ui/forms.py:65 mailu/ui/forms.py:80 mailu/ui/forms.py:87
|
||||
#: mailu/ui/forms.py:103 mailu/ui/forms.py:159 mailu/ui/forms.py:176
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:59
|
||||
#: mailu/ui/forms.py:70
|
||||
msgid "Initial admin"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:60
|
||||
#: mailu/ui/forms.py:71
|
||||
msgid "Admin password"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:63
|
||||
#: mailu/ui/forms.py:75
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:67
|
||||
#: mailu/ui/forms.py:79
|
||||
msgid "Alternative name"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:72
|
||||
#: mailu/ui/forms.py:84
|
||||
msgid "Relayed domain name"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:82 mailu/ui/templates/user/list.html:23
|
||||
#: mailu/ui/templates/user/signup_domain.html:16
|
||||
#: mailu/ui/forms.py:95 mailu/ui/templates/domain/list.html:22
|
||||
#: mailu/ui/templates/user/list.html:23
|
||||
#: mailu/ui/templates/user/signup_domain.html:17
|
||||
msgid "Quota"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:83
|
||||
#: mailu/ui/forms.py:96
|
||||
msgid "Allow IMAP access"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:84
|
||||
#: mailu/ui/forms.py:97
|
||||
msgid "Allow POP3 access"
|
||||
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
|
||||
msgid "Displayed name"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:87
|
||||
#: mailu/ui/forms.py:101
|
||||
msgid "Enabled"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:102
|
||||
#: mailu/ui/forms.py:118
|
||||
msgid "Enable spam filter"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:103
|
||||
#: mailu/ui/forms.py:119
|
||||
msgid "Enable marking spam mails as read"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:104
|
||||
#: mailu/ui/forms.py:120
|
||||
msgid "Spam filter tolerance"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:105
|
||||
#: mailu/ui/forms.py:121
|
||||
msgid "Enable forwarding"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:106
|
||||
#: mailu/ui/forms.py:122
|
||||
msgid "Keep a copy of the emails"
|
||||
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
|
||||
msgid "Destination"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:108
|
||||
#: mailu/ui/forms.py:124
|
||||
msgid "Save settings"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:113
|
||||
#: mailu/ui/forms.py:129 mailu/ui/forms.py:136
|
||||
msgid "Password check"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:118
|
||||
#: mailu/ui/forms.py:141
|
||||
msgid "Enable automatic reply"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:119
|
||||
#: mailu/ui/forms.py:142
|
||||
msgid "Reply subject"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:120
|
||||
#: mailu/ui/forms.py:143
|
||||
msgid "Reply body"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:122
|
||||
#: mailu/ui/forms.py:145
|
||||
msgid "Start of vacation"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:123
|
||||
#: mailu/ui/forms.py:146
|
||||
msgid "End of vacation"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:124
|
||||
#: mailu/ui/forms.py:147
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:129
|
||||
#: mailu/ui/forms.py:152
|
||||
msgid "Your token (write it down, as it will never be displayed again)"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:140
|
||||
#: mailu/ui/forms.py:171
|
||||
msgid "Alias"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:142
|
||||
#: mailu/ui/forms.py:173
|
||||
msgid "Use SQL LIKE Syntax (e.g. for catch-all aliases)"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:149
|
||||
#: mailu/ui/forms.py:180
|
||||
msgid "Admin email"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:154
|
||||
#: mailu/ui/forms.py:185
|
||||
msgid "Manager email"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:159
|
||||
#: mailu/ui/forms.py:190
|
||||
msgid "Protocol"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:162
|
||||
#: mailu/ui/forms.py:193
|
||||
msgid "Hostname or IP"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:163 mailu/ui/templates/client.html:20
|
||||
#: mailu/ui/templates/client.html:45
|
||||
#: mailu/ui/forms.py:194 mailu/ui/templates/client.html:19
|
||||
#: mailu/ui/templates/client.html:44
|
||||
msgid "TCP port"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:164
|
||||
#: mailu/ui/forms.py:195
|
||||
msgid "Enable TLS"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:165 mailu/ui/templates/client.html:28
|
||||
#: mailu/ui/templates/client.html:53 mailu/ui/templates/fetch/list.html:21
|
||||
#: mailu/ui/forms.py:196 mailu/ui/templates/client.html:27
|
||||
#: mailu/ui/templates/client.html:52 mailu/ui/templates/fetch/list.html:21
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:167
|
||||
#: mailu/ui/forms.py:198
|
||||
msgid "Keep emails on the server"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:174
|
||||
#: mailu/ui/forms.py:207
|
||||
msgid "Announcement body"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/forms.py:176
|
||||
#: mailu/ui/forms.py:209
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
|
||||
@@ -300,7 +362,7 @@ msgstr ""
|
||||
msgid "Public announcement"
|
||||
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
|
||||
msgid "Antispam"
|
||||
msgstr ""
|
||||
@@ -313,22 +375,30 @@ msgstr ""
|
||||
msgid "configure your email client"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/client.html:13
|
||||
#: mailu/ui/templates/client.html:12
|
||||
msgid "Incoming mail"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/client.html:38
|
||||
#: mailu/ui/templates/client.html:37
|
||||
msgid "Outgoing mail"
|
||||
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
|
||||
msgid "Confirm action"
|
||||
msgstr ""
|
||||
@@ -346,7 +416,7 @@ msgstr ""
|
||||
msgid "An error occurred while talking to the Docker server."
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/macros.html:129
|
||||
#: mailu/ui/templates/macros.html:128
|
||||
msgid "copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
@@ -354,48 +424,48 @@ msgstr ""
|
||||
msgid "My account"
|
||||
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"
|
||||
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"
|
||||
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
|
||||
msgid "Fetched accounts"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:56
|
||||
#: mailu/ui/templates/sidebar.html:58
|
||||
msgid "Administration"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:62
|
||||
#: mailu/ui/templates/sidebar.html:64
|
||||
msgid "Announcement"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:68
|
||||
#: mailu/ui/templates/sidebar.html:70
|
||||
msgid "Administrators"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:74
|
||||
#: mailu/ui/templates/sidebar.html:76
|
||||
msgid "Relayed domains"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:88
|
||||
#: mailu/ui/templates/sidebar.html:90
|
||||
msgid "Mail domains"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:99
|
||||
#: mailu/ui/templates/sidebar.html:101
|
||||
msgid "Webmail"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/sidebar.html:135
|
||||
#: mailu/ui/templates/sidebar.html:137
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
@@ -429,12 +499,18 @@ msgstr ""
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:32
|
||||
#: mailu/ui/templates/alternative/list.html:29
|
||||
#: mailu/ui/templates/domain/list.html:34 mailu/ui/templates/fetch/list.html:34
|
||||
#: mailu/ui/templates/admin/list.html:25 mailu/ui/templates/alias/list.html:31
|
||||
#: mailu/ui/templates/domain/list.html:35 mailu/ui/templates/fetch/list.html:35
|
||||
#: mailu/ui/templates/manager/list.html:27
|
||||
#: mailu/ui/templates/relay/list.html:30 mailu/ui/templates/token/list.html:30
|
||||
#: mailu/ui/templates/user/list.html:34
|
||||
#: mailu/ui/templates/relay/list.html:29 mailu/ui/templates/user/list.html:33
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
@@ -456,26 +532,20 @@ msgstr ""
|
||||
|
||||
#: mailu/ui/templates/alias/list.html:23
|
||||
#: mailu/ui/templates/alternative/list.html:21
|
||||
#: mailu/ui/templates/domain/list.html:23 mailu/ui/templates/fetch/list.html:25
|
||||
#: mailu/ui/templates/relay/list.html:21 mailu/ui/templates/token/list.html:22
|
||||
#: 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:23
|
||||
#: mailu/ui/templates/user/list.html:25
|
||||
msgid "Created"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/alias/list.html:24
|
||||
#: mailu/ui/templates/alternative/list.html:22
|
||||
#: mailu/ui/templates/domain/list.html:24 mailu/ui/templates/fetch/list.html:26
|
||||
#: mailu/ui/templates/relay/list.html:22 mailu/ui/templates/token/list.html:23
|
||||
#: 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:24
|
||||
#: mailu/ui/templates/user/list.html:26
|
||||
msgid "Last edit"
|
||||
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
|
||||
msgid "Create alternative domain"
|
||||
msgstr ""
|
||||
@@ -509,6 +579,10 @@ msgstr ""
|
||||
msgid "Generate keys"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:19
|
||||
msgid "Download zonefile"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:30
|
||||
msgid "DNS MX entry"
|
||||
msgstr ""
|
||||
@@ -518,22 +592,18 @@ msgid "DNS SPF entries"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:40
|
||||
msgid "DKIM public key"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:44
|
||||
msgid "DNS DKIM entry"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:48
|
||||
#: mailu/ui/templates/domain/details.html:44
|
||||
msgid "DNS DMARC entry"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:58
|
||||
#: mailu/ui/templates/domain/details.html:53
|
||||
msgid "DNS TLSA entry"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/details.html:63
|
||||
#: mailu/ui/templates/domain/details.html:58
|
||||
msgid "DNS client auto-configuration entries"
|
||||
msgstr ""
|
||||
|
||||
@@ -557,26 +627,36 @@ msgstr ""
|
||||
msgid "Alias count"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:31
|
||||
#: mailu/ui/templates/domain/list.html:33
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:38
|
||||
#: mailu/ui/templates/domain/list.html:40
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:39
|
||||
#: mailu/ui/templates/domain/list.html:41
|
||||
msgid "Aliases"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:40
|
||||
#: mailu/ui/templates/domain/list.html:42
|
||||
msgid "Managers"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/domain/list.html:42
|
||||
#: mailu/ui/templates/domain/list.html:44
|
||||
msgid "Alternatives"
|
||||
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
|
||||
msgid ""
|
||||
"In order to register a new domain, you must first setup the\n"
|
||||
@@ -615,21 +695,21 @@ msgid "Keep emails"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/fetch/list.html:23
|
||||
msgid "Last check"
|
||||
msgid "Rescan emails"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
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
|
||||
msgid "Add a manager"
|
||||
msgstr ""
|
||||
@@ -666,6 +746,10 @@ msgstr ""
|
||||
msgid "New token"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/token/list.html:20
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/user/create.html:4
|
||||
msgid "New user"
|
||||
msgstr ""
|
||||
@@ -674,7 +758,7 @@ msgstr ""
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/user/create.html:23
|
||||
#: mailu/ui/templates/user/create.html:24
|
||||
msgid "Features and quotas"
|
||||
msgstr ""
|
||||
|
||||
@@ -714,11 +798,11 @@ msgstr ""
|
||||
msgid "pick a domain for the new account"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/user/signup_domain.html:14
|
||||
#: mailu/ui/templates/user/signup_domain.html:15
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
#: mailu/ui/templates/user/signup_domain.html:15
|
||||
#: mailu/ui/templates/user/signup_domain.html:16
|
||||
msgid "Available slots"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# base system image (intermediate)
|
||||
# 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.
|
||||
ARG DISTRO=ghcr.io/mailu/alpine:3.20.3
|
||||
ARG DISTRO=ghcr.io/mailu/alpine:3.21.0
|
||||
FROM $DISTRO as system
|
||||
|
||||
ENV TZ=Etc/UTC LANG=C.UTF-8
|
||||
@@ -15,7 +15,7 @@ RUN set -euxo pipefail \
|
||||
; addgroup -Sg ${MAILU_GID} 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 \
|
||||
; ! [[ "$(uname -m)" == x86_64 ]] \
|
||||
; ! [[ "$(apk --print-arch)" == x86_64 ]] \
|
||||
|| apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing hardened-malloc
|
||||
|
||||
WORKDIR /app
|
||||
@@ -27,7 +27,7 @@ CMD /bin/bash
|
||||
FROM system as build
|
||||
|
||||
ARG MAILU_DEPS=prod
|
||||
ARG SNUFFLEUPAGUS_VERSION=0.10.0
|
||||
ARG SNUFFLEUPAGUS_VERSION=0.11.0
|
||||
|
||||
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"
|
||||
|
||||
RUN set -euxo pipefail \
|
||||
; machine="$(uname -m)" \
|
||||
; deps="build-base gcc libffi-dev python3-dev" \
|
||||
; machine="$(apk --print-arch)" \
|
||||
; deps="build-base gcc libffi-dev python3-dev mariadb-dev" \
|
||||
; [[ "${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} \
|
||||
; [[ "${machine}" == armv7* ]] && \
|
||||
mkdir -p /root/.cargo/registry/index && \
|
||||
|
||||
@@ -57,6 +57,11 @@ class LogFilter(object):
|
||||
self.stream.flush()
|
||||
|
||||
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:
|
||||
lines = f.readlines()
|
||||
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'))
|
||||
signal.signal(signal.SIGTERM, sigterm_handler)
|
||||
|
||||
if not 'LD_PRELOAD' in os.environ and _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')
|
||||
os.environ['LD_PRELOAD'] = '/usr/lib/libhardened_malloc.so'
|
||||
if _is_compatible_with_hardened_malloc():
|
||||
if not 'LD_PRELOAD' in os.environ and _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')
|
||||
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 """
|
||||
if 'SECRET_KEY_FILE' in os.environ:
|
||||
|
||||
@@ -22,6 +22,7 @@ gunicorn
|
||||
idna
|
||||
itsdangerous
|
||||
limits
|
||||
mariadb
|
||||
marshmallow
|
||||
marshmallow-sqlalchemy
|
||||
mysql-connector-python
|
||||
@@ -45,6 +46,7 @@ watchdog
|
||||
|
||||
# core/postfix
|
||||
postfix-mta-sts-resolver
|
||||
uvloop
|
||||
|
||||
# core/oletools
|
||||
python-magic
|
||||
|
||||
@@ -42,6 +42,7 @@ jsonschema==4.22.0
|
||||
jsonschema-specifications==2023.12.1
|
||||
limits==3.11.0
|
||||
Mako==1.3.3
|
||||
mariadb==1.1.11
|
||||
MarkupSafe==2.1.5
|
||||
marshmallow==3.21.2
|
||||
marshmallow-sqlalchemy==1.0.0
|
||||
@@ -79,6 +80,7 @@ tabulate==0.9.0
|
||||
tenacity==8.2.3
|
||||
typing_extensions==4.11.0
|
||||
urllib3==2.2.2
|
||||
uvloop==0.21.0
|
||||
validators==0.28.1
|
||||
visitor==0.1.3
|
||||
vobject==0.9.7
|
||||
|
||||
@@ -17,8 +17,7 @@ ARG VERSION
|
||||
LABEL version=$VERSION
|
||||
|
||||
RUN set -euxo pipefail \
|
||||
; apk add --no-cache certbot nginx nginx-mod-http-brotli nginx-mod-mail openssl \
|
||||
; 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
|
||||
; 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
|
||||
|
||||
COPY conf/ /conf/
|
||||
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 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
|
||||
authentication is needed or increased when additional protection is desired.
|
||||
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
|
||||
systemctl kill -s HUP rsyslog.service
|
||||
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
|
||||
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 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
|
||||
and add a section like follows:
|
||||
@@ -102,7 +123,7 @@ and then add the following to the front section:
|
||||
|
||||
in mailu.env:
|
||||
|
||||
.. code-block:: docker
|
||||
.. code-block:: bash
|
||||
|
||||
REAL_IP_FROM=192.168.203.0/24
|
||||
PROXY_PROTOCOL=25,443,465,993,995,4190
|
||||
@@ -111,3 +132,164 @@ in mailu.env:
|
||||
WEBROOT_REDIRECT=/sso/login
|
||||
|
||||
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
|
||||
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
|
||||
emails. Some instructions are provided on the matter in the article
|
||||
:ref:`dns_setup`.
|
||||
|
||||
@@ -217,7 +217,7 @@ services:
|
||||
# Optional services
|
||||
{% if antivirus_enabled %}
|
||||
antivirus:
|
||||
image: clamav/clamav-debian:1.2.3-45
|
||||
image: clamav/clamav-debian:1.4
|
||||
restart: always
|
||||
logging:
|
||||
driver: journald
|
||||
@@ -226,13 +226,7 @@ services:
|
||||
networks:
|
||||
- clamav
|
||||
volumes:
|
||||
- "{{ root }}/filter/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
|
||||
- "{{ root }}/clamav:/var/lib/clamav"
|
||||
{% endif %}
|
||||
|
||||
{% 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>
|
||||
|
||||
<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>.
|
||||
<a href="https://mailu.io/{{ version }}/compose/setup.html#bind-address">How to find these addresses.</a></p>
|
||||
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> <a href="https://mailu.io/{{ version }}/faq.html#how-to-make-ipv6-work">How to disable userland-proxy.</a></p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>IPv4 listen address</label>
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
set -e
|
||||
echo "Users tests ..."
|
||||
# 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
|
||||
echo "The above error was intended!"
|
||||
# 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
|
||||
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
|
||||
|
||||
@@ -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
|
||||
users:
|
||||
- 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
|
||||
aliases:
|
||||
- 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
|
||||
users:
|
||||
- localpart: replyuser
|
||||
|
||||
@@ -99,7 +99,7 @@ services:
|
||||
networks:
|
||||
- clamav
|
||||
volumes:
|
||||
- "/mailu/filter/clamav:/var/lib/clamav"
|
||||
- "/mailu/clamav:/var/lib/clamav"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "kill -0 `cat /tmp/clamd.pid` && kill -0 `cat /tmp/freshclam.pid`"]
|
||||
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
|
||||
|
||||
# roundcube
|
||||
ENV ROUNDCUBE_URL=https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz
|
||||
ENV CARDDAV_URL=https://github.com/mstilkerich/rcmcarddav/releases/download/v5.1.0/carddav-v5.1.0.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
|
||||
|
||||
RUN set -euxo pipefail \
|
||||
; 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
|
||||
# only enable the ones you're using.
|
||||
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.
|
||||
sp.sloppy_comparison.enable();
|
||||
|
||||
Reference in New Issue
Block a user