A custom webmail client running at mail.seraph.ws.

Built because I could have used Roundcube and chose not to. React frontend, Node/Express backend, IMAP via imapflow, SMTP via nodemailer. Handles inline images, threaded sent mail, and dark mode that doesn’t bleed into rendered HTML emails.

Sits in front of docker-mailserver which handles Postfix, Dovecot, Rspamd, and ClamAV. fail2ban watches the auth log, nginx handles TLS and CSP headers.

The UI follows the same design language as the rest of seraph.ws — JetBrains Mono, dark background, pink accent. Built to be used daily, not demoed once.

Source code