265 Commits (51e9d56b89f6571f9ced7836026a906b95bb347e)

Author SHA1 Message Date
Dmytro Makovey e4b338c9a4 add config sync for bulk operations on users and aliases driven by config management systems etc. 7 years ago
Dmytro Makovey aef8975332 rename user_raw to user_import for more clarity. Add proper docstring 7 years ago
Dmytro Makovey db9ac1f68e add encryption scheme manipulation 7 years ago
n0izn0iz 434a3c017b Print stderr when certbot fails 7 years ago
kaiyou dc86a3feec Try to renew the certificate less often, related to #223 7 years ago
kaiyou 2bfe11c1a4 Merge pull request #194 from interlegis/1.4-managercommands
Add setlimits and setmanager commands to manage.py
7 years ago
kaiyou ffac116e1f Merge branch 'stable' 7 years ago
Fabio Rauber 4d0b9f9299 Add setlimits and setmanager commands to manage.py 7 years ago
Niels Keurentjes 010e5ca2a6 Perform read-only splits for the containers
The .gitsplit.yml file contains the configuration to be used by Jérémy
Derussé's docker-gitsplit container.

For usage instructions see https://github.com/jderusse/docker-gitsplit
8 years ago
matiasvictor c350a2b2ae Add portuguese translation 8 years ago
Pierre Jaury c1d175d7a7 Handle infinite quotas when adding validators, fixes #162
(cherry picked from commit fe0b292d45)
8 years ago
Pierre Jaury fe0b292d45 Handle infinite quotas when adding validators, fixes #162 8 years ago
Pierre Jaury 7e037663a1 Use relative path for certificates, fixes #35
(cherry picked from commit e6c18e6ac3)
8 years ago
Pierre Jaury e6c18e6ac3 Use relative path for certificates, fixes #35 8 years ago
Pierre Jaury be5562620e Enable https and --preload on the admin to improve letsencrypt support 8 years ago
Pierre Jaury 0ff6dc892d Install certbot from pip instead of source 8 years ago
Pierre Jaury 25d8b9e614 Add a keep option per fetch, fixes #60 8 years ago
Pierre Jaury 38f291bc5d Implement a maximum quota per domain, fixes #106 8 years ago
Pierre Jaury 41b1666609 Fix the behaviour from Wtforms Components regarding readonly, related to #152 8 years ago
Pierre Jaury 182e844ae6 Set password properly when using the CLI, fixes, #136 8 years ago
kaiyou 020ec8ef6b Merge pull request #131 from sanduhrs/german-translation-update
Update german translation from poeditor.com
8 years ago
Stefan Auditor f043e50983 Add method to create an alias 8 years ago
Stefan Auditor 2c3c52a2ec Add method to create a normal user 8 years ago
Stefan Auditor 9f8051f6e7 Update german translation from poeditor.com: add some missing strings, a few wording corrections, fix typo 8 years ago
Pierre Jaury 764b9e209b Bug when redirecting after deleting a fetch, related to #120 8 years ago
Pierre Jaury a5f061a8b2 Fix a typo when renaming the domain variable 8 years ago
Pierre Jaury 720db8e72a Generate a certificate for the proper hostname 8 years ago
Pierre Jaury 373998ea99 Do not use objects after deleting them, fixes #112 8 years ago
kaiyou 08e4e2ee86 Update messages.po (POEditor.com) 8 years ago
Pierre Jaury 8ac9400c85 Add some missing translations 8 years ago
Pierre Jaury c3b9756000 Announcement to all users, fixes #16 8 years ago
Stefan Auditor eacf2a363b Add german translation 8 years ago
Pierre Jaury 9ef706517a Add the Docker client helper 8 years ago
Pierre Jaury 9e0718b00f Speed up local builds of the admin container 8 years ago
Pierre Jaury a8bc8e9d4b Reload Docker containers when certificates are generated 8 years ago
Pierre Jaury bbf71b262e Move docker related features to a separate module 8 years ago
Pierre Jaury 4246179b88 First working certificate generation code, related to #35 8 years ago
Pierre Jaury a9cb1e2d11 Change the spam threshold to an integer, related to #103 8 years ago
Pierre Jaury afbcb9b8c6 Remove an exception trigger in the main init file 8 years ago
d-fens 40820e4701 Fix admin template to reference github repository 8 years ago
Pierre Jaury c9aff0691b Add a scheduler to the Flask application 8 years ago
Pierre Jaury d4f93e39db Select translation based on browser configuration, fixes #100 8 years ago
kaiyou 9f09e0c8e0 Update messages.po (POEditor.com) 8 years ago
Pierre Jaury 013286b8e1 Rename the freeposte/mailu directory and database 8 years ago
Pierre Jaury 7be2d458d9 Use Email as a mixin and explicitely specify table names
This also fixes #77, as explained in the ticket, because Flask
SQlAlchemy is not accessing declared attributes early anymore.
8 years ago
Pierre Jaury c7fe29c957 Push the missing messages.pot 8 years ago
Pierre Jaury c007b37df7 Display error messages when Docker is unreachable properly, related to #78 8 years ago
Pierre Jaury 984b605d05 Compile translations when building the admin container 8 years ago
Pierre Jaury acf4addae0 Add initial translations, fix #37 8 years ago
Pierre Jaury c37ad3557f Missing translations 8 years ago
Pierre Jaury 3fa44613b1 Add a default babel configuration 8 years ago
Pierre Jaury 3ade5641d9 Fix the confirmation form 8 years ago
Pierre Jaury 0beeeade41 Enable Babel for all views 8 years ago
Pierre Jaury a3ad45c8ac Use babel for base views 8 years ago
Pierre Jaury fe035114e9 Enable Babel for forms 8 years ago
Pierre Jaury d3436668d8 Enable Babel 8 years ago
Pierre Jaury 676a9a5d2c Do not redirect users to admin pages, fix #74 8 years ago
Pierre Jaury c028a3799d Write an equivalence test for domains, fixes #65
(cherry picked from commit 144f427088acf9439fd9971898296137b8339f9a)
8 years ago
kaiyou 1ae8fe6af1 Merge pull request #73 from diresi/junk_filter
dovecot: use rspamd X-Spamd-Result percentage to evaluate spam
8 years ago
Pierre Jaury c02faada94 Remove deprecated references to flask_wtf.Form, fix #72 8 years ago
Pierre Jaury e7399e6926 Add a development run.py script 8 years ago
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%
8 years ago
Pierre Jaury 525089a531 Do not leak information about existing domains or users 8 years ago
Pierre Jaury 2cb4a44b5a Display fetchmail errors to the user, fixes #23 8 years ago
kaiyou 18253b1dd3 Merge pull request #61 from vhf/admin-creation
Allow admin creation after initial setup
8 years ago
Victor Felder 3976a5b38e Allow admin creation after initial setup 8 years ago
Victor Felder 97d952d7f1 Fix a typo 8 years ago
Pierre Jaury e24da96e58 Add some documentation to access decorators 8 years ago
Pierre Jaury 09bec055fd Fix domain deletion permissions 8 years ago
Pierre Jaury c1f9b61dac Add a simple permission audit script 8 years ago
Pierre Jaury f8dcef22ef Fix the manager deletion behaviour 8 years ago
Pierre Jaury f541a951de Remove obsolete utils module 8 years ago
Pierre Jaury 713318f097 Clean imports and remove calls to the utils module 8 years ago
Pierre Jaury ee9a416696 Implement the decorator-based access control for all views 8 years ago
Pierre Jaury 4e4f2b8037 First shot at improving access control, related to #42
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.
8 years ago
Pierre Jaury 3ea3bc1d8e Enforce permission checks for admin management 8 years ago
Pierre Jaury 6dc9131b97 Fix the wildcard migration script, fixes #53 8 years ago
Pierre Jaury e3197f9156 Have the admin interface listen on localhost 8 years ago
Pierre Jaury 8601d5b8db Fix #49 when deleting a global admin 8 years ago
Pierre Jaury 0d3c75aa89 Fix a migration issue with wildcard aliases 8 years ago
Pierre Jaury 84769cab3e Switch to form-based confirmations, fixes #20 8 years ago
Pierre Jaury 5a69ada041 Add an action confirmation form, related to #20 8 years ago
Pierre Jaury 58337d7dd6 Set a proper default for spam thresholds 8 years ago
Pierre Jaury 1ce0bf2ef7 Update the user settings view with a slider 8 years ago
Pierre Jaury 0371da6307 Add the migration script for wildcard aliases, related to #38 8 years ago
XYunknown 6d4243ec66 Adding SQL Like format for aliases 8 years ago
Pierre Jaury b3d7b657ab Remove deprecated flask.ext imports 8 years ago
Pierre Jaury 9640d59aca Fix #25, serve static resources locally 8 years ago
Pierre Jaury 689c022a4a Get back to a single forward destination 8 years ago
Pierre Jaury 678a5c8065 Fix #22, use ellipsis for overflowing text 8 years ago
Pierre Jaury c07211677c Fix the default value for comma separated lists 8 years ago
Pierre Jaury 163494cb78 Use readonly attribute instead of disabled 8 years ago
Pierre Jaury 6af7a07e77 Avoid having an empty entry in destionation fields 8 years ago
Pierre Jaury 5581f1b0d9 Related to #19, fix the alias creation page 8 years ago
Pierre Jaury dcaf3e3473 Fix #30, use cascade deletion on domains 8 years ago
Pierre Jaury 49a1281976 Display the alias list properly 8 years ago
Pierre Jaury 5f36e6f4f2 Related to #19, implement domain specific field and database type 8 years ago
Pierre Jaury aace1c2d78 Get back to serving CDN assets, related to #25 8 years ago
Pierre Jaury 1673631e69 Fix the columns in the fetch list 8 years ago
Pierre Jaury f8a220e72a Serve local assets only 8 years ago
Pierre Jaury 21bec865b3 Fix permission management when editing/deleting fetches 8 years ago
Pierre Jaury 58ec3597ab Fix te DKIM DNS example 8 years ago
Pierre Jaury 6a3af51785 Add a confirmation modal when regenerating keys 8 years ago
Pierre Jaury 66a1b50cc9 Sign outgoing emails using DKIM 8 years ago
Pierre Jaury 24680957f7 Handle DKIM key generation and storage 8 years ago
Pierre Jaury 2fa8b879db Display domain SPF and DMARC example entries, fixes #15 8 years ago
Pierre Jaury 1c132fe92e Add migratoin scripts to the docker container 8 years ago
Pierre Jaury 2095b3f189 Fix the admin creation command 8 years ago
Pierre Jaury ec12ee9703 Fix a last typo in the migration script, fixes #17 8 years ago
Pierre Jaury cc013560d9 Perform automatic database migration 8 years ago
Pierre Jaury fa30a71e66 Remove deprecated initdb script 8 years ago
Pierre Jaury cca6eee8db Add the first database revision 8 years ago
Pierre Jaury 014993ee6e Add utility functions to manage.py 8 years ago
Pierre Jaury 5d7b3b981d Initialize the migration system 8 years ago
Pierre Jaury 215ba74275 Remove non-minimized static assets 8 years ago
Pierre Jaury 4853e54f0b Replace tagsinput with select2 8 years ago
Pierre Jaury 0668f9abc9 Fix the user create form 8 years ago
Pierre Jaury 5c1441486b Fix permissions for non-admin users 8 years ago
Pierre Jaury 7f7ff4d722 Fix #9, do not reuse the flask_login object for updates, query instead 8 years ago
Pierre Jaury e22f4b29b6 Fix a bug when updating the forward address 8 years ago
Pierre Jaury 82ec86afd8 Do not always add objects to the session before committing 8 years ago
Pierre Jaury 9efc798246 Store the state of reply and forward settings being enabled 8 years ago
Pierre Jaury 493fcf3a58 Use populate_obj to update objects 8 years ago
Pierre Jaury d3b13c2412 Use SQLAlchemy Session.get instead of filter_by 8 years ago
Pierre Jaury 3eca6864c3 Rename the generic 'address' to 'email' 8 years ago
Pierre Jaury 5343a397ff Fix the link to the fetchmail list 8 years ago
Pierre Jaury f832b74c85 Redirect to the fetch list after creation 8 years ago
Pierre Jaury 30ecbf81cd First fetchmail implementation 8 years ago
Pierre Jaury c56a51f7b7 Fix references to the deprecrated admin_of field 8 years ago
Pierre Jaury 340edc629e Implement admin and manager management 8 years ago
Pierre Jaury e2faf8e1be Fix the logo link 8 years ago
Pierre Jaury 5677c85368 Rename /status to /services 8 years ago
Pierre Jaury 78abe64068 Fix the behavior of the 'enable reply' checkbox 8 years ago
Pierre Jaury 85a9ae4361 Add a basic service status page 9 years ago
Pierre Jaury 3a4703b764 Implement auto-forward and auto-reply 9 years ago
Pierre Jaury 18af763293 Store the full address as a computed field 9 years ago
Pierre Jaury 8cc2a90ba0 Remove personal TODO file 9 years ago
Pierre Jaury 96ee0ea45d Use a single domain form 9 years ago
Pierre Jaury 22c095aef4 Improve the action buttons 9 years ago
Pierre Jaury ad879bc9f5 Add a confirmation dialog before deleting items 9 years ago
Pierre Jaury ec0304456b Add fields to enable and/or disable pop and imap 9 years ago
Pierre Jaury 49b33aba88 Use a single form for both creating and updating aliases 9 years ago
Pierre Jaury 19707ae3b3 Improve the alias forms 9 years ago
Pierre Jaury 398e7c1183 Improve forms for user creation an deletion 9 years ago
Pierre Jaury 77d426e084 Fix some typos 9 years ago
Pierre Jaury 40d4a22240 Switched to blueprints for the main app 9 years ago
Pierre Jaury 1c1c8e9cf6 Disable debugging un run.py 9 years ago
Pierre Jaury 54fb9cf60a Add a global admin account when initializing the database 9 years ago
Pierre Jaury c52cf53310 Prefill alias forms 9 years ago
Pierre Jaury 8fb2e58661 Support adding comments to records 9 years ago