maddy-password-reset/README.md

64 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

![Project Banner](https://user-images.githubusercontent.com/44648612/218335570-cdb3ba2f-4ff9-43ee-bd43-f892c644b153.png)
# Maddy Password Reset Service
Runs an HTTP server that serves a password reset form.
It should be installed on the same server where Maddy is running.
## How It Works
It runs the `maddy creds password -p` command to change a user's password.
### Use Cases
- You are currently logged into your mailbox and want to reset the password.
- For example, you registered a user, and the user wants to change their password.
## Installation
For the time being, you need to compile it yourself.
### Requirements
- Go
- Maddy (on the server, we need its CLI)
To build this project, install `Go` and execute the following command:
```shell
go build ./main.go
```
Make sure to configure it first! The first compilation will take a moderate amount of time.
## Configuration
By default, the web server starts on `:1323`. Make sure you hide it behind a reverse proxy.
You will probably need to edit the `reset.gohtml` template to suit your needs.
For now, it contains a reset page in Russian for my hobby mail service.
The only way to change the configuration is to modify the constants in the `main.go` file:
- `MaddyPath` Path to Maddy's database, e.g., `/var/lib/maddy/credentials.db`
- `HostingURL` Your domain name, for example: `http://localhost:1323/`
- `SMTPMailUsername` Your full email address, for example: `robot@local.host`
- `SMTPMailPassword` Your mailbox password
- `SMTPMailHostname` Your mail hostname, for example: `mx1.local.host`
- `MXServer` Your mail `MX` entry and `PORT`, for example: `mx1.local.host:587`
- `EmailFrom` The `$FROM` section of an email template, for example: `robot@local.host`
- `EmailSubject` The `$SUBJECT` section of an email template
- `EmailMessage` The `$MESSAGE` section of an email template. Remember to provide a password reset link for the user using `$RESET_LINK`. For example: `Here's your reset link: $RESET_LINK\r\n`
- `EmailTemplate` Your reset email message
- `HTTPServerPort` HTTP server port
### `EmailTemplate` Example
```text
"To: $TO\r\n" +
"From: $FROM\r\n" +
"Content-Type: text/plain; charset=UTF-8\r\n" +
"Subject: $SUBJECT\r\n" +
"\r\n" +
"$MESSAGE\r\n"
```