Merge branch 'master' into feat-logging
@ -77,6 +77,7 @@ v1.6.0 - unreleased
|
||||
- Enhancement: Added regex validation for alias username ([#764](https://github.com/Mailu/Mailu/issues/764))
|
||||
- Enhancement: Update documentation
|
||||
- Enhancement: Add logging at critical places in python start.py scripts. Implement LOG_LEVEL to controll verbosity ([#588](https://github.com/Mailu/Mailu/issues/588))
|
||||
- Enhancement: Include favicon package ([#801](https://github.com/Mailu/Mailu/issues/801), ([#802](https://github.com/Mailu/Mailu/issues/802))
|
||||
- Upstream: Update Roundcube
|
||||
- Upstream: Update Rainloop
|
||||
- Bug: Rainloop fails with "domain not allowed" ([#93](https://github.com/Mailu/Mailu/issues/93))
|
||||
|
@ -260,10 +260,19 @@ class Email(object):
|
||||
|
||||
@classmethod
|
||||
def resolve_destination(cls, localpart, domain_name, ignore_forward_keep=False):
|
||||
localpart_stripped = None
|
||||
if os.environ.get('RECIPIENT_DELIMITER') in localpart:
|
||||
localpart_stripped = localpart.rsplit(os.environ.get('RECIPIENT_DELIMITER'), 1)[0]
|
||||
|
||||
alias = Alias.resolve(localpart, domain_name)
|
||||
if not alias and localpart_stripped:
|
||||
alias = Alias.resolve(localpart_stripped, domain_name)
|
||||
if alias:
|
||||
return alias.destination
|
||||
|
||||
user = User.query.get('{}@{}'.format(localpart, domain_name))
|
||||
if not user and localpart_stripped:
|
||||
user = User.query.get('{}@{}'.format(localpart_stripped, domain_name))
|
||||
if user:
|
||||
if user.forward_enabled:
|
||||
destination = user.forward_destination
|
||||
|
@ -13,6 +13,13 @@
|
||||
|
||||
{% block head %}
|
||||
{{super()}}
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
|
||||
<meta name="msapplication-TileColor" content="#00aba9">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
{% block scripts %}
|
||||
{{super()}}
|
||||
<script src="{{ url_for('.static', filename='select2/js/select2.min.js') }}"></script>
|
||||
|
@ -10,6 +10,7 @@ RUN apk add --no-cache certbot nginx nginx-mod-mail openssl curl \
|
||||
&& pip3 install idna requests watchdog
|
||||
|
||||
COPY conf /conf
|
||||
COPY static /static
|
||||
COPY *.py /
|
||||
|
||||
EXPOSE 80/tcp 443/tcp 110/tcp 143/tcp 465/tcp 587/tcp 993/tcp 995/tcp 25/tcp 10025/tcp 10143/tcp
|
||||
|
@ -38,6 +38,8 @@ http {
|
||||
{% if KUBERNETES_INGRESS != 'true' %}
|
||||
# Main HTTP server
|
||||
server {
|
||||
# Favicon stuff
|
||||
root /static;
|
||||
# Variables for proxifying
|
||||
set $admin {{ HOST_ADMIN }};
|
||||
set $antispam {{ HOST_ANTISPAM }};
|
||||
@ -90,9 +92,9 @@ http {
|
||||
{% if WEB_WEBMAIL != '/' %}
|
||||
location / {
|
||||
{% if WEBROOT_REDIRECT %}
|
||||
return 301 {{ WEBROOT_REDIRECT }};
|
||||
try_files $uri {{ WEBROOT_REDIRECT }};
|
||||
{% else %}
|
||||
return 404;
|
||||
try_files $uri =404;
|
||||
{% endif %}
|
||||
}
|
||||
{% endif %}
|
||||
|
BIN
core/nginx/static/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
core/nginx/static/android-chrome-512x512.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
core/nginx/static/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
9
core/nginx/static/browserconfig.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#00aba9</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
BIN
core/nginx/static/favicon-16x16.png
Normal file
After Width: | Height: | Size: 978 B |
BIN
core/nginx/static/favicon-32x32.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
core/nginx/static/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
core/nginx/static/mstile-150x150.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
25
core/nginx/static/safari-pinned-tab.svg
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="536.000000pt" height="536.000000pt" viewBox="0 0 536.000000 536.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,536.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M2508 5346 c-1 -2 -38 -6 -80 -10 -120 -10 -319 -44 -418 -71 -196
|
||||
-53 -336 -107 -526 -200 -128 -63 -346 -197 -419 -257 -11 -9 -54 -44 -95 -78
|
||||
-429 -353 -738 -840 -880 -1385 -16 -61 -24 -98 -45 -205 -3 -14 -8 -47 -11
|
||||
-75 -4 -27 -8 -53 -10 -56 -7 -13 -18 -230 -18 -354 2 -261 42 -536 109 -745
|
||||
8 -25 21 -65 29 -90 30 -96 100 -260 160 -376 255 -489 653 -889 1136 -1141
|
||||
103 -53 245 -118 285 -129 6 -1 35 -12 65 -24 48 -18 164 -54 210 -65 8 -2 45
|
||||
-10 81 -19 208 -48 333 -61 599 -61 176 0 328 8 384 20 12 2 35 6 51 9 293 45
|
||||
623 162 895 319 466 267 862 694 1082 1167 27 58 53 114 58 125 61 127 159
|
||||
484 176 640 3 28 7 55 9 62 8 25 19 242 18 353 -6 552 -175 1074 -495 1525
|
||||
-71 101 -82 114 -189 234 -255 286 -568 513 -924 669 -178 78 -422 152 -590
|
||||
178 -16 3 -41 7 -55 10 -14 2 -47 7 -75 10 -27 3 -61 8 -75 11 -28 5 -436 13
|
||||
-442 9z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
19
core/nginx/static/site.webmanifest
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
}
|
@ -71,6 +71,14 @@ Web settings
|
||||
|
||||
The ``WEB_ADMIN`` contains the path to the main admin interface, while
|
||||
``WEB_WEBMAIL`` contains the path to the Web email client.
|
||||
The ``WEBROOT_REDIRECT`` redirects all non-found queries to the set path.
|
||||
An empty ``WEBROOT_REDIRECT`` value disables redirecting and enables classic
|
||||
behavior of a 404 result when not found.
|
||||
All three options need a leading slash (``/``) to work.
|
||||
|
||||
.. note:: ``WEBROOT_REDIRECT`` has to point to a valid path on the webserver.
|
||||
This means it cannot point to any services which are not enabled.
|
||||
For example, don't point it to ``/webmail`` when ``WEBMAIL=none``
|
||||
|
||||
Both ``SITENAME`` and ``WEBSITE`` are customization options for the panel menu
|
||||
in the admin interface, while ``SITENAME`` is a customization option for
|
||||
|