Skip to content

Latest commit

 

History

History
64 lines (44 loc) · 2.25 KB

README.md

File metadata and controls

64 lines (44 loc) · 2.25 KB

Project Banner

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:

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: [email protected]
  • 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: [email protected]
  • 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

"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"