Dashboard Overview
SpamFoo includes a built-in web console for monitoring classification activity, analyzing traffic sources, managing settings, and reviewing logs. The console is available at http://localhost:16253/admin on the server where SpamFoo is running.
localhost by default. To access it from another machine, set up a reverse proxy (such as Nginx or Caddy) with TLS and authentication. Do not expose port 16253 directly to the network.
Overview Page
The overview page is the landing page of the console. It shows key metrics for the current state of the system:
- Status indicator (healthy, warning, or error)
- Uptime since the last restart
- Classification rate (emails per minute)
- Total classifications today
- Spam rate over the last 24 hours
- Average latency in milliseconds
- Active anomalies (unusual patterns SpamFoo has detected)
- Model versions for all active ML models
- Database size
- Queue depth (spool and background queues)
Volumes
The volumes page shows classification counts over time, broken down by spam, ham, and phishing. The chart granularity adjusts automatically based on the selected time range: minute-level for the last 24 hours, hour-level for the last 7 days, and day-level for up to 90 days.
Performance
The performance page tracks classification latency (average and 95th percentile) and throughput over time. Use this to identify periods of high load or degraded performance. If latency is consistently above 50ms, consider increasing the concurrency setting (see Performance Tuning).
Classifications
Shows the breakdown of message classifications (Primary, Promotions, Updates, Transactions) for non-spam email. This helps you understand the composition of your email traffic.
Anomalies
SpamFoo tracks unusual patterns such as sudden spikes in spam volume, changes in classification distribution, or unexpected sender behavior. The anomalies page lists active and resolved anomalies with severity ratings and related details.
Analysis
The analysis section provides deeper insight into email traffic:
- Domains: Top sending domains ranked by spam count, with spam percentages and first/last seen dates. Click a domain for a daily timeline.
- IPs: Top sender IPs with the same metrics as domains, plus country code.
- Senders: Individual sender analysis grouped by sender hash and domain.
- Mailboxes: Per-mailbox statistics showing spam volume and top spam sources for each user.
- Messages: Searchable classification history. Filter by sender, domain, IP, mailbox, or result. Each message includes full scoring details and the pipeline journey showing how SpamFoo reached its decision.
Allow/Block Lists
The overrides page lets you create rules that bypass ML classification. You can always-allow or always-spam based on:
- Email address
- Domain
- IP address or CIDR range
Rules can be scoped globally, to a specific domain, or to a specific mailbox.
Settings
The settings section lets you manage queue configuration, data retention policies, and feature flags without restarting SpamFoo. Changes take effect immediately. See Configuration for details on available settings.
System
The system section includes:
- Status: Live CPU and memory usage, engine status, model versions, and client version.
- Logs: Built-in log viewer with filtering by date, level, classification, and text search. Logs are kept for 30 days. See Log Management for details.
- Maintenance: Trigger manual model updates, check for client updates, and run database cleanup.
Setting Up Remote Access
If you are not using SmarterMail, you will need to set up a reverse proxy to access the console from your workstation. Here is an example using Nginx:
server {
listen 443 ssl;
server_name spamfoo-admin.internal.example.com;
ssl_certificate /etc/ssl/certs/spamfoo-admin.crt;
ssl_certificate_key /etc/ssl/private/spamfoo-admin.key;
# Restrict access to your admin network
allow 10.0.0.0/8;
deny all;
# Optional: basic auth
auth_basic "SpamFoo Admin";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:16253;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}