2480: Fix a bunch of typos r=mergify[bot] a=DjVinnii

## What type of PR?

 documentation

## What does this PR do?
Fix a bunch of typos in a variety of files

### Related issue(s)
- None

## Prerequisites
Before we can consider review and merge, please make sure the following list is done and checked.
If an entry in not applicable, you can check it or remove it from the list.

- [x] In case of feature or enhancement: documentation updated accordingly
- [x] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/workflow.html#changelog) entry file.


Co-authored-by: Vincent Kling <v.kling@vinniict.nl>
main
bors[bot] 2 years ago committed by GitHub
commit bbbed4d9ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4,4 +4,4 @@ This project is open source, and your contributions are all welcome. There are m
2. contribute code and/or configuration to the repository (see [the development guidelines](https://mailu.io/master/contributors/workflow.html) for details); 2. contribute code and/or configuration to the repository (see [the development guidelines](https://mailu.io/master/contributors/workflow.html) for details);
3. contribute localization to your native language (see [the localization docs](https://mailu.io/master/contributors/localization.html) for details); 3. contribute localization to your native language (see [the localization docs](https://mailu.io/master/contributors/localization.html) for details);
Either way, keep in mind that the code you write or the translation you produce muts be licensed under the same conditions as the project itself. Additionally, all contributors are considered equal co-authors of the project. Either way, keep in mind that the code you write or the translation you produce must be licensed under the same conditions as the project itself. Additionally, all contributors are considered equal co-authors of the project.

@ -6,7 +6,7 @@ To be able to help you best, we need some more information.
## Before you open your issue ## Before you open your issue
- [ ] Check if no issue or pull-request for this already exists. - [ ] Check if no issue or pull-request for this already exists.
- [ ] Check [documentation](https://mailu.io/master/) and [FAQ](https://mailu.io/master/faq.html). (Tip, use the search function on the documentation page) - [ ] Check [documentation](https://mailu.io/master/) and [FAQ](https://mailu.io/master/faq.html). (Tip, use the search function on the documentation page)
- [ ] You understand `Mailu` is made by volunteers in their **free time** — be conscise, civil and accept that delays can occur. - [ ] You understand `Mailu` is made by volunteers in their **free time** — be concise, civil and accept that delays can occur.
- [ ] The title of the issue should be short and simple. It should contain specific terms related to the actual issue. Be specific while writing the title. - [ ] The title of the issue should be short and simple. It should contain specific terms related to the actual issue. Be specific while writing the title.
## Environment & Versions ## Environment & Versions

@ -142,7 +142,7 @@ def get_server(protocol, authenticated=False):
else: else:
hostname, port = extract_host_port(app.config['SMTP_ADDRESS'], 25) hostname, port = extract_host_port(app.config['SMTP_ADDRESS'], 25)
try: try:
# test if hostname is already resolved to an ip adddress # test if hostname is already resolved to an ip address
ipaddress.ip_address(hostname) ipaddress.ip_address(hostname)
except: except:
# hostname is not an ip address - so we need to resolve it # hostname is not an ip address - so we need to resolve it

@ -968,7 +968,7 @@ class BaseSchema(ma.SQLAlchemyAutoSchema, Storage):
) from exc ) from exc
# sort list of new values # sort list of new values
data[key] = sorted(new_value) data[key] = sorted(new_value)
# log backref modification not catched by modify hook # log backref modification not caught by modify hook
if isinstance(self.fields[key], RelatedList): if isinstance(self.fields[key], RelatedList):
if callback := self.context.get('callback'): if callback := self.context.get('callback'):
before = {str(v) for v in getattr(instance, key)} before = {str(v) for v in getattr(instance, key)}

@ -660,7 +660,7 @@ msgid "New relay domain"
msgstr "Nou domini llegat (relayed)" msgstr "Nou domini llegat (relayed)"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Editeu domini llegat (relayed)" msgstr "Editeu domini llegat (relayed)"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -649,7 +649,7 @@ msgid "New relay domain"
msgstr "" msgstr ""
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "" msgstr ""
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -655,7 +655,7 @@ msgid "New relay domain"
msgstr "Neue Relay-Domain" msgstr "Neue Relay-Domain"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Relay-Domain bearbeiten" msgstr "Relay-Domain bearbeiten"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -649,7 +649,7 @@ msgid "New relay domain"
msgstr "New relay domain" msgstr "New relay domain"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "" msgstr ""
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -651,7 +651,7 @@ msgid "New relay domain"
msgstr "Nuevo dominio externo (relay)" msgstr "Nuevo dominio externo (relay)"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Editar dominio externo (relay)" msgstr "Editar dominio externo (relay)"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -649,7 +649,7 @@ msgid "New relay domain"
msgstr "Igorritako domeinu berria" msgstr "Igorritako domeinu berria"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Editatu igorritako domeinua" msgstr "Editatu igorritako domeinua"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -653,7 +653,7 @@ msgid "New relay domain"
msgstr "Nouveau domaine relayé" msgstr "Nouveau domaine relayé"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Modifier le domaine relayé" msgstr "Modifier le domaine relayé"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -658,7 +658,7 @@ msgid "New relay domain"
msgstr "שם תחום מועבר" msgstr "שם תחום מועבר"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "עריכת שמות תחום מועברים" msgstr "עריכת שמות תחום מועברים"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -652,7 +652,7 @@ msgid "New relay domain"
msgstr "Új továbbító tartomány" msgstr "Új továbbító tartomány"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Továbbított tartomány szerkesztése" msgstr "Továbbított tartomány szerkesztése"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -648,7 +648,7 @@ msgid "New relay domain"
msgstr "" msgstr ""
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "" msgstr ""
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -655,7 +655,7 @@ msgid "New relay domain"
msgstr "Nuovo dominio affidato" msgstr "Nuovo dominio affidato"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Editare dominio affidato" msgstr "Editare dominio affidato"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -649,7 +649,7 @@ msgid "New relay domain"
msgstr "リレードメイン名を追加" msgstr "リレードメイン名を追加"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "リレードメイン名を編集" msgstr "リレードメイン名を編集"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -657,7 +657,7 @@ msgid "New relay domain"
msgstr "Nytt videresendt domene" msgstr "Nytt videresendt domene"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Endre videresendt domene" msgstr "Endre videresendt domene"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -650,7 +650,7 @@ msgid "New relay domain"
msgstr "Nieuw relay domein" msgstr "Nieuw relay domein"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Bewerk relay domein" msgstr "Bewerk relay domein"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -659,7 +659,7 @@ msgstr "Nowa domena do przekierowania"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
#, fuzzy #, fuzzy
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Edycja domeny" msgstr "Edycja domeny"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -650,7 +650,7 @@ msgid "New relay domain"
msgstr "Novo domínio para encaminhamento" msgstr "Novo domínio para encaminhamento"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Editar domínio de encaminhamento" msgstr "Editar domínio de encaminhamento"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -656,7 +656,7 @@ msgid "New relay domain"
msgstr "Новый релейный домен" msgstr "Новый релейный домен"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Изменить релейный домен" msgstr "Изменить релейный домен"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -645,7 +645,7 @@ msgid "New relay domain"
msgstr "Ny relä-domän" msgstr "Ny relä-domän"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "Redigera reläade domäner" msgstr "Redigera reläade domäner"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -646,7 +646,7 @@ msgid "New relay domain"
msgstr "新的中继域" msgstr "新的中继域"
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "编辑中继域" msgstr "编辑中继域"
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -1,7 +1,7 @@
{%- extends "form.html" %} {%- extends "form.html" %}
{%- block title %} {%- block title %}
{% trans %}Edit relayd domain{% endtrans %} {% trans %}Edit relayed domain{% endtrans %}
{%- endblock %} {%- endblock %}
{%- block subtitle %} {%- block subtitle %}

@ -472,7 +472,7 @@ class MailuSessionExtension:
redis.StrictRedis().from_url(app.config['SESSION_STORAGE_URL']) redis.StrictRedis().from_url(app.config['SESSION_STORAGE_URL'])
) )
# clean expired sessions oonce on first use in case lifetime was changed # clean expired sessions once on first use in case lifetime was changed
def cleaner(): def cleaner():
with cleaned.get_lock(): with cleaned.get_lock():
if not cleaned.value: if not cleaned.value:

@ -647,7 +647,7 @@ msgid "New relay domain"
msgstr "" msgstr ""
#: mailu/ui/templates/relay/edit.html:4 #: mailu/ui/templates/relay/edit.html:4
msgid "Edit relayd domain" msgid "Edit relayed domain"
msgstr "" msgstr ""
#: mailu/ui/templates/relay/list.html:4 #: mailu/ui/templates/relay/list.html:4

@ -15,7 +15,7 @@ password = os.environ.get("INITIAL_ADMIN_PW")
if account is not None and domain is not None and password is not None: if account is not None and domain is not None and password is not None:
mode = os.environ.get("INITIAL_ADMIN_MODE", default="ifmissing") mode = os.environ.get("INITIAL_ADMIN_MODE", default="ifmissing")
log.info("Creating initial admin accout %s@%s with mode %s",account,domain,mode) log.info("Creating initial admin account %s@%s with mode %s", account, domain, mode)
os.system("flask mailu admin %s %s '%s' --mode %s" % (account, domain, password, mode)) os.system("flask mailu admin %s %s '%s' --mode %s" % (account, domain, password, mode))
def test_DNS(): def test_DNS():
@ -37,7 +37,7 @@ def test_DNS():
try: try:
result = resolver.resolve('example.org', dns.rdatatype.A, dns.rdataclass.IN, lifetime=10) result = resolver.resolve('example.org', dns.rdatatype.A, dns.rdataclass.IN, lifetime=10)
except Exception as e: except Exception as e:
log.critical("Your DNS resolver at %s is not working (%s). Please see https://mailu.io/master/faq.html#the-admin-container-won-t-start-and-its-log-says-critical-your-dns-resolver-isn-t-doing-dnssec-validation", ns, e); log.critical("Your DNS resolver at %s is not working (%s). Please see https://mailu.io/master/faq.html#the-admin-container-won-t-start-and-its-log-says-critical-your-dns-resolver-isn-t-doing-dnssec-validation", ns, e)
else: else:
if result.response.flags & dns.flags.AD: if result.response.flags & dns.flags.AD:
break break

@ -151,7 +151,7 @@ plugin {
# Send vacation replies even for aliases # Send vacation replies even for aliases
# See the Pigeonhole documentation about warnings: http://wiki2.dovecot.org/Pigeonhole/Sieve/Extensions/Vacation # See the Pigeonhole documentation about warnings: http://wiki2.dovecot.org/Pigeonhole/Sieve/Extensions/Vacation
# It appears that our implemntation of mail delivery meets criteria of section 4.5 # It appears that our implementation of mail delivery meets criteria of section 4.5
# from RFC 5230 and that disabling the recipient checks is not an issue here. # from RFC 5230 and that disabling the recipient checks is not an issue here.
sieve_vacation_dont_check_recipient = yes sieve_vacation_dont_check_recipient = yes

@ -287,7 +287,7 @@ mail {
ssl_session_cache shared:SSLMAIL:50m; ssl_session_cache shared:SSLMAIL:50m;
{% endif %} {% endif %}
# Advertise real capabilites of backends (postfix/dovecot) # Advertise real capabilities of backends (postfix/dovecot)
smtp_capabilities PIPELINING SIZE {{ MESSAGE_SIZE_LIMIT }} ETRN ENHANCEDSTATUSCODES 8BITMIME DSN; smtp_capabilities PIPELINING SIZE {{ MESSAGE_SIZE_LIMIT }} ETRN ENHANCEDSTATUSCODES 8BITMIME DSN;
pop3_capabilities TOP UIDL RESP-CODES PIPELINING AUTH-RESP-CODE USER; pop3_capabilities TOP UIDL RESP-CODES PIPELINING AUTH-RESP-CODE USER;
imap_capabilities IMAP4 IMAP4rev1 UIDPLUS SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+; imap_capabilities IMAP4 IMAP4rev1 UIDPLUS SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+;

@ -8,7 +8,7 @@ How does spam filtering work in Mailu?
Mailu uses Rspamd for spam filtering. Rspamd is a Fast, free and open-source spam filtering system. Mailu uses Rspamd for spam filtering. Rspamd is a Fast, free and open-source spam filtering system.
Rspamd rejects non-compliant email messages and email messages that contain virusses. In Mailu Rspamd uses a scoring scale from 0 to 15. The following values are the default values, and can be changed inside the Rspamd WebUI under the tab configuration: Rspamd rejects non-compliant email messages and email messages that contain viruses. In Mailu Rspamd uses a scoring scale from 0 to 15. The following values are the default values, and can be changed inside the Rspamd WebUI under the tab configuration:
* Email messages with a score of 15 or higher will be rejected. * Email messages with a score of 15 or higher will be rejected.

@ -31,7 +31,7 @@ all images from the mailu docker repository.
Build manually Build manually
-------------- --------------
It is possible to build the images manually. There are two possiblities for this. It is possible to build the images manually. There are two possibilities for this.
Github actions Github actions
`````````````` ``````````````

@ -153,7 +153,7 @@ REAL_IP_HEADER=
# IPs for nginx set_real_ip_from (CIDR list separated by commas) # IPs for nginx set_real_ip_from (CIDR list separated by commas)
REAL_IP_FROM= REAL_IP_FROM=
# choose wether mailu bounces (no) or rejects (yes) mail when recipient is unknown (value: yes, no) # choose whether mailu bounces (no) or rejects (yes) mail when recipient is unknown (value: yes, no)
REJECT_UNLISTED_RECIPIENT= REJECT_UNLISTED_RECIPIENT=
# Log level threshold in start.py (value: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET) # Log level threshold in start.py (value: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET)

@ -92,7 +92,7 @@ about setting up a proper Docker install. Default configuration should be
suited for Mailu. suited for Mailu.
Additionally, you must install ``docker-compose`` by following the instructions Additionally, you must install ``docker-compose`` by following the instructions
from the `Docker website`_ if you plan on using the CompComposesoe flavor. Compose is a from the `Docker website`_ if you plan on using the Compose flavor. Compose is a
management tool for Docker, especially suited for multiple containers systems management tool for Docker, especially suited for multiple containers systems
like Mailu. like Mailu.

@ -41,7 +41,7 @@ values:
.. note:: .. note::
When using *Letsencrypt!* you have to make sure that the DNS ``A`` and ``AAAA`` records for the When using *Letsencrypt!* you have to make sure that the DNS ``A`` and ``AAAA`` records for the
all hostnames mentioned in the ``HOSTNAMES`` variable match with the ip adresses of you server. all hostnames mentioned in the ``HOSTNAMES`` variable match with the ip addresses of you server.
Or else certificate generation will fail! See also: :ref:`dns_setup`. Or else certificate generation will fail! See also: :ref:`dns_setup`.
Bind address Bind address

@ -90,10 +90,10 @@ by setting ``OUTBOUND_TLS_LEVEL`` to ``encrypt`` or ``secure``. This setting is
highly recommended if you are using a relayhost that supports TLS but discouraged highly recommended if you are using a relayhost that supports TLS but discouraged
otherwise. ``DEFER_ON_TLS_ERROR`` (default: True) controls whether incomplete otherwise. ``DEFER_ON_TLS_ERROR`` (default: True) controls whether incomplete
policies (DANE without DNSSEC or "testing" MTA-STS policies) will be taken into policies (DANE without DNSSEC or "testing" MTA-STS policies) will be taken into
account and whether emails will be defered if the additional checks enforced by account and whether emails will be deferred if the additional checks enforced by
those policies fail. those policies fail.
Similarily by default nginx uses "opportunistic TLS" for inbound mail. This can be changed Similarly by default nginx uses "opportunistic TLS" for inbound mail. This can be changed
by setting ``INBOUND_TLS_ENFORCE`` to ``True``. Please note that this is forbidden for by setting ``INBOUND_TLS_ENFORCE`` to ``True``. Please note that this is forbidden for
internet facing hosts according to e.g. `RFC 3207`_ , because this prevents MTAs without STARTTLS internet facing hosts according to e.g. `RFC 3207`_ , because this prevents MTAs without STARTTLS
support or e.g. mismatching TLS versions to deliver emails to Mailu. support or e.g. mismatching TLS versions to deliver emails to Mailu.

@ -25,7 +25,7 @@ What features should be included
Mailu is a mail server. That said, mail works in an ecosystem and we should set Mailu is a mail server. That said, mail works in an ecosystem and we should set
clear boundaries on what Mailu is and what it is not. Beyond mail, we include clear boundaries on what Mailu is and what it is not. Beyond mail, we include
features that mail is dependent on in some way, not the other way aroud. features that mail is dependent on in some way, not the other way around.
For instance, we include contact management and a dav service for synchronizing For instance, we include contact management and a dav service for synchronizing
contacts, because sending mail is made easier with manageable contacts. We do contacts, because sending mail is made easier with manageable contacts. We do
@ -97,7 +97,7 @@ lifecycle management.
Anything that is not static, i.e. able to change at runtime, either due to Anything that is not static, i.e. able to change at runtime, either due to
configuration in the admin UI or user behavior, should take advantage of the configuration in the admin UI or user behavior, should take advantage of the
admin API. The `podop` package binds mail specific sofware (Postfix and Dovecot admin API. The `podop` package binds mail specific software (Postfix and Dovecot
at the moment) to the admin API, other containers should use specific API calls. at the moment) to the admin API, other containers should use specific API calls.
What traffic should go through the nginx container What traffic should go through the nginx container
@ -155,7 +155,7 @@ Should we use default configuration
Some tools ship with default configuration, that handles the standard behavior. Some tools ship with default configuration, that handles the standard behavior.
Using this configuration is prone to later changes and unexpected side effects. Using this configuration is prone to later changes and unexpected side effects.
We should always provide all required configuration, including the base files, We should always provide all required configuration, including the base files,
and not rely on default configuration files froms the distribution. and not rely on default configuration files from the distribution.
For that reason, in case the tool looks for specific files and include them For that reason, in case the tool looks for specific files and include them
automatically, we should overwrite them or delete them. automatically, we should overwrite them or delete them.

@ -75,7 +75,7 @@ Supported file extensions are:
Forked projects Forked projects
--------------- ---------------
If you find yourself forking the project for a specific independant purpose If you find yourself forking the project for a specific independent purpose
(commercial use, different philosophy or incompatible point of view), we would (commercial use, different philosophy or incompatible point of view), we would
be glad if you let us know so that we can list interesting known forks and be glad if you let us know so that we can list interesting known forks and
their specific features (and backport some of them if your implementation their specific features (and backport some of them if your implementation

@ -52,7 +52,7 @@ Note that both point to the same mail server hostname, which is unique to your s
Reverse DNS entries Reverse DNS entries
------------------- -------------------
For a mail system, it's higly recommended to set up reverse DNS as well. That means, if your hostname For a mail system, it's highly recommended to set up reverse DNS as well. That means, if your hostname
``mail.mydomain.com`` resolves to ``a.b.c.d``, the IP ``a.b.c.d`` should also resolve back to the same hostname. ``mail.mydomain.com`` resolves to ``a.b.c.d``, the IP ``a.b.c.d`` should also resolve back to the same hostname.
You can verify this with You can verify this with
@ -71,7 +71,7 @@ DKIM/SPF & DMARC Entries
Finally, you'll need to visit the admin dashboard (or use the cli) to regenerate your DMARC, SPF, and DKIM records. Finally, you'll need to visit the admin dashboard (or use the cli) to regenerate your DMARC, SPF, and DKIM records.
Once the DNS changes to your host have propogated (and if SSL / domain rules were setup correctly), visit your admin Once the DNS changes to your host have propagated (and if SSL / domain rules were setup correctly), visit your admin
dashboard at https://example.com/admin/domain/details/example.com. Click on `regenerate keys` and add the required dashboard at https://example.com/admin/domain/details/example.com. Click on `regenerate keys` and add the required
records to your DNS provider. If you've enabled DKIM/SPF / DMARC and haven't added these entries, your mail might records to your DNS provider. If you've enabled DKIM/SPF / DMARC and haven't added these entries, your mail might
not get delivered. not get delivered.

@ -71,11 +71,11 @@ We thank you for your understanding and patience.
I would like to donate (for a feature) I would like to donate (for a feature)
`````````````````````````````````````` ``````````````````````````````````````
We maintain a `Communtity Bridge`_ project through which you can donate. We maintain a `Community Bridge`_ project through which you can donate.
This budget will be used to pay for development of features, mentorship and hopefully future events. This budget will be used to pay for development of features, mentorship and hopefully future events.
Contributing companies or individuals can be paid from this budget to support their development efforts. Contributing companies or individuals can be paid from this budget to support their development efforts.
We are also looking into GitHub's integrated sponorship program for individual contributors. We are also looking into GitHub's integrated sponsorship program for individual contributors.
Once those become available, we will add them to the project. Once those become available, we will add them to the project.
Please click the |sponsor| button on top of our GitHub Page for current possibilities. Please click the |sponsor| button on top of our GitHub Page for current possibilities.
@ -92,7 +92,7 @@ Please click the |sponsor| button on top of our GitHub Page for current possibil
.. _`Enhancement issues`: https://github.com/Mailu/Mailu/issues?q=is%3Aissue+is%3Aopen+label%3Atype%2Fenhancement .. _`Enhancement issues`: https://github.com/Mailu/Mailu/issues?q=is%3Aissue+is%3Aopen+label%3Atype%2Fenhancement
.. _`Feature request issues`: https://github.com/Mailu/Mailu/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Ffeature .. _`Feature request issues`: https://github.com/Mailu/Mailu/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Ffeature
.. _`GitHub`: https://github.com/Mailu/Mailu .. _`GitHub`: https://github.com/Mailu/Mailu
.. _`Communtity Bridge`: https://funding.communitybridge.org/projects/mailu .. _`Community Bridge`: https://funding.communitybridge.org/projects/mailu
Deployment related Deployment related
------------------ ------------------
@ -216,7 +216,7 @@ Therefore it is advised to create backups on a regular base!
A backup MX can be configured as **failover**. For this you need a separate server running A backup MX can be configured as **failover**. For this you need a separate server running
Mailu. On that server, your domains will need to be setup as "Relayed domains", pointing Mailu. On that server, your domains will need to be setup as "Relayed domains", pointing
to you mainr server. MX records for the mail domains with a higher priority number will have to you main server. MX records for the mail domains with a higher priority number will have
to point to this server. Please be aware that a backup MX can act as a `spam magnet`_ (archive.org). to point to this server. Please be aware that a backup MX can act as a `spam magnet`_ (archive.org).
For **service** HA, please see: `How does Mailu scale up?`_ For **service** HA, please see: `How does Mailu scale up?`_
@ -798,7 +798,7 @@ Very often, SPF failure is related to Mailu sending emails with a different IP a
This is mostly due to using a separate IP address for Mailu and still having masquerading NAT setup for Docker, which results in a different outbound IP address. You can simply check the email headers on the receiving side to confirm this. This is mostly due to using a separate IP address for Mailu and still having masquerading NAT setup for Docker, which results in a different outbound IP address. You can simply check the email headers on the receiving side to confirm this.
If you wish to explicitely NAT Mailu outbound traffic, it is usually easy to source-NAT outgoing SMTP traffic using iptables : If you wish to explicitly NAT Mailu outbound traffic, it is usually easy to source-NAT outgoing SMTP traffic using iptables :
``` ```
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 25 -j SNAT --to <your mx ip> iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 25 -j SNAT --to <your mx ip>

@ -99,13 +99,13 @@ A short summary of the new features:
- Domain details page is enhanced with DNS client auto-configuration (RFC6186) entries. - Domain details page is enhanced with DNS client auto-configuration (RFC6186) entries.
- Centralize the authentication of webmails behind the admin interface. - Centralize the authentication of webmails behind the admin interface.
- The new single sign on page opens up the possiblity to introduce 2 factor authentication in the future. - The new single sign on page opens up the possibility to introduce 2 factor authentication in the future.
- Add sending quotas per user (configured in mailu.env). This determines how many emails each user can send every day. - Add sending quotas per user (configured in mailu.env). This determines how many emails each user can send every day.
- Allow specific users to send emails from any address using the WILDCARD_SENDERS setting (mailu.env.). - Allow specific users to send emails from any address using the WILDCARD_SENDERS setting (mailu.env.).
- Use semantic versioning for building releases. - Use semantic versioning for building releases.
- Internal improviments to improve performance of authentication requests. - Internal improvements to improve performance of authentication requests.
- Introduded a language selector for the Admin interface. - Introduced a language selector for the Admin interface.
- Add cli commands config-import and config-export for importing/exporting Mailu config via YAML. - Add cli commands config-import and config-export for importing/exporting Mailu config via YAML.
- Enable support of all hash types passlib supports. - Enable support of all hash types passlib supports.
- Switch to bcrypt_sha256 (stronger hashing of passwords in Mailu database)/ - Switch to bcrypt_sha256 (stronger hashing of passwords in Mailu database)/
@ -274,7 +274,7 @@ Other changes include software updates with some new features in Rainloop
Back-end Back-end
```````` ````````
One of the big tasks was upgradig to latest Alpine (3.10), which is now finished. One of the big tasks was upgrading to latest Alpine (3.10), which is now finished.
Also, a lot was improved about the environment variables meant to provide Also, a lot was improved about the environment variables meant to provide
specific hosts in custom setups. specific hosts in custom setups.
@ -434,7 +434,7 @@ and bug fixes.
**If you are upgrading**, please go through the setup guide and download the **If you are upgrading**, please go through the setup guide and download the
latest ``docker-compose.yml`` and ``.env``, then update them with your latest ``docker-compose.yml`` and ``.env``, then update them with your
sepcific settings, because more than 50% of these templates was rewritten. specific settings, because more than 50% of these templates was rewritten.
You should then be able to pull and start your new e-mail stack with You should then be able to pull and start your new e-mail stack with
no issue, simply remove orphaned container, since some were renamed and others no issue, simply remove orphaned container, since some were renamed and others
were removed (e.g. rmilter): were removed (e.g. rmilter):
@ -522,7 +522,7 @@ When creating an alias, one may now enable the "SQL LIKE" syntax then use
standard SQL wildcards ``%`` and ``_`` to specify matches for a given alias. standard SQL wildcards ``%`` and ``_`` to specify matches for a given alias.
For instance : For instance :
- ``%@domain.tld`` will match any uncatched email sent to that domain (catch-all) - ``%@domain.tld`` will match any uncaught email sent to that domain (catch-all)
- ``support-%@domain.tld`` will match any email sent to an address starting with - ``support-%@domain.tld`` will match any email sent to an address starting with
``support-`` ``support-``
- ``_@domain.tld`` will match any email sent to a one-character address - ``_@domain.tld`` will match any email sent to a one-character address

@ -1,6 +1,6 @@
# Install Mailu on a docker swarm # Install Mailu on a docker swarm
## Prequisites ## Prerequisites
### Swarm ### Swarm
@ -28,7 +28,7 @@ mzrm9nbdggsfz4sgq6dhs5i6n flying-dutchman Ready Active
``` ```
### Volume definition ### Volume definition
For data persistance (the Mailu services might be launched/relaunched on any of the swarm nodes), we need to have Mailu data stored in a manner accessible by every manager or worker in the swarm. For data persistence (the Mailu services might be launched/relaunched on any of the swarm nodes), we need to have Mailu data stored in a manner accessible by every manager or worker in the swarm.
Hereafter we will use a NFS share: Hereafter we will use a NFS share:
```bash ```bash
core@coreos-01 ~ $ showmount -e 192.168.0.30 core@coreos-01 ~ $ showmount -e 192.168.0.30
@ -358,7 +358,7 @@ tbu8ppgsdffj mailu_fetchmail.1 mailu/fetchmail:1.5 coreos-01
``` ```
### Remove the stack ### Remove the stack
Run the follwoing command: Run the following command:
```bash ```bash
core@coreos-01 ~ $ docker stack rm mailu core@coreos-01 ~ $ docker stack rm mailu
``` ```

@ -38,7 +38,7 @@ Although the above situation is less-likely to occur on a stable (local) network
-- @muhlemmer, 17th of January 2019. -- @muhlemmer, 17th of January 2019.
## Prequisites ## Prerequisites
### Swarm ### Swarm
@ -66,7 +66,7 @@ mzrm9nbdggsfz4sgq6dhs5i6n flying-dutchman Ready Active
``` ```
### Volume definition ### Volume definition
For data persistance (the Mailu services might be launched/relaunched on any of the swarm nodes), we need to have Mailu data stored in a manner accessible by every manager or worker in the swarm. For data persistence (the Mailu services might be launched/relaunched on any of the swarm nodes), we need to have Mailu data stored in a manner accessible by every manager or worker in the swarm.
Hereafter we will assume that "Mailu Data" is available on every node at "$ROOT" (GlusterFS and nfs shares have been successfully used). Hereafter we will assume that "Mailu Data" is available on every node at "$ROOT" (GlusterFS and nfs shares have been successfully used).
@ -290,7 +290,7 @@ core@coreos-01 ~ $ docker service logs -f mailu_fetchmail
``` ```
## Remove the stack ## Remove the stack
Run the follwoing command: Run the following command:
```bash ```bash
core@coreos-01 ~ $ docker stack rm mailu core@coreos-01 ~ $ docker stack rm mailu
``` ```

@ -28,7 +28,7 @@ mzrm9nbdggsfz4sgq6dhs5i6n flying-dutchman Ready Active
``` ```
### Volume definition ### Volume definition
For data persistance (the Mailu services might be launched/relaunched on any of the swarm nodes), we need to have Mailu data stored in a manner accessible by every manager or worker in the swarm. For data persistence (the Mailu services might be launched/relaunched on any of the swarm nodes), we need to have Mailu data stored in a manner accessible by every manager or worker in the swarm.
Hereafter we will use a NFS share: Hereafter we will use a NFS share:
```bash ```bash
core@coreos-01 ~ $ showmount -e 192.168.0.30 core@coreos-01 ~ $ showmount -e 192.168.0.30
@ -58,7 +58,7 @@ core@coreos-01 ~ $ sudo umount /mnt/local/
## Networking mode ## Networking mode
On this example, we are using: On this example, we are using:
- the mesh routing mode (default mode). With this mode, each service is given a virtual IP adress and docker manages the routing between this virtual IP and the container(s) providing this service. - the mesh routing mode (default mode). With this mode, each service is given a virtual IP address and docker manages the routing between this virtual IP and the container(s) providing this service.
- the default ingress mode. - the default ingress mode.
### Allow authentification with the mesh routing ### Allow authentification with the mesh routing
@ -351,7 +351,7 @@ tbu8ppgsdffj mailu_fetchmail.1 mailu/fetchmail:master coreos-01
``` ```
## Remove the stack ## Remove the stack
Run the follwoing command: Run the following command:
```bash ```bash
core@coreos-01 ~ $ docker stack rm mailu core@coreos-01 ~ $ docker stack rm mailu
``` ```

@ -327,7 +327,7 @@ This page also shows an overview of the following settings of an user:
* Sending Quota. The sending quota is the limit of messages a single user can send per day. * Sending Quota. The sending quota is the limit of messages a single user can send per day.
* Comment. A desription for the user. * Comment. A description for the user.
* Created. Date when the user was created. * Created. Date when the user was created.

@ -2,8 +2,8 @@
(Everything will go under setup/ directory - using Kubernetes flavor as example) (Everything will go under setup/ directory - using Kubernetes flavor as example)
Until this point, the app is working as it follows: Until this point, the app is working as it follows:
- when accesing the setup page it will display the flavors selection step (`templates/steps/flavor.html`) - when accessing the setup page it will display the flavors selection step (`templates/steps/flavor.html`)
- after you choose your desired flavor it will iterare over the files in the flavor directory and building the page - after you choose your desired flavor it will iterate over the files in the flavor directory and building the page
(`templates/steps/config.html is general for all flavors`) (`templates/steps/config.html is general for all flavors`)
- when you complete all required fields and press "Setup Mailu" button it will redirect you to the setup page (`flavors/choosen-flavor/setup.html`) - when you complete all required fields and press "Setup Mailu" button it will redirect you to the setup page (`flavors/choosen-flavor/setup.html`)
@ -29,7 +29,7 @@ In the example below the string entered in the input field is stored in the vari
<input type="text" name="var_test"> <input type="text" name="var_test">
``` ```
In order to use the variable furter you use it like `{{ var_test }}` In order to use the variable further you use it like `{{ var_test }}`
In the setup page (`flavors/kubernetes/setup.html`) you can add steps by importing macros In the setup page (`flavors/kubernetes/setup.html`) you can add steps by importing macros

@ -10,7 +10,7 @@
file before running anything based on it.</p> file before running anything based on it.</p>
<p>If you encounter issues while setting Mailu up, please review the <p>If you encounter issues while setting Mailu up, please review the
documentation first, then check if an issue is open for that specific documentation first, then check if an issue is open for that specific
problem. If not, you may either use Github to open an issue and detail what problem. If not, you may either use GitHub to open an issue and detail what
your problem or bug looks like, or join us on Matrix and discuss it your problem or bug looks like, or join us on Matrix and discuss it
with contributors.</p> with contributors.</p>
{% endcall %} {% endcall %}

@ -8,4 +8,4 @@ docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mail
docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu admin admin mailu.io 'password' --mode=update || exit 1 docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu admin admin mailu.io 'password' --mode=update || exit 1
docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu user user mailu.io 'password' || exit 1 docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu user user mailu.io 'password' || exit 1
docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu user 'user/with/slash' mailu.io 'password' || exit 1 docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu user 'user/with/slash' mailu.io 'password' || exit 1
echo "User testing succesfull!" echo "User testing successful!"

@ -29,7 +29,7 @@ $config['managesieve_usetls'] = false;
// We access the IMAP and SMTP servers locally with internal names, SSL // We access the IMAP and SMTP servers locally with internal names, SSL
// will obviously fail but this sounds better than allowing insecure login // will obviously fail but this sounds better than allowing insecure login
// from the outter world // from the outer world
$ssl_no_check = array( $ssl_no_check = array(
'ssl' => array( 'ssl' => array(
'verify_peer' => false, 'verify_peer' => false,

@ -83,7 +83,7 @@ try:
except subprocess.CalledProcessError as exc: except subprocess.CalledProcessError as exc:
err = exc.stdout.decode() err = exc.stdout.decode()
if "already exists" in err: if "already exists" in err:
print("Already initialzed") print("Already initialized")
else: else:
print(err) print(err)
exit(3) exit(3)

Loading…
Cancel
Save