Monitor Mailcow with Prometheus

Set up Prometheus and Grafana to monitor your Mailcow server health and mail metrics.

Category: Mailcow

Enable Prometheus Metrics in Mailcow

sudo nano /opt/mailcow-dockerized/mailcow.conf
# Set:
WATCHDOG_VERBOSE=y

Mailcow’s watchdog-mailcow container exposes metrics on port 9099 by default.

Add Prometheus Scrape Config

# prometheus.yml
scrape_configs:
  - job_name: 'mailcow'
    static_configs:
      - targets: ['your-mail-server-ip:9099']
    metrics_path: /metrics

Install Grafana (Docker)

docker run -d   --name grafana   -p 3000:3000   -e GF_SECURITY_ADMIN_PASSWORD=yourpassword   grafana/grafana-oss:latest

Key Metrics to Watch

  • mailcow_container_up — container health per service
  • mailcow_postfix_queue_size — mail queue depth
  • mailcow_rspamd_spam_count — spam caught per hour
  • System-level: CPU, memory, disk I/O via node_exporter

Set Up Alerts

In Grafana, create alert rules for queue depth > 100, any container down, or disk usage > 80%. Configure notification channels (email, Slack, PagerDuty) under Alerting → Contact Points.