T
finnandClaude Opus 5.5 d33821dd1b Log security relevant events to an audit log
Successful logins, user creation and deletion, password changes and the
enabled and admin toggles are logged with actor, target and IP. So are
failed logins, a wrong current password and denied access. Values are
JSON encoded, so client input cannot break the line or add fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 13:55:49 +00:00
2020-04-13 08:31:44 +02:00
2020-04-13 08:31:44 +02:00
2026-10-22 19:18:50 +00:00
2026-10-21 09:06:51 +00:00
2026-10-22 19:04:56 +00:00
2020-04-13 08:31:44 +02:00

Max

A small little program to manage emails.

Setup

Requirements: Docker, Make

Start with make run-dev

Configuration

  • MAX_ORIGIN (required in production): The public origin of MAX, e.g. https://max.finn.st
  • MAX_PRODUCTION=1 is set in the Docker image and makes MAX refuse to start in debug mode (FLASK_DEBUG). Do not override it.

Reverse proxy

In production, the reverse proxy must set X-Real-IP to the client's address and overwrite any value the client sends. Max uses this address for audit logging. For nginx:

proxy_set_header X-Real-IP $remote_addr;

Dovecot

Dovecot reads the password hashes written by Max from the users table. Max stores bcrypt hashes as {BLF-CRYPT}$2b$12$…. Dovecot must therefore support BLF-CRYPT (check with doveadm pw -l).

Dependencies

Direct dependencies are listed in requirements.in (production) and requirements-dev.in (development tools). requirements.txt and requirements-dev.txt are lockfiles with exact versions and hashes

  • After changing a .in file: make lock-deps and make sync-deps
  • Update all dependencies: make update-deps and make sync-deps
  • Check for known vulnerabilities: make audit (before every release)
S
Description
No description provided
Readme MIT
1.2 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 70.9%
HTML 19.8%
CSS 4.4%
Dockerfile 2.9%
Shell 1%
Other 1%