433 Commits (d00ccc16d7d51be87daf761d7889ffa8cf059f23)

Author SHA1 Message Date
kaiyou d7747639e9 Remove the dependency to mailustart, introducing socrate 5 years ago
cristi f2a009795b Merge branch 'master' into admin_create_user_enhancement 6 years ago
bors[bot] f1f5aef7d3 Merge #931
931: Resolve webmail in admin r=mergify[bot] a=ionutfilip

## What type of PR?
bug-fix

## What does this PR do?
Implement mailustart to resolve webmail in admin

### Related issue(s)
Fix #716 

## Prerequistes
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: place entry in the [changelog](CHANGELOG.md), under the latest un-released version.


Co-authored-by: Ionut Filip <ionut.philip@gmail.com>
6 years ago
bors[bot] 2c90ac3334 Merge #962
962: Open some admin sidebar links in a new browser tab r=kaiyou a=mariooos

## What type of PR?

Enhancement

## What does this PR do?

Add target=_blank attribute to html <a href ...> tag in following admin sidebar links:
- Antispam
- Webmail
- Website
- Help


Co-authored-by: mariooos <48351788+mariooos@users.noreply.github.com>
6 years ago
bors[bot] 7021278bfb Merge #993
993: Make aliases case-insensitive (too) r=mergify[bot] a=Nebukadneza

Even though RFC5321 2.4 explains that local-parts are to be case-sensitive,
this does not seem to be how EMail is used today. Thus, instead of reverting
user-emails back to being case sensitive, let’s make aliases case-insensitive
too. Not only more consistent, this also allows users to enjoy receiving EMails
from large airlines or car-rental agencies onto their already existing aliases.

For the rare case of case sensitive aliases existing, let’s query for the
forced-lowercase alias only in the event that the preserved-case one isn’t
found …

closes #867

## What type of PR?
bug-fix

## What does this PR do?
Make aliases optionally case-insensitive: After attempting to resolve an alias in its preserved case, also attempt to match it case-insensitively.

This followed after some more thought from  #868 …

### Related issue(s)
closes #867

## Prerequistes
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/guide.html#changelog) entry file.


Co-authored-by: Dario Ernst <dario@kanojo.de>
6 years ago
bors[bot] d76ba5ee39 Merge #1005
1005: distinguish disabled users in user list view by row color r=kaiyou a=zhuangyy

## What type of PR?

enhancement

## What does this PR do?

distinguish disabled users in user list view by row color

## Prerequistes
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.

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


Co-authored-by: Zhuang Yuyao <jssyan@qq.com>
6 years ago
kaiyou 645c423d09 Update messages.po (POEditor.com) 6 years ago
kaiyou 08bdc715bb Update messages.po (POEditor.com) 6 years ago
kaiyou a150315c1d Added translation using Weblate (Japanese) 6 years ago
Weblate abece125f4 Merge branch 'origin/master' into Weblate 6 years ago
kaiyou d99ad5fe3e Added translation using Weblate (Hungarian) 6 years ago
kaiyou b91c7f64ee Update messages.po (POEditor.com) 6 years ago
kaiyou d929413784 Update messages.po (POEditor.com) 6 years ago
kaiyou 91c8ca1279 Update messages.po (POEditor.com) 6 years ago
kaiyou c0263a2ae9 Update messages.po (POEditor.com) 6 years ago
kaiyou 80c57b597b Update messages.po (POEditor.com) 6 years ago
kaiyou 0566b00664 Update messages.po (POEditor.com) 6 years ago
kaiyou c939b30e6b Update messages.po (POEditor.com) 6 years ago
kaiyou 308521ff9a Update messages.po (POEditor.com) 6 years ago
kaiyou 0ca18035e1 Update messages.po (POEditor.com) 6 years ago
kaiyou 8bcb4deb7e Update messages.po (POEditor.com) 6 years ago
kaiyou 65a61ad5c8 Added translation using Weblate (Icelandic) 6 years ago
kaiyou 57385df15c Deleted translation using Weblate (Icelandic) 6 years ago
kaiyou cfc224352a Added translation using Weblate (Icelandic) 6 years ago
Zhuang Yuyao 67d5c8fcb3 distinguish disabled user in user list view by row color 6 years ago
Dario Ernst e22324adcd Make aliases case-insensitive (too)
Even though RFC5321 2.4 explains that local-parts are to be case-sensitive,
this does not seem to be how EMail is used today. Thus, instead of reverting
user-emails back to being case sensitive, let’s make aliases case-insensitive
too. Not only more consistent, this also allows users to enjoy receiving EMails
from large airlines or car-rental agencies onto their already existing aliases.

For the rare case of case sensitive aliases existing, let’s query for the
forced-lowercase alias only in the event that the preserved-case one isn’t
found …

closes #867
6 years ago
hoellen 167e5a87e1 add sidebar toggle button 6 years ago
hoellen 92ef73fa74 update AdminLTE to version 2.4 6 years ago
mariooos 253ae9fad8 Open some admin sidebar links (Antispam, Webmail, Website, Help) in a new browser tab 6 years ago
Ionut Filip ac0fc41421
Merge branch 'master' into replace-gethostbyname 6 years ago
Ionut Filip dd7710951e
Replaced double quotes with single ones 6 years ago
Ionut Filip 0ce0b5ec02 Fix addresses in front 6 years ago
Ionut Filip 4c25c83419 HOST_* and *_ADDRESS variables cleanup 6 years ago
Ionut Filip f9e3cd3c5d Use corret host_* variables 6 years ago
Ionut Filip ef49357eb3 Update redis urls 6 years ago
Ionut Filip 43abbf4d63 Resolve redis and add logging 6 years ago
bors[bot] 211136f9b1 Merge #934
934: Pass optional arguments to domain model r=mergify[bot] a=ionutfilip

## What type of PR?
bug-fix

## What does this PR do?
Passing optional args to domain model when using cli.

### Related issue(s)
Fixes #933

## Prerequistes
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.

- [ ] In case of feature or enhancement: documentation updated accordingly
- [ ] Unless it's docs or a minor change: place entry in the [changelog](CHANGELOG.md), under the latest un-released version.


Co-authored-by: Ionut Filip <ionut.philip@gmail.com>
6 years ago
bors[bot] d129733fac Merge #919
919: Install bash in alpine based images. r=mergify[bot] a=firvida

This fixes #918

Bash shell is used by default in Kubernetes' dashboard console, which is very
useful for admins.

## What type of PR?

bug-fix

## What does this PR do?

### Related issue(s)
- closes #918 

## Prerequistes
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.

- [ ] In case of feature or enhancement: documentation updated accordingly
- [ ] Unless it's docs or a minor change: place entry in the [changelog](CHANGELOG.md), under the latest un-released version.


Co-authored-by: Abel Alfonso Fírvida Donéstevez <abel@merchise.org>
6 years ago
hoellen 62511b723b
Merge branch 'master' into fix-doc-commands-1 6 years ago
Ionut Filip 4d2844c1f5 Fixed arguments passed to domain 6 years ago
Roman Hoellen 1dfef1609a add domain cli to docs 6 years ago
Ionut Filip cebc64a280 Resolve HOST_WEBMAIL in admin 6 years ago
Roman Hoellen bc617cf8ec replace _ with - in cli options 6 years ago
Tim Möhlmann 111dae351a
Fix typo in migration file
Fixes #905
6 years ago
Abel Alfonso Fírvida Donéstevez 39444c794e Install bash in alpine based images.
This fix https://github.com/Mailu/Mailu/issues/918

Bash shell is used by default in Kubernetes' dashboard console, which is very
useful for admins.
6 years ago
bors[bot] 86b4242f82 Merge #886
886: Ipv6 support r=mergify[bot] a=muhlemmer

## What type of PR?

(Feature, enhancement, bug-fix, documentation) -> A bit of everything

## What does this PR do?

Document how to use ipv6nat. This, however triggers some kind of flaky behavior with the Docker DNS resolver, resulting in lookup failures between containers.  So all resolving needs to be done during container startup/configuration.

In order not to pollute every single start.py file, we've created a small library called [Mailu/MailuStart](https://github.com/Mailu/MailuStart). As an addition, this library also defines the template generation function, including its logging facility.

Note: `docker-compose.yml` downgrade is necessary, as IPv6 settings are not supported by the Docker Compose file format 3 😞  

### Related issue(s)
Supersedes  PR #844
- Fixes #827 
- Hopefully helps with #829 and #834

## No backport yet

This PR directly imports MailuStart from git. This makes it a bit more simple to implement on the short term an do some testing and probably some future improvements. When everything is proved stable, we will create a proper PyPi package with versioning and consider back porting.

## Prerequistes
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: place entry in the [changelog](CHANGELOG.md), under the latest un-released version.


Co-authored-by: Ionut Filip <ionut.philip@gmail.com>
Co-authored-by: Tim Möhlmann <muhlemmer@gmail.com>
6 years ago
Tim Möhlmann 06457e9617
Merge branch 'master' into fix_fetches_create 6 years ago
cr1st1p 9b65a6c862
Merge branch 'master' into admin_create_user_enhancement 6 years ago
Ionut Filip f8dffe5a19
Resolve hosts in admin 6 years ago
Dario Ernst 34b31727c4 Fix password validator for creating fetched accounts 6 years ago
cristi a071181c61 Allow to automatically create admin account during startup. 6 years ago
hoellen fba246e9a1 add wildcard option to cli (alias) 6 years ago
hoellen 808092c65e
Merge pull request #834 from hoellen/token-ipv6
allow ipv6 addresses for tokens
6 years ago
Tim Möhlmann e341e0141f
Merge remote-tracking branch 'upstream/master' into token-ipv6 6 years ago
Manuel Vázquez Acosta dfe5ddb18e
Check if sender address is not null before trying to check the domain. 6 years ago
Tim Möhlmann fd236e4ea5
Fix syntax error 6 years ago
nathan-sain 23bad0e042
Set value for SQLALCHEMY_DATABASE_URI in admin DEFAULT_CONFIG to SQLite URI 6 years ago
nathan-sain db8977e17a
Update SQLite DB file in DEFAULT_CONFIG and DB_TEMPLATES 6 years ago
hoellen 6dea8b422a
Merge pull request #839 from hoellen/fix-create-onupdate-default
fix default value for created_at and updated_at
6 years ago
hoellen 79c4edcaf1
Merge pull request #838 from hoellen/schema-maxUserQuota-1
Change quota columns type to BigInteger
6 years ago
hoellen 54169db7e3
Merge branch 'master' into fix-forward-validation 6 years ago
hoellen 9721df0bc5 fix default value for created_at and updated_at
Use date instead of datetime for created_at and updated_at.
6 years ago
hoellen cfa7ca3838 Merge branch 'master' into schema-maxUserQuota-1 6 years ago
hoellen f1e1c96c3b create migration file for changing quota to big integer 6 years ago
Ionut Filip 2d34f0ee52 Fixed auto-forward email validation 6 years ago
hoellen c8758a6526 allow ipv6 addresses for tokens 6 years ago
hoellen 2af540a1c9 change quota columns to bigint 6 years ago
Dario Ernst 66df7a31b0 Unify and coerce booleans from env used in admin
At some places, the string that DOMAIN_REGISTRATION is got used like a boolean
(an easy misassumption to make while in python and dealing with the config
dict), making `DOMAIN_REGISTRATION=False` act as a truthy value. To stop such
future problems from happening, coerce environment config strings to real
bools.

closes #830
6 years ago
mergify[bot] 9175b15d49
Merge pull request #826 from Nebukadneza/reverse_user_alias_pref
Reverse the resolution order of user and alias
6 years ago
mergify[bot] 278bcfb13a
Merge pull request #814 from Nebukadneza/fix_delimiter_alias
Deliver mails to alias-stripped-of-delimeter, even if catchall exists
6 years ago
Dario Ernst 276dc3ffda Reverse the resolution order of user and alias
Since it’s common for wildcard~ish systems to prefer concrete objects over
wildcards, and aliases can be broad-wildcards (think catchall, %@xxx.tld), it
may be more intuitive for users that user-names rank higher than aliases. This
makes it impossible for user-names to be unreachable, since they can be
completely overridden by a catchall otherwise.

This changes default behavior, and is not configurable.

closes #815
6 years ago
Tim Möhlmann 8541ae2c46
Fix migration order after merge 6 years ago
mergify[bot] 99cd1d714b
Merge pull request #799 from hoellen/fix-domain-negative-values-1
don't allow negative values on domain creation/edit
6 years ago
Tim Möhlmann 2567646f47
Merge branch 'master' into fix-domain-negative-values-1 6 years ago
Ionut Filip 50343f354e Merge remote-tracking branch 'upstream/master' into feat-psql-support 6 years ago
Dario Ernst b8d1beed29 Simplify alias-wildcard detection to not consider actual % anymore 6 years ago
Dario Ernst 10d2601963 Unsimplify alias precedence handling
As discussed with hoellen on matrix, since postfix indeed supports including
the recipient delimiter character in a verbatim alias, we should support so too
— and handle its precedence correctly. The clearer and simpler formulation of
the precedence-clauses are credit to @hoellen. Thanks!
6 years ago
mergify[bot] 161394a774
Merge pull request #817 from hoellen/fix-fetch-passwordfield-1
fix edit of fetched acc without changing password
6 years ago
Dario Ernst ac64a75743 Simplify alias precedence handling; Remove bogus changelog 6 years ago
hoellen 7247b4b10c
Merge branch 'master' into fix-password-on-user-edit 6 years ago
hoellen a59d5dad23 fix edit of fetched acc without changing password 6 years ago
hoellen f08491dc46 fix forced password on user edit 6 years ago
Ionut Filip 2b0a2d561b Fix connection to mysql db 6 years ago
Dario Ernst 291f8a457b Deliver mails to alias-stripped-of-delimeter, even if catchall exists
This fixes delivery to an alias minus recipient delimiter in cases where a
wildcard alias would also match. For example,
* foo@xxx.tld
* %@xxx.tld
Sending to foo+spam@xxx.tld would get eaten by the catchall before this fix.
Now, the order of alias resolution is made clearer.

closes #813
6 years ago
hoellen 732b5fe161 change password field type in fetch creation/edit and add validators. 6 years ago
mergify[bot] 3b5f3af207
Merge pull request #778 from Nebukadneza/fix_recipient_delimiter
Attempt stripping recipient delimiter from localpart
6 years ago
Ionut Filip 9077bf7313 Merge remote-tracking branch 'upstream/master' into feat-psql-support 6 years ago
Ionut Filip 953aa04354 Added postgresql-libs to admin 6 years ago
Tim Möhlmann 561e2fda67
Merge remote-tracking branch 'upstream/master' into fix-favicon 6 years ago
hoellen 501ecf13c1 add migration script 6 years ago
Tim Möhlmann a358b5305f
Merge pull request #797 from Mailu/upgrade-pyyaml
Upgrade PyYAML
6 years ago
Tim Möhlmann 4f93e09028
Implement favicon package
Credit to:
- https://stackoverflow.com/a/19590415/1816774
- https://realfavicongenerator.net/
6 years ago
Tim Möhlmann 284d54190a
Upgrade PyYAML to 4.2b4 6 years ago
hoellen dda64fe91e allow to disable aliases or users for domains and don't allow negativ values on domain creation/edit 6 years ago
hoellen 8fe1e788b3 add missing route fixes 6 years ago
Tim Möhlmann 3c7bf58211
Upgrade PyYAML
CVE-2017-18342
Vulnerable versions: < 4.2b1
Patched version: 4.2b1
In PyYAML before 4.1, the yaml.load() API could execute arbitrary code. In other words, yaml.safe_load is not used.
6 years ago
hoellen d5d4d6c337 harden email address validation and fix routes with user_email 6 years ago
Ionut Filip 01ec6e7bf3 Removed undefined function 6 years ago
mergify[bot] d483ef3c2a
Merge pull request #792 from hoellen/admin-broken-links-1
fix broken webmail and logo url in admin
6 years ago
Tim Möhlmann 74fe177297
Merge pull request #785 from TheLegend875/feat-displayed-name
Feature: send auto reply with displayed name
6 years ago
hoellen f617e82c06 fix broken webmail and logo url in admin 6 years ago
Tim Möhlmann 4068c5b751
Versioning for mysqlclient and psycopg2 6 years ago
Tim Möhlmann b2823c23b8
Merge remote-tracking branch 'upstream/master' into feat-psql-support 6 years ago
Tim Möhlmann 9eaeb80a27
Finalize merge with kaiyou/feat-multiple-db 6 years ago
TheLegend875 999d2a9557 changed default.sieve to send displayed name 6 years ago
TheLegend875 2954d84790 added necessary ui elements 6 years ago
TheLegend875 56f4d4c894 fixed auto-forward 6 years ago
TheLegend875 5bdbbf60d7 fixed display of username when not logged in 6 years ago
Dario Ernst c2d45a47fe Attempt stripping recipient delimiter from localpart
Since postfix now asks us for the complete email over podop, which
includes the recipient-delimiter-and-what-follows not stripped, we need
to attempt to find both the verbatim localpart, as well as the localpart
stripped of the delimited part ….

Fixes #755
6 years ago
Tim Möhlmann 19df86f13f
Merge pull request #764 from usrpro/fix-alias-bug
Added regex validation for alias username
6 years ago
Tim Möhlmann af086bbdbe
Include DKIM in VOLUME 6 years ago
Ionut Filip 8fc2846924 Added regex validation for alias username 6 years ago
Tim Möhlmann 3c4ee1b31e
Merge pull request #743 from kaiyou/master
Fixes #738 regarding application context
6 years ago
ofthesun9 97b3a85090
Merge pull request #737 from hoellen/fix-alias-match-behaviour
fix alias match behaviour
6 years ago
mergify-bot 09a50b6cfc Merge branch 'master' into 'master' 6 years ago
kaiyou 4060ac2223 Remove some forgotten debugging 6 years ago
kaiyou 087841d5b7 Fix the way we handle the application context
The init script was pushing an application context, which maked
flask.g global and persisted across requests. This was evaluated
to have a minimal security impact.

This explains/fixes #738: flask_wtf caches the csrf token in the
application context to have a single token per request, and only
sets the session attribute after the first generation.
6 years ago
kaiyou b5f51b0e2e Update python dependencies 6 years ago
kaiyou 8707b0fcd7 Use a dictionary of db connection string templates 6 years ago
kaiyou 19f18e2240 Lowercase relays as well as other tables 6 years ago
kaiyou 7e388e472a Handle relay name as an Idna domain 6 years ago
kaiyou 871aa14c9a Lowercase every domain name and email 6 years ago
kaiyou 3df9b3962d Add default columns to the configuration table 6 years ago
kaiyou b88f61f183 Name all constraints when creating them
Prefious commit set the constraint names for existing databases.
New databases can now have named constraints from the ground up.
6 years ago
kaiyou b8282b1d46 Support named constraints for multiple backends
Supporting multiple backends requires that specific sqlite
collations are not used, thus lowercase is applied to all non
case-sensitive columns. However, lowercasing the database requires
temporary disabling foreign key constraints, which is not possible
on SQLite and requires we specify the constraint names.

This migration specific to sqlite and postgresql drops every
constraint, whether it is named or not, and recreates all of them
with known names so we can later disable them.
6 years ago
kaiyou e022513a94 Fix support for postgres and mysql 6 years ago
kaiyou a881a1a839 Revert "Make current migrations work with postgresql"
This reverts commit 9b9f3731f6.
6 years ago
kaiyou 76925e82f3 Revert "Implement CIText as NOCASE alternative in postgresql"
This reverts commit 0f3c1b9d15.
6 years ago
kaiyou f52ae5535c Revert "Created function for returning email type"
This reverts commit 436055f02c.
6 years ago
kaiyou f6520eace6 Merge branch 'feat-psql-support' of https://github.com/usrpro/Mailu into usrpro-feat-psql-support 6 years ago
hoellen 8fe9e695f3 prefer non-wildcard aliases over wildcard aliases 6 years ago
hoellen 79768c09f6 fix alias matching behaviour 6 years ago
Tim Möhlmann 8172f3eab8
Move the Mailu Docker network to a fixed subnet.
This will make network configuration and host based authentication
more robust, across different deployment platforms.
The options `RELAYNETS` and`POD_ADDRESS_RANGE` are kept for compatibility.
However, their usage have become optional.
6 years ago
kaiyou b6aaf57be1 Merge branch 'refactor-config' of github.com:kaiyou/mailu into refactor-config 6 years ago
kaiyou d0f07984b0 Merge remote-tracking branch 'upstream/master' into refactor-config 6 years ago
mergify[bot] 2d4bac03ad
Merge pull request #723 from usrpro/clean-healthcheck-logs
Admin: Prevent redirects during health checking
6 years ago
mergify[bot] a382f74680
Merge pull request #705 from usrpro/fix-recaptcha
Fix recaptcha
6 years ago
mergify[bot] 37027cfce7
Merge pull request #633 from kaiyou/fix-sender-checks
Improve sender checks
6 years ago
Tim Möhlmann d18cf7cb25
Prevent redirects during health checking 6 years ago
Tim Möhlmann c9df311a0d
Set forward_destination to an empty list
The value of `None` resulted in an error, since a list was expected.
6 years ago
Tim Möhlmann eff6c34632
Catch asterisk before resolve_domain
Asterisk results in IDNA error and a 500 return code.
6 years ago
Ionut Filip 7b8835070d Added tenacity retry fir migrations connection 6 years ago
David Rothera 88c174fb7a Query alternative table for domain matches
At present postfix checks this view for matches in the domain table and is used to accept/deny messages sent into it however it never checks for matches in the alternative table.

Fixes #718
6 years ago
Ionut Filip 436055f02c Created function for returning email type 6 years ago
Tim Möhlmann 47a3fd47b5
Fix DB_FLAVOR condition testing for models.py 6 years ago
Tim Möhlmann 0f3c1b9d15
Implement CIText as NOCASE alternative in postgresql 6 years ago
Tim Möhlmann 9b9f3731f6
Make current migrations work with postgresql 6 years ago
Tim Möhlmann 8bdc0c71af
Allow for setting a different DB flavor 6 years ago
Ionut Filip fed7146873 Captcha check on signup form 6 years ago
Tim Möhlmann 4783e61693
Fix password context
Fixes the following error:
```
admin_1      | [2018-11-09 09:44:10,533] ERROR in app: Exception on /internal/auth/email [GET]
admin_1      | Traceback (most recent call last):
admin_1      |   File "/usr/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
admin_1      |     response = self.full_dispatch_request()
admin_1      |   File "/usr/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
admin_1      |     rv = self.handle_user_exception(e)
admin_1      |   File "/usr/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
admin_1      |     reraise(exc_type, exc_value, tb)
admin_1      |   File "/usr/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
admin_1      |     raise value
admin_1      |   File "/usr/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
admin_1      |     rv = self.dispatch_request()
admin_1      |   File "/usr/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
admin_1      |     return self.view_functions[rule.endpoint](**req.view_args)
admin_1      |   File "/usr/lib/python3.6/site-packages/flask_limiter/extension.py", line 544, in __inner
admin_1      |     return obj(*a, **k)
admin_1      |   File "/app/mailu/internal/views/auth.py", line 18, in nginx_authentication
admin_1      |     headers = nginx.handle_authentication(flask.request.headers)
admin_1      |   File "/app/mailu/internal/nginx.py", line 48, in handle_authentication
admin_1      |     if user.check_password(password):
admin_1      |   File "/app/mailu/models.py", line 333, in check_password
admin_1      |     context = User.pw_context
admin_1      | AttributeError: type object 'User' has no attribute 'pw_context'
```
6 years ago