🎯 Type of documentation
Examples/Tutorials
🐛 Identified user problem
New users want an end‑to‑end, copy‑pasteable tutorial to turn Postfix SASL failure logs into an actionable dashboard.
The current docs explain CSV output and email reports, but there is no guided walkthrough to:
- install/verify MailLogSentinel (MLS) on Debian 12/13,
- wire the produced data into Metabase,
- build a first dashboard with key metrics.
📍 Target audience
- Beginner to intermediate sysadmins running Debian 12/13 with Postfix
- Security/ops folks who want quick visibility into SASL brute‑force attempts
- Contributors who want to improve onboarding with a concrete, reproducible example
📋 Suggested content outline
-
Goal & prerequisites
- Debian 12 or 13 with Postfix + Syslog
- Basic shell access and sudo
- Metabase (self‑hosted)
-
Install MailLogSentinel (MLS)
- Clone repo
- Minimal configuration (paths, service/timer if applicable)
- Start MLS and confirm it tails Postfix logs incrementally
-
Verify data generation
- Locate the CSV and the SQL output (document the default path)
- Check a few rows (date, IP, username, …)
- Ensure daily email report runs (optional)
-
Install Metabase
-
Connect data to Metabase (present at least one simple path; list alternatives)
- Option A (Self‑host): Install CSV driver plugin and connect to the CSV file
- Option B (Self‑host): Install SQLite driver and connect Metabase to that DB
-
Build the first questions (with Query Builder and/or SQL examples)
- Failed logins by day (time‑series)
- Top source IPs & number of attempts
- Top targeted SASL users
- (If data available) Country / ASN breakdown
-
Assemble the dashboard
- Add cards created above; set date filter; layout tips
- Optional: thresholds/goal lines
-
Refresh & data updates
- How MLS appends to CSV incrementally and handles rotation
- How/when Metabase refreshes metadata/caches
-
Troubleshooting
- No data in CSV/SQL (permissions, path)
- Timezone mismatch
- CSV/SQL schema not recognized: casting dates/IPs, header row
-
Deliverables & PR checklist
- Markdown tutorial file under docs/tutorials/
- 3–5 screenshots (Metabase model, question, dashboard)
- Optional: sample dashboard export (.json)
- Links to README, Wiki, and Metabase docs
📂 Expected deliverables
📋 Files to modify
-
Create: docs/tutorials/metabase-sasl-monitoring.md
-
Add assets: docs/assets/metabase/ (screenshots)
-
(Optional) Add Wiki page: Use-cases / Metabase dashboard for SASL attacks
-
Reference the tutorial from README.md and the Wiki index
✅ How to validate the result
-
Follow the tutorial end‑to‑end on two fresh VMs (Debian 12 and 13)
-
Confirm MLS produces the CSVSQL and that at least 3 questions render correctly in Metabase
-
A dashboard shows: time‑series of attempts, top IPs, top targeted users (with working date filter)
-
Another contributor (not the author) can reproduce it in ≤ 60 minutes
🎯 Type of documentation
Examples/Tutorials
🐛 Identified user problem
New users want an end‑to‑end, copy‑pasteable tutorial to turn Postfix SASL failure logs into an actionable dashboard.
The current docs explain CSV output and email reports, but there is no guided walkthrough to:
📍 Target audience
📋 Suggested content outline
Goal & prerequisites
Install MailLogSentinel (MLS)
Verify data generation
Install Metabase
Connect data to Metabase (present at least one simple path; list alternatives)
Build the first questions (with Query Builder and/or SQL examples)
Assemble the dashboard
Refresh & data updates
Troubleshooting
Deliverables & PR checklist
📂 Expected deliverables
📋 Files to modify
Create:
docs/tutorials/metabase-sasl-monitoring.mdAdd assets:
docs/assets/metabase/(screenshots)(Optional) Add
Wikipage:Use-cases / Metabase dashboard for SASL attacksReference the tutorial from
README.mdand the Wiki index✅ How to validate the result
Follow the tutorial end‑to‑end on two fresh VMs (Debian 12 and 13)
Confirm MLS produces the CSVSQL and that at least 3 questions render correctly in Metabase
A dashboard shows: time‑series of attempts, top IPs, top targeted users (with working date filter)
Another contributor (not the author) can reproduce it in ≤ 60 minutes