From 68c81ebaed80f540533a2d319ba8ae5d2d6cd81c Mon Sep 17 00:00:00 2001 From: ghostersk Date: Sun, 8 Mar 2026 18:37:52 +0000 Subject: [PATCH] update README.MD --- README.md | 243 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 191 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index e14979c..cde057d 100644 --- a/README.md +++ b/README.md @@ -1,110 +1,215 @@ # GoWebMail -A self-hosted, encrypted web email client written entirely in Go. Supports Gmail and Outlook via OAuth2, plus any standard IMAP/SMTP provider. +A self-hosted, multi-user, encrypted web email client written entirely in Go. Supports Gmail and Outlook via OAuth2, plus any standard IMAP/SMTP provider (Fastmail, ProtonMail Bridge, iCloud, etc.). -# Notes: -- work still in progress ( gmail and hotmail email not tested yet, just prepared the app for it) -- AI is involved in making this work, as I do not have the skill and time to do it on my own -- looking for any advice and suggestions to improve it! +> **Notes:** +> - Work still in progress (Gmail and Outlook OAuth2 not yet fully tested in production) +> - AI-assisted development — suggestions and contributions very welcome! ## Features +### Email - **Unified inbox** — view emails from all connected accounts in one stream -- **Gmail & Outlook OAuth2** — modern, token-based auth (no storing raw passwords for these providers) -- **IMAP/SMTP** — connect any provider (ProtonMail Bridge, Fastmail, iCloud, etc.) -- **AES-256-GCM encryption** — all email content encrypted at rest in SQLite +- **Gmail & Outlook OAuth2** — modern token-based auth (no raw passwords stored for these providers) +- **IMAP/SMTP** — connect any standard provider with username/password credentials +- **Auto-detect mail settings** — MX lookup + common port patterns to pre-fill IMAP/SMTP config +- **Send / Reply / Forward / Draft** — full compose workflow with floating draggable compose window +- **Attachments** — view inline images, download individual files or all at once +- **Forward as attachment** — attach original `.eml` as `message/rfc822` +- **Folder navigation** — per-account folder/label browsing with right-click context menu +- **Full-text search** — across all accounts and folders locally (no server-side search required) +- **Message filtering** — unread only, starred, has attachment, from/to filters +- **Bulk operations** — multi-select with Ctrl+click / Shift+range; bulk mark read/delete +- **Drag-and-drop** — move messages to folders; attach files in compose +- **Starred messages** — virtual folder across all accounts +- **EML download** — download raw message as `.eml` +- **Raw headers view** — fetches full RFC 822 headers from IMAP on demand + +### Security +- **AES-256-GCM encryption** — all email content, credentials and OAuth tokens encrypted at rest in SQLite (field-level, not whole-DB encryption) - **bcrypt password hashing** — GoWebMail account passwords hashed with cost=12 -- **Send / Reply / Forward** — full compose workflow -- **Folder navigation** — per-account folder/label browsing -- **Full-text search** — across all accounts locally -- **Dark-themed web UI** — clean, keyboard-shortcut-friendly interface -image -image -image -image +- **TOTP MFA** — custom implementation, no external library; ±60s window for clock skew tolerance +- **Brute-force IP blocking** — auto-blocks IPs after configurable failed login attempts (default: 5 attempts in 30 min → 12h ban); permanent blocks supported +- **Geo-blocking** — deny or allow-only access by country via ip-api.com (no API key needed); 24h in-memory cache +- **Per-user IP access rules** — each user configures their own IP allow-list or brute-force bypass list independently of global rules +- **Security alert emails** — notifies the targeted user when their account is brute-forced; supports STARTTLS, implicit TLS, and plain relay +- **DNS rebinding protection** — `HostCheckMiddleware` rejects requests with unexpected `Host` headers +- **Security headers** — CSP, X-Frame-Options, Referrer-Policy, Permissions-Policy, X-XSS-Protection on all responses +- **Sandboxed HTML email rendering** — emails rendered in CSP-sandboxed `