Commit Graph

1301 Commits (5179cf06182683f39f0144bc1c44d8360fba3e49)

Author SHA1 Message Date
Florent Daigniere ccd2cad4f1 Autodiscovery microsoft style
Florent Daigniere 523cee1680 Autoconfig mozilla-style
bors[bot] 0b25854de0
Merge
2210: Add input validation for domain creation r=mergify[bot] a=0pc0deFR

## What type of PR?

bug-fix

## What does this PR do?

This patch add the input validation for domain creation.

### Related issue(s)
- Mention an issue like: 
- Auto close an issue like: closes 


Co-authored-by: Kevin Falcoz <0pc0defr@gmail.com>
Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
İbrahim Akyel f65e2fc469 Feature: Marking "Read" spam mails
Florent Daigniere a7f9a35fa1
Merge branch 'master' into fix2274
Florent Daigniere a4ed464170 doh
Florent Daigniere 0bfbb3bcd4
doh
Florent Daigniere cd3eee4c51 ghostwheel42's suggestion
Florent Daigniere d723326b8e style
Florent Daigniere f01d8cd9b9 improve
Florent Daigniere 7b9c4e01f7 improve
Florent Daigniere 91de20c49c Fix exception in logs
This was occuring when you had square brackets in the domain part
Florent Daigniere 8cf76afbab Catch the ValueError instead
Florent Daigniere 08aa32a5df Revert "Don't bother running the query without an address"
This reverts commit dc81979550.
Florent Daigniere 7ce7f2096b belt, braces and suspenders
Florent Daigniere dc81979550 Don't bother running the query without an address
This should solve the following in admin logs:
"WARNING in nginx: Invalid user 'xxxx': (builtins.ValueError)
invalid email address (no "@")"
Pumba98 f1952d0e97
Update start.py
bors[bot] 2e9b14d536
Merge
2254: Send ISRG_X1 on port 25, make DANE pin that r=mergify[bot] a=nextgens

## What type of PR?

bug-fix

## What does this PR do?

Ensure we send ISRG_X1 in the handshake on port 25 (non-interactive, size doesn't really matter).

Update the DANE pin to reflect the change.

I am not sure whether we will need to add --preferred-chain= in the future; This may be the case when letsencrypt decides to use X2/the ECDSA chain

This needs to be tested on a letsencrypt account that isn't mine (I'm opted in for the alternate cert chains)

### Related issue(s)
- closes 

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

There's already a towncrier news for it

Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
Florent Daigniere f9869b1d79 ghostwheel42's suggestions
Dimitri Huisman c40a0f4b80 Change link in warning to master. Master is always available. 1.9 will be unavaiable in the future.
Florent Daigniere ab35492589 the first time the loop runs we don't have the second cert
Florent Daigniere 0816cb9497 simplify as per ghostwheel42's suggestion
Florent Daigniere 7166e7d2b2 Implement : slow transports
Florent Daigniere e4a32b55f5 Send ISRG_X1 on port 25, make DANE pin that
Florent Daigniere d3e7ea5389 spell it out
Florent Daigniere a8dc20962a workaround a bug in coredns
Dimitri Huisman 55a601de5a Add missing import for validators, improve behaviour when an error occurs.
Dimitri Huisman 7d801c560c Improve if statement
Florent Daigniere 9466ad4131 fix
bors[bot] 855f3b065b
Merge
2211: Ensure we use IMAP IDLE like it's supposed to work r=mergify[bot] a=nextgens

## What type of PR?

enhancement

## What does this PR do?

Increase IMAP IDLE time from 2min to 29mins: this should massively help reduce network traffic & increase battery life of clients

See https://peterkieser.com/2011/03/25/androids-k-9-mail-battery-life-and-dovecots-push-imap/

## Prerequisites
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
- [x] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/workflow.html#changelog) entry file.


Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
Co-authored-by: Florent Daigniere <nextgens@users.noreply.github.com>
Florent Daigniere 224880822f
remove space
Florent Daigniere 3d7b9fe194 Ensure we use IMAP IDLE like it's supposed to work
imap_idle_notify_interval = 2 mins -> 29 mins

See https://peterkieser.com/2011/03/25/androids-k-9-mail-battery-life-and-dovecots-push-imap/
Kevin Falcoz 278d74ce6f
Add title attribute on user-panel div
Kevin Falcoz 3fe1dbe881
Add input validation for domain creation
Kevin Falcoz c69f886a73 Update code with ghostwheel42 comments
Kevin Falcoz 3e394faf92
Patch function "Display Name" into admin page
Florent Daigniere f6ebf9fda2
Update tls.conf
Florent Daigniere 68ff6c8337
Use ISRG_ROOT_X1 as DST_ROOT is not available
Sebastian Klemke a6b4b9ae52 Removed ssl_trusted_certificate configuration setting from nginx.
Resolves an nginx startup issue when letsencrypt or
mail-letsencrypt is enabled.

Fixes 
Sebastian Klemke 89a86e9dda disabled rsyslogd pidfile
Florent Daigniere b9e614145f there too
Florent Daigniere b7fb8c661a switch to new API
Billy Chan 90394d7d8c 🎨 use resolver.resolve
shing6326 32446f03e7
Update start.py
fix missing leading . for the resolver test
bors[bot] 1e53530164
Merge
2144: Enable unbound by default, warn if the DNS resolver doesn't work r=mergify[bot] a=nextgens

## What type of PR?

bug-fix

## What does this PR do?

Enable unbound by default, warn if the DNS resolver doesn't work

### Related issue(s)
- close 

## Prerequisites
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
- [x] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/workflow.html#changelog) entry file.


Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
Co-authored-by: Florent Daigniere <nextgens@users.noreply.github.com>
Florent Daigniere a9da0c084a
syntax error
Florent Daigniere a2f6243382
remove the error variable
Florent Daigniere b12616b93f
Make the recommendation clearer
Alexander Graf f809be39bf
supply missing fields argument
bors[bot] e3e3700187
Merge
2150: fix 2145: exceptions may be thrown when login is invalid or rate-limits exceeded r=mergify[bot] a=nextgens

## What type of PR?

bug-fix

## What does this PR do?

Exceptions may be thrown when login is invalid or rate-limits exceeded for those running very recent builds of 1.9

For some reason I haven't caught it while testing #2130... that's when it was introduced.

### Related issue(s)
- close 
- close 
- 



Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
Florent Daigniere 7bd1fd3489 fix 2145
Florent Daigniere 6425f440d3 fix 2147
Florent Daigniere 379fe18f7a test dns resolvers at startup
Florent Daigniere 98973223fd
reduce TTL to 1d
Florent Daigniere 792893caae change TTL to 1y
Florent Daigniere 671f3e382a Fix 2138: Pin DANE with the full cert
Florent Daigniere 7f89a29790 Fix 2125
Make the caller responsible to know whether the rate-limit code should
be called or not
bors[bot] 65d905fe62
Merge
2099: update Dockerfile to alpine 3.14.3 r=mergify[bot] a=willofr

## What type of PR?
Security fix

## What does this PR do?
Updated the Dockerfile to use the latest alpine version 3.14.3 where several CVEs have been fixed: https://alpinelinux.org/posts/Alpine-3.14.3-released.html
New images successfully built on my test env.

### Related issue(s)
None

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


Co-authored-by: Will <will@packer-output-c8fcfb40-3d93-4475-8f87-e14a9dd683b6>
Co-authored-by: willofr <willofr@users.noreply.github.com>
bors[bot] 3eca813182
Merge
2116: fix 2114: redirect old path r=mergify[bot] a=nextgens

## What type of PR?

bug-fix

## What does this PR do?

Old paths may still be cached in browsers, it's easy enough to redirect them

### Related issue(s)
- close 


Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
Florent Daigniere c4675e6e75 fix 2114: redirect old path
Dimitri Huisman b4d3d4b3c9 Preparations for 1.9 release.
Erriez 4b0694705c Fix build dependencies pycares
Dimitri Huisman 51d94b8d14 Fix issue 2102
Will b2abbc8856 update Dockerfile to alpine 3.14.3
Florent Daigniere bee6e980e3 doh
Florent Daigniere 58d0faff7f ensure we clear the token on delete()
Florent Daigniere 2b29cfb3f0 fix cleanup_sessions()
Florent Daigniere f0247a2faf Use self where appropriate
Florent Daigniere c161a2c987 syntax
bors[bot] 18865bf03b
Merge
2094: Sessions tweaks r=mergify[bot] a=nextgens

## What type of PR?

bug-fix

## What does this PR do?

- Make all sessions permanent, introduce SESSION_TIMEOUT and PERMANENT_SESSION_LIFETIME.
- Prevent the creation of a session before there is a login attempt
- Ensure that webmail tokens are in sync with sessions

### Related issue(s)
- close  

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


Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
Dimitri Huisman d40be05117 Fix missing edit buttons in alias, relay and fetchmail lists in admin.
Florent Daigniere a28c7f903e do it once
Dimitri Huisman f88daa1e77 Add missing cast to int
Florent Daigniere 5f313310d4 regenerate() shouldn't extend lifetime
Florent Daigniere fe18cf9743 Fix 2080
Ensure that webmail tokens are in sync with sessions
Florent Daigniere 02c93c44f2 Tweak sessions
simplify:
- make all sessions permanent by default
- update the TTL of sessions on access (save always)
- fix session-expiry, modulo 8byte precision
Florent Daigniere ea96a68eb4 don't create a session if we don't have to
bors[bot] 7c03878347
Merge
1441: Rsyslog logging for postfix r=mergify[bot] a=micw


## What type of PR?

enhancement

## What does this PR do?
Changes postfix logging from stdout to rsyslog:
* stdout logging still enabled
* internal test request log messages are filtered out by rsyslog
* optional logging to file via POSTFIX_LOG_FILE env variable

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


2090: fix 2086 r=mergify[bot] a=nextgens

## What type of PR?

bug-fix

## What does this PR do?

Fix a bug I've introduced in ae8db08bd

### Related issue(s)
- close 

Co-authored-by: Michael Wyraz <michael@wyraz.de>
Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
Co-authored-by: Dimitri Huisman <52963853+Diman0@users.noreply.github.com>
Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
Florent Daigniere 346ace5fb3 Make webmail the default action
bors[bot] 634318adba
Merge
2072: use dovecot-fts-xapian from alpine package r=mergify[bot] a=willofr

## What type of PR?

enhancement

## What does this PR do?
use dovecot-fts-xapian from alpine packages repository (newer) instead of compiling an older version from source
see https://pkgs.alpinelinux.org/package/edge/community/x86/dovecot-fts-xapian

### Related issue(s)
No

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


Co-authored-by: willofr <willofr@users.noreply.github.com>
Florent Daigniere 09926702d6 fix 2086
bors[bot] e7f77875e2
Merge
2084: Fix  (login to webmail did not work when WEB_WEBMAIL=/ was set) r=mergify[bot] a=Diman0

## What type of PR?

bug-fix

## What does this PR do?
It fixes . Login from SSO page to webmail did not work if WEB_WEBMAIL=/ was set in mailu.env.

I tested that it works with
- WEB_WEBMAIL=/webmail
- WEB_WEBMAIL=/

### Related issue(s)
- closes  

## Prerequisites
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] n/a 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/workflow.html#changelog) entry file.


Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
Co-authored-by: Florent Daigniere <nextgens@users.noreply.github.com>
Florent Daigniere d7a8235b89
Simplify
bors[bot] 08be233607
Merge
2058: Implement versioning for CI/CD workflow. r=mergify[bot] a=Diman0

## What type of PR?

Feature!

## What does this PR do?
This PR introduces 3 things
- Add versioning (tagging) for branch x.y (1.8). E.g. 1.8.0, 1.8.1 etc.
  - docker repo will contain x.y (latest) and x.y.z (pinned version) images.
  - The X.Y.Z tag is incremented automatically. E.g. if 1.8.0 already exists, then the next merge on 1.8 will result in the new tag 1.8.1 being used.
- Make the version available in the image.
  -  For X.Y and X.Y.Z write the version (X.Y.Z) into /version on the image and add a label with version=X.Y.Z
	  -  This means that the latest X.Y image shows the pinned version (X.Y.Z e.g. 1.8.1) it was based on. Via the tag X.Y.Z you can see the commit hash that triggered the built.
  -  For master write the commit hash into /version on the image and add a label with version={commit hash}
-  Automatic releases. For x.y triggered builts (e.g. merge on 1.9) do a new github release for the pinned x.y.z (e.g. 1.9.2). 
  -  Release shows a static message (see RELEASE_TEMPLATE.md) that explains how to reach the newsfragments folder and change the branch to the tag (x.y.z) mentioned in the release. Now you can get the changelog by reading all newsfragment files in this folder.

This PR does not change anything to our workflow (what we (human persons) do). Our processes are still exactly the same. The above introduced logic is automatic. When we backport to X.Y all the magic for creating the pinned version X.Y.Z is handled by the CI/CD workflow.

### Related issue(s)
- closes 

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

## Testing
Suggested testing steps. This should cover all situations including BORS. It does require that you use your own docker repo or temporarily create a new one.
Suggested testing steps.
1. Create new github repo.
2. Add the required docker secrets to the project (see beginning of CI.yml for the secret names), DOCKER_UN, DOCKER_PW, DOCKER_ORG, DOCKER_ORG_TESTS.
3. Clone the project.
4. Copy the contents of the PR to the cloned project.
5. Push to your new github repo.
6. Now master images are built. Check that images with tag master are pushed to your docker repo
7. Check with docker inspect nginx:master that it has the label version={commit hash}.
8. Run an image, run `docker-compose exec <name> cat /version`. Note that /version also contains the pinned version. For master the pinned version is the commit hash.
9. Create branch 1.8. 
10. Push branch 1.8 to repo.
11. Note that tags 1.8 and 1.8.0 are built and pushed to docker repo
12. Inspect label and /version. Note that 1.8 and 1.8.0 both show version 1.8.0.
13. Push another commit to branch 1.8.
14. Note that tags 1.8 and 1.8.1 are built and pushed to docker repo
15. Inspect label and /version. Note that 1.8 and 1.8.1 both show version 1.8.1.
16. Let's check BORS stuff.
17. Create branch testing.
18. Push the commit with the exact commit text (IMPORTANT!!): `Try #1234:`'.
19. Note that images are built and pushed for tag `pr-1234`.
20. Inspect label and /version. Note that the version is `pr-1234`.
20. Create branch staging.
21. Push the commit with commit text: `Merge #1234`.
22. Note that this image is not pushed to docker (as expected).

but you could also check the GH repo and docker repo I used:
https://github.com/Diman0/Mailu_Fork
https://hub.docker.com/r/diman/rainloop/tags

Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
bors[bot] d2a2a3a8bf
Merge
2076: fix the default for DEFER_ON_TLS_ERROR r=mergify[bot] a=nextgens

## What type of PR?

bug-fix

## What does this PR do?

The default wasn't set anywhere

Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
Dimitri Huisman fdb10cfb85 Start crond when POSTFIX_LOG_FILE is set
Dimitri Huisman 5bedcc1cb1 Fix
Dimitri Huisman d76773b1df Also check the SMTP port for webmail/token
Dimitri Huisman f26fa8da84 Fix Webmail token check. Fix Auth-Port for Webmail.
Florent Daigniere 593e3ac5a4 fix DEFER_ON_TLS_ERROR
willofr 841b29e794
revert back to alpine 3.14.2 as requested
willofr 73f5291cdb
Merge branch 'Mailu:master' into patch-1
Dimitri Huisman 53975684b8 Using Syslog is the new standard. It is not optional anymore.
willofr 84af3a3e50
use dovecot-fts-xapian from alpine package
I suggest using the dovecot-fts-xapian package from the alpine repository (newer) instead of compiling an older version from source:
see https://pkgs.alpinelinux.org/package/edge/community/x86/dovecot-fts-xapian
Florent Daigniere 4fffdd95e9 Reduce logging level
Dimitri Huisman d5896fb2c6 Add log rotation (if logging to file). Make rsyslog the default.
Florent Daigniere 89a7a8ac13 Fix score of RCVD_NO_TLS_LAST
Florent Daigniere 1925b2e0fb Upgrade rspamd
Dimitri Huisman 567b5ef172
Merge branch 'master' into postfix-logging
Dimitri Huisman 0de2ec77c6 Process code review remarks