Frequently asked questions¶
Where to ask questions?¶
First, please read this FAQ to check if your question is listed here. Simple questions best fit in our Matrix room. For more complex questions, you can always open a new issue on GitHub. We actively monitor the issues list.
My installation is broken!¶
We’re sorry to hear that. Please check for common mistakes and troubleshooting advice in the Technical issues section of this page.
I think I found a bug!¶
I want a new feature or enhancement!¶
Great! We are always open for suggestions. We currently maintain two tags:
- Enhancement issues: Typically used for optimization of features in the project.
- Feature request issues: For implementing new functionality, plugins and applications.
Please check if your idea (or something similar) is already mentioned there. If there is one open, you can choose to vote with a thumbs up, so we can estimate the popular demand. Please refrain from writing comments like “me too” as it clobbers the actual discussion.
If you can’t find anything similar, you can open a new issue. Please also share (where applicable):
- Use case: how does this improve the project?
- Any research done on the subject. Perhaps some links to upstream website, reference implementations etc.
Why does my feature/bug take so long to solve?¶
You should be aware that creating, maintaining and expanding a mail server distribution requires a lot of effort. Mail servers are highly exposed to hacking attempts, open relay scanners, spam and malware distributors etc. We need to work in a safe way and have to prevent pushing out something quickly.
TODO: Move the next section into the contributors part of docs We currently maintain a strict work flow:
- Someone writes a solution and sends a pull request;
- We use Travis-CI for some very basic building and testing;
- The pull request needs to be code-reviewed and tested by at least two members from the contributors team.
Please consider that this project is mostly developed in people their free time. We thank you for your understanding and patience.
I would like to donate (for a feature)¶
Donations are welcome at the patreon account of the project lead. It will be used to pay for infra structure and project related costs. If there are leftovers, it will be distributed among the developers.
It is not yet possible to pay for a specific feature. We don’t have any bounty system implemented. Feel free to come with suggestions in our ongoing project management discussion issue.
In this section we are trying to cover the most common problems our users are having. If your issue is not listed here, please consult issues with the troubleshooting tag.
Changes in .env don’t propagate¶
Variables are sent to the containers at creation time. This means you need to take the project down and up again. A container restart is not sufficient.
docker-compose down && \ docker-compose up -d
Issue reference: 615.
TLS certificate issues¶
When there are issues with the TLS/SSL certificates, Mailu denies service on secure ports. This is a security precaution. Symptoms are:
- 403 browser errors;
These issues are typically caused by four scenarios:
- Certificates expired;
TLS_FLAVOR=letsencrypt, it might be that the certbot script is not capable of obtaining the certificates for your domain. See letsencrypt issues
TLS_FLAVOR=certs, certificates are supposed to be copied to
/mailu/certs. Using an external
letsencryptprogram, it tends to happen people copy the whole
letsencrypt/livedirectory containing symlinks. Symlinks do not resolve inside the container and therefore it breaks the TLS implementation.
In order to determine the exact problem on TLS / Let’s encrypt issues, it might be helpful to check the logs.
docker-compose logs front | less -R docker-compose exec front less /var/log/letsencrypt/letsencrypt.log
- Port 80 not reachable from outside.
- Faulty DNS records: make sure that all
HOSTNAMEShave A (IPv4) and AAAA (IPv6) records, pointing the the
- DNS cache not yet expired. It might be that old / faulty DNS records are stuck in a cache
en-route to letsencrypt’s server. The time this takes is set by the
TTLfield in the records. You’ll have to wait at least this time after changing the DNS entries. Don’t keep trying, as you might hit rate-limits.
As mentioned above, care must be taken not to copy symlinks to the
The wrong way!:
cp -r /etc/letsencrypt/live/domain.com /mailu/certs
The right way!:
mkdir -p /mailu/certs cp /etc/letsencrypt/live/domain.com/privkey.pem /mailu/certs/key.pem cp /etc/letsencrypt/live/domain.com/fullchain.pem /mailu/certs/cert.pem
How do I activate DKIM and DMARC?¶
Go into the Domain Panel and choose the Domain you want to enable DKIM for. Click the first icon on the left side (domain details). Now click on the top right on the “Regenerate Keys” Button. This will generate the DKIM and DMARC entries for you.
Issue reference: 102.
Do you support Fail2Ban?¶
Fail2Ban is not included in Mailu. Fail2Ban needs to modify the host’s IP tables in order to
ban the addresses. We consider such a program should be run on the host system and not
inside a container. The
front container does use authentication rate limiting to slow
down brute force attacks.
We do provide a possibility to export the logs from the
front service to the host.
For this you need to set
syslog, depending on the log
manager of the host. You will need to setup the proper Regex in the Fail2Ban configuration.
Be aware that webmail authentication appears to come from the Docker network,
so don’t ban those addresses!
Users can’t change their password from webmail¶
All users have the abilty to login to the admin interface. Non-admin users have only restricted funtionality such as changing their password and the spam filter weight settings.
Issue reference: 503.
rspamd: DNS query blocked on multi.uribl.com¶
This usually relates to the DNS server you are using. Most of the public servers block this query or there is a rate limit. In order to solve this, you most probably are better off using a root DNS resolver, such as unbound. This can be done in multiple ways:
- Use the Mailu/unbound container. This is an optional include when generating the
docker-compose.ymlfile with the setup utility.
- Setup unbound on the host and make sure the host’s
/etc/resolve.confpoints to local host. Docker will then forward all external DNS requests to the local server.
- Set up an external DNS server with root resolving capabilities.
In any case, using a dedicated DNS server will improve the performance of your mail server.
Is there a way to support more (older) ciphers?¶
See How can I override settings? .
You will need to add the protocols you wish to support in an override for the
front container (Nginx).
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers <list of ciphers>;
We strongly advice against downgrading the TLS version and ciphers!