Commit Graph

138 Commits (3e85bb2d7381c42bdc75db9c6400c4503cc8dd78)

Author SHA1 Message Date
Pierre Jaury 373998ea99 Do not use objects after deleting them, fixes
kaiyou 08e4e2ee86 Update messages.po (POEditor.com)
Pierre Jaury 8ac9400c85 Add some missing translations
Pierre Jaury c3b9756000 Announcement to all users, fixes
Stefan Auditor eacf2a363b Add german translation
Pierre Jaury 9ef706517a Add the Docker client helper
Pierre Jaury 9e0718b00f Speed up local builds of the admin container
Pierre Jaury a8bc8e9d4b Reload Docker containers when certificates are generated
Pierre Jaury bbf71b262e Move docker related features to a separate module
Pierre Jaury 4246179b88 First working certificate generation code, related to
Pierre Jaury a9cb1e2d11 Change the spam threshold to an integer, related to
Pierre Jaury afbcb9b8c6 Remove an exception trigger in the main init file
d-fens 40820e4701 Fix admin template to reference github repository
Pierre Jaury c9aff0691b Add a scheduler to the Flask application
Pierre Jaury d4f93e39db Select translation based on browser configuration, fixes
kaiyou 9f09e0c8e0 Update messages.po (POEditor.com)
Pierre Jaury 013286b8e1 Rename the freeposte/mailu directory and database
Pierre Jaury 7be2d458d9 Use Email as a mixin and explicitely specify table names
This also fixes , as explained in the ticket, because Flask
SQlAlchemy is not accessing declared attributes early anymore.
Pierre Jaury c7fe29c957 Push the missing messages.pot
Pierre Jaury c007b37df7 Display error messages when Docker is unreachable properly, related to
Pierre Jaury 984b605d05 Compile translations when building the admin container
Pierre Jaury acf4addae0 Add initial translations, fix
Pierre Jaury c37ad3557f Missing translations
Pierre Jaury 3fa44613b1 Add a default babel configuration
Pierre Jaury 3ade5641d9 Fix the confirmation form
Pierre Jaury 0beeeade41 Enable Babel for all views
Pierre Jaury a3ad45c8ac Use babel for base views
Pierre Jaury fe035114e9 Enable Babel for forms
Pierre Jaury d3436668d8 Enable Babel
Pierre Jaury 676a9a5d2c Do not redirect users to admin pages, fix
Pierre Jaury c028a3799d Write an equivalence test for domains, fixes
(cherry picked from commit 144f427088acf9439fd9971898296137b8339f9a)
kaiyou 1ae8fe6af1 Merge pull request from diresi/junk_filter
dovecot: use rspamd X-Spamd-Result percentage to evaluate spam
Pierre Jaury c02faada94 Remove deprecated references to flask_wtf.Form, fix
Pierre Jaury e7399e6926 Add a development run.py script
Christoph Rissner b9de28e910 dovecot: use rspamd X-Spamd-Result percentage to evaluate spam
- configures dovecot to use the spamtest sieve plugins
- configures sieve to read the score from X-Spamd-Result: headers
- before.sieve applies the ${spam_threshold} to the spamtest percentage
- freeposte.db stores a percentage for ${spam_threshold}
- migrate freeposte.db spam_threshold from X/15 to percentages

the filter investigates the overall ratio of the `rspamd` header
`X-Spamd-Result` that looks something like this:

X-Spamd-Result: default: True [12.36 / 15.00]
 RBL_SPAMHAUS_XBL(4.00)[]
 BAYES_SPAM(3.06)[92.67%]
 RBL_SPAMHAUS_XBL_ANY(4.00)[]
 ONCE_RECEIVED_STRICT(4.00)[]
 HFILTER_HELO_BAREIP(3.00)[]
 RBL_SORBS_DUL(2.00)[]
 HFILTER_HOSTNAME_UNKNOWN(2.50)[]
 RBL_SPAMHAUS_PBL(2.00)[]
 RBL_SORBS_RECENT(1.50)[]
 MIME_UNKNOWN(0.10)[application/x-rar-compressed]
 RDNS_NONE(1.00)[]
 RBL_SORBS(0.00)[]
 R_SPF_NEUTRAL(0.00)[?all]
 ONCE_RECEIVED(0.10)[]
 RBL_SEM(1.00)[]
 MIME_HTML_ONLY(0.20)[]
 RBL_UCEPROTECT_LEVEL1(1.00)[]
 MIME_GOOD(-0.10)[multipart/mixed]

the sieve `spamtest :percent :value` in this case would be
   100*12.36/15 = 82.4%
Pierre Jaury 525089a531 Do not leak information about existing domains or users
Pierre Jaury 2cb4a44b5a Display fetchmail errors to the user, fixes
kaiyou 18253b1dd3 Merge pull request from vhf/admin-creation
Allow admin creation after initial setup
Victor Felder 3976a5b38e Allow admin creation after initial setup
Victor Felder 97d952d7f1 Fix a typo
Pierre Jaury e24da96e58 Add some documentation to access decorators
Pierre Jaury 09bec055fd Fix domain deletion permissions
Pierre Jaury c1f9b61dac Add a simple permission audit script
Pierre Jaury f8dcef22ef Fix the manager deletion behaviour
Pierre Jaury f541a951de Remove obsolete utils module
Pierre Jaury 713318f097 Clean imports and remove calls to the utils module
Pierre Jaury ee9a416696 Implement the decorator-based access control for all views
Pierre Jaury 4e4f2b8037 First shot at improving access control, related to
A couple of things are important to note for this commit:
- it only implements the new access control for alias and admin management
- the access control code is located in access.py

The idea behind simpler access control is auditability. There have been a
couple of bugs related to functions not checking permissions properly. If
checking permissions is as simple as decorating a function, exporting the
permission scheme for an audit should be simple.

Also, this still does not address the information leakage related to 404 errors
when an object does not exist, independently of permissions the user has over
the domain.
Pierre Jaury 3ea3bc1d8e Enforce permission checks for admin management
Pierre Jaury 6dc9131b97 Fix the wildcard migration script, fixes