There is no documentation on the usage of webdav. Searching the issues/pr section and doing some investigation I've determined the following:
No information can be found at all in regard to webdav on the documentation site (https://mailu.io) on how to use it.
In the web administration interface nothing can be found in regard to webdav. In client settings it doesn't show the webdav URL. I actually expected it would show in "client settings" what URL a user can use to connect to the webdav server.
To use webdav, a carddav/caldav client can use the url https://example.com/webdav/[email protected].
I'll create a PR to add the webdav URL to the documentation.
Hi There,
The Mailu-Project is currently in a bit of a bind! We are short on man-power, and we need to judge if it is possible for us to put in some work on this issue.
To help with that, we are currently trying to find out which issues are actively keeping users from using Mailu, which issues have someone who want to work on them — and which issues may be less important. These a less important ones could be discarded for the time being, until the project is in a more stable and regular state once again.
In order for us to better assess this, it would be helpful if you could put a reaction on this post (use the :smiley: icon to the top-right).
radicale does not handle authentication. It only receives the user name from the reverse proxy (nginx).
Authentication is handled by the reverse proxy (nginx).
Nginx uses the admin container to handle the authentication
nginx.conf excerpt
{% if WEBDAV != 'none' %}
location /webdav {
rewrite ^/webdav/(.*) /$1 break;
auth_request /internal/auth/basic;
auth_request_set $user $upstream_http_x_user;
include /etc/nginx/proxy.conf;
proxy_set_header X-Remote-User $user;
proxy_set_header X-Script-Name /webdav;
proxy_pass http://$webdav;
}
In the flask file for auth we can see that the admin container will check if the user exists and the provided password matches.
@internal.route("/auth/basic")
def basic_authentication():
Tries to authenticate using the Authorization header.
authorization = flask.request.headers.get("Authorization")
if authorization and authorization.startswith("Basic "):
encoded = authorization.replace("Basic ", "")
user_email, password = base64.b64decode(encoded).split(b":")
user = models.User.query.get(user_email.decode("utf8"))
if user and user.enabled and user.check_password(password.decode("utf8")):
response = flask.Response()
response.headers["X-User"] = user.email
return response
response = flask.Response(status=401)
response.headers["WWW-Authenticate"] = 'Basic realm="Login Required"'
return response
```
So for testing use the URL: https://example.com/webdav/[email protected]
And provide the username/password for [email protected].
The full instructions for webdav are:
| For first time set up, the user must access radicale via the url https://mail.example.com/webdav/.web and then
| 1. Log in using the user's full email address and password.
| 2. Click 'Create new addressbook or calendar'
| 3. Follow instructions for creating an addressbook (for contact management) and calendar.
|
| Subsequently to use webdav (radicale), you can configure your carddav/caldav client to use the following url:
| https://mail.example.com/webdav/[email protected]
| As username you must provide the complete email address ([email protected]).
| As password you must provide the password of the email address.
| The user must be an existing Mailu user.
Most helpful comment
Hi There,
The
Mailu-Project is currently in a bit of a bind! We are short on man-power, and we need to judge if it is possible for us to put in some work on this issue.To help with that, we are currently trying to find out which issues are actively keeping users from using
Mailu, which issues have someone who want to work on them — and which issues may be less important. These a less important ones could be discarded for the time being, until the project is in a more stable and regular state once again.In order for us to better assess this, it would be helpful if you could put a reaction on this post (use the :smiley: icon to the top-right).
We want to keep this voting open for 2 weeks from now, so please help out!