The only agent that thinks for itself

Autonomous Monitoring with self-learning AI built-in, operating independently across your entire stack.

Unlimited Metrics & Logs
Machine learning & MCP
5% CPU, 150MB RAM
3GB disk, >1 year retention
800+ integrations, zero config
Dashboards, alerts out of the box
> Discover Netdata Agents

Centralized metrics streaming and storage

Aggregate metrics from multiple agents into centralized Parent nodes for unified monitoring across your infrastructure.

Stream from unlimited agents
Long-term data retention
High availability clustering
Data replication & backup
Scalable architecture
Enterprise-grade security
> Learn about Parents

Fully managed cloud platform

Access your monitoring data from anywhere with our SaaS platform. No infrastructure to manage, automatic updates, and global availability.

Zero infrastructure management
99.9% uptime SLA
Global data centers
Automatic updates & patches
Enterprise SSO & RBAC
SOC2 & ISO certified
> Explore Netdata Cloud

Deploy Netdata Cloud in your infrastructure

Run the full Netdata Cloud platform on-premises for complete data sovereignty and compliance with your security policies.

Complete data sovereignty
Air-gapped deployment
Custom compliance controls
Private network integration
Dedicated support team
Kubernetes & Docker support
> Learn about Cloud On-Premises

Powerful, intuitive monitoring interface

Modern, responsive UI built for real-time troubleshooting with customizable dashboards and advanced visualization capabilities.

Real-time chart updates
Customizable dashboards
Dark & light themes
Advanced filtering & search
Responsive on all devices
Collaboration features
> Explore Netdata UI

Monitor on the go

Native iOS and Android apps bring full monitoring capabilities to your mobile device with real-time alerts and notifications.

iOS & Android apps
Push notifications
Touch-optimized interface
Offline data access
Biometric authentication
Widget support
> Download apps

The future of infrastructure observability

See our strategic direction across AI-native observability, full-stack signals, operational intelligence, and enterprise platform maturity.

AI-native observability
Full-stack signal coverage
Operational intelligence
Enterprise platform maturity
Agent releases every 6 weeks
Cloud continuous delivery
> Explore Product Roadmap

Best energy efficiency

True real-time per-second

100% automated zero config

Centralized observability

Multi-year retention

High availability built-in

Zero maintenance

Always up-to-date

Enterprise security

Complete data control

Air-gap ready

Compliance certified

Millisecond responsiveness

Infinite zoom & pan

Works on any device

Native performance

Instant alerts

Monitor anywhere

AI-native observability

Continuous delivery

Open source foundation

80% Faster Incident Resolution

AI-powered troubleshooting from detection, to root cause and blast radius identification, to reporting.

True Real-Time and Simple, even at Scale

Linearly and infinitely scalable full-stack observability, that can be deployed even mid-crisis.

90% Cost Reduction, Full Fidelity

Instead of centralizing the data, Netdata distributes the code, eliminating pipelines and complexity.

See and Map Your Entire Network

Live topology, flow analytics, and SNMP device and trap monitoring — unified with your full-stack observability.

Control Without Surrender

SOC 2 Type 2 certified with every metric kept on your infrastructure.

Integrations

800+ collectors and notification channels, auto-discovered and ready out of the box.

800+ data collectors
Auto-discovery & zero config
Cloud, infra, app protocols
Notifications out of the box
> Explore integrations
Real Results
46% Cost Reduction

Reduced monitoring costs by 46% while cutting staff overhead by 67%.

— Leonardo Antunez, Codyas

Zero Pipeline

No data shipping. No central storage costs. Query at the edge.

From Our Users
"Out-of-the-Box"

So many out-of-the-box features! I mostly don't have to develop anything.

— Simon Beginn, LANCOM Systems

No Query Language

Point-and-click troubleshooting. No PromQL, no LogQL, no learning curve.

Enterprise Ready
67% Less Staff, 46% Cost Cut

Enterprise efficiency without enterprise complexity—real ROI from day one.

— Leonardo Antunez, Codyas

SOC 2 Type 2 Certified

Zero data egress. Only metadata reaches the cloud. Your metrics stay on your infrastructure.

Full Coverage
800+ Collectors

Auto-discovered and configured. No manual setup required.

Any Notification Channel

Slack, PagerDuty, Teams, email, webhooks—all built-in.

Built for the People Who Get Paged

Because 3am alerts deserve instant answers, not hour-long hunts.

Every Industry Has Rules. We Master Them.

See how healthcare, finance, and government teams cut monitoring costs 90% while staying audit-ready.

Monitor Any Technology. Configure Nothing.

Install the agent. It already knows your stack.
From Our Users
"A Rare Unicorn"

Netdata gives more than you invest in it. A rare unicorn that obeys the Pareto rule.

— Eduard Porquet Mateu, TMB Barcelona

99% Downtime Reduction

Reduced website downtime by 99% and cloud bill by 30% using Netdata alerts.

— Falkland Islands Government

Real Savings
30% Cloud Cost Reduction

Optimized resource allocation based on Netdata alerts cut cloud spending by 30%.

— Falkland Islands Government

46% Cost Cut

Reduced monitoring staff by 67% while cutting operational costs by 46%.

— Codyas

Real Coverage
"Plugin for Everything"

Netdata has agent capacity or a plugin for everything, including Windows and Kubernetes.

— Eduard Porquet Mateu, TMB Barcelona

"Out-of-the-Box"

So many out-of-the-box features! I mostly don't have to develop anything.

— Simon Beginn, LANCOM Systems

Real Speed
Troubleshooting in 30 Seconds

From 2-3 minutes to 30 seconds—instant visibility into any node issue.

— Matthew Artist, Nodecraft

20% Downtime Reduction

20% less downtime and 40% budget optimization from out-of-the-box monitoring.

— Simon Beginn, LANCOM Systems

Pay per Node. Unlimited Everything Else.

One price per node. Unlimited metrics, logs, users, and retention. No per-GB surprises.

Free tier—forever
No metric limits or caps
Retention you control
Cancel anytime
> See pricing plans

What's Your Monitoring Really Costing You?

Most teams overpay by 40-60%. Let's find out why.

Expose hidden metric charges
Calculate tool consolidation
Customers report 30-67% savings
Results in under 60 seconds
> See what you're really paying

Your Infrastructure Is Unique. Let's Talk.

Because monitoring 10 nodes is different from monitoring 10,000.

On-prem & air-gapped deployment
Volume pricing & agreements
Architecture review for your scale
Compliance & security support
> Start a conversation

Monitoring That Sells Itself

Deploy in minutes. Impress clients in hours. Earn recurring revenue for years.

30-second live demos close deals
Zero config = zero support burden
Competitive margins & deal protection
Response in 48 hours
> Apply to partner

Per-Second Metrics at Homelab Prices

Same engine, same dashboards, same ML. Just priced for tinkerers.

Community: Free forever · 5 nodes · non-commercial
Homelab: $90/yr · unlimited nodes · fair usage
> Get the Homelab Plan

$1,000 Per Referral. Unlimited Referrals.

Your colleagues get 10% off. You get 10% commission. Everyone wins.

10% of subscriptions, up to $1,000 each
Track earnings inside Netdata Cloud
PayPal/Venmo payouts in 3-4 weeks
No caps, no complexity
> Get your referral link
Cost Proof
40% Budget Optimization

"Netdata's significant positive impact" — LANCOM Systems

Calculate Your Savings

Compare vs Datadog, Grafana, Dynatrace

Savings Proof
46% Cost Reduction

"Cut costs by 46%, staff by 67%" — Codyas

30% Cloud Bill Savings

"Reduced cloud bill by 30%" — Falkland Islands Gov

Enterprise Proof
"Better Than Combined Alternatives"

"Better observability with Netdata than combining other tools." — TMB Barcelona

Real Engineers, <24h Response

DPA, SLAs, on-prem, volume pricing

Why Partners Win
Demo Live Infrastructure

One command, 30 seconds, real data—no sandbox needed

Zero Tickets, High Margins

Auto-config + per-node pricing = predictable profit

Homelab Ready
Free Video Course

8-episode Netdata tutorial by LearnLinux.tv

76k+ GitHub Stars

3rd most starred monitoring project

Worth Recommending
Product That Delivers

Customers report 40-67% cost cuts, 99% downtime reduction

Zero Risk to Your Rep

Free tier lets them try before they buy

AI Support Assistant, Available 24/7

Nedi has access to all official documentation, source code, and resources. Ask any question about Netdata—responds in your language.

Deployment & configuration
Troubleshooting & sizing
Alerts & notifications
Evidence-based answers
> Ask Nedi now

Never Fight Fires Alone

Docs, community, and expert help—pick your path to resolution.

Learn.netdata.cloud docs
Discord, Forums, GitHub
Premium support available
> Get answers now

60 Seconds to First Dashboard

One command to install. Zero config. 850+ integrations documented.

Linux, Windows, K8s, Docker
Auto-discovers your stack
> Read our documentation

76,000+ Engineers Strong

615+ contributors. 1.5M daily downloads. One mission: simplify observability.

Per-Second. 90% Cheaper. Data Stays Home.

Side-by-side comparisons: costs, real-time granularity, and data sovereignty for every major tool.

See why teams switch from Datadog, Prometheus, Grafana, and more.

> Browse all comparisons
Edge-Native Observability, Born Open Source
Per-second visibility, ML on every metric, and data that never leaves your infrastructure.
Founded in 2016
615+ contributors worldwide
Remote-first, engineering-driven
Open source first
> Read our story
Promises We Publish—and Prove
12 principles backed by open code, independent validation, and measurable outcomes.
Open source, peer-reviewed
Zero config, instant value
Data sovereignty by design
Aligned pricing, no surprises
> See all 12 principles
Edge-Native, AI-Ready, 100% Open
76k+ stars. Full ML, AI, and automation—GPLv3+, not premium add-ons.
76,000+ GitHub stars
GPLv3+ licensed forever
ML on every metric, included
Zero vendor lock-in
> Explore our open source
Build Real-Time Observability for the World
Remote-first team shipping per-second monitoring with ML on every metric.
Remote-first, fully distributed
Open source (76k+ stars)
Challenging technical problems
Your code on millions of systems
> See open roles
Meet the Team Behind Netdata
Conferences, meetups, and tradeshows where you can see Netdata in action and talk to the engineers who build it.
Live demos and deep dives
Book 1-on-1 meetings
Talks and panel sessions
Event recaps and photos
> See all events
Talk to a Netdata Human in <24 Hours
Sales, partnerships, press, or professional services—real engineers, fast answers.
Discuss your observability needs
Pricing and volume discounts
Partnership opportunities
Media and press inquiries
> Book a conversation
Your Data. Your Rules.
On-prem data, cloud control plane, transparent terms.
Trust & Scale
76,000+ GitHub Stars

One of the most popular open-source monitoring projects

SOC 2 Type 2 Certified

Enterprise-grade security and compliance

Data Sovereignty

Your metrics stay on your infrastructure

Validated
University of Amsterdam

"Most energy-efficient monitoring solution" — ICSOC 2023, peer-reviewed

ADASTEC (Autonomous Driving)

"Doesn't miss alerts—mission-critical trust for safety software"

Community Stats
615+ Contributors

Global community improving monitoring for everyone

1.5M+ Downloads/Day

Trusted by teams worldwide

GPLv3+ Licensed

Free forever, fully open source agent

Why Join?
Remote-First

Work from anywhere, async-friendly culture

Impact at Scale

Your work helps millions of systems

$ guides / postfix / postfix-backscatter-storm ▌

Operations Guides

Postfix backscatter storm: bounces to forged senders and blocklisting

Your mail queue is growing with bounces to envelope senders at domains you have never heard of. Within hours, your IP lands on a DNSBL and legitimate mail stops reaching its destination.

This is a backscatter storm. Postfix accepted mail for recipients it could not deliver to, then generated non-delivery reports (NDRs) to the forged envelope sender. Those NDRs hit innocent third parties whose addresses the spammer forged.

The fix: reject unknown recipients at SMTP time instead of accepting and bouncing later. The challenge is identifying which misconfiguration let the mail through, stopping the storm without losing legitimate mail, and repairing your sender reputation.

What this means

Backscatter happens when Postfix acts as a backup MX, relay, or gateway that accepts mail without validating recipients against a known-good list. The message is accepted during the SMTP transaction, queued, delivery fails, and Postfix generates a bounce to the forged envelope sender.

If the bounce destination is also invalid, Postfix generates a double-bounce. Double-bounces are discarded by default, but the processing load consumes cleanup, bounce, and queue manager resources. Meanwhile, the original bounces to forged addresses are actively damaging your sender reputation.

Key signals: a bounce rate spike followed by sustained elevated injection, maildrop queue activity from local bounce generation, and queue entries from MAILER-DAEMON or double-bounce senders.

flowchart LR
    A["Spammer sends with\nforged return path"] --> B["Your Postfix accepts\nfor unknown recipient"]
    B --> C["Delivery fails:\nuser unknown"]
    C --> D["Bounce generated\nto forged sender"]
    D --> E["Innocent third party\nreceives NDR spam"]
    D --> F["Forged address invalid?\nDouble-bounce discarded"]
    E --> G["Complaints and\nDNSBL listing"]

The critical distinction: rejecting at SMTP time (5xx response during RCPT TO) produces no bounce. The connecting server is responsible for generating any NDR. Accepting then failing produces a bounce from your server, making you the source of backscatter.

Common causes

CauseWhat it looks likeFirst thing to check
Backup MX without relay_recipient_mapsMail accepted for any address in relay domains, then bounced after delivery failurepostconf -h relay_recipient_maps
Wildcard catch-all aliasAll mail to a domain accepted regardless of recipient validity, then bounced or forwarded to nonexistent addressesCheck virtual alias maps for @domain wildcard entries
Empty local_recipient_maps with luser_relayLocal recipients not validated before acceptance; all mail redirected via luser_relaypostconf -h local_recipient_maps luser_relay
relay_recipient_maps configured with @domain wildcardPostfix accepts mail for any recipient in relay domains, becoming a backscatter source per Postfix documentationInspect relay recipient map contents for wildcard entries
Content filter accepting then rejectingFilter passes SMTP but rejects during processing, generating late bouncesCheck content_filter logs for post-acceptance rejections

Quick checks

These commands are read-only and safe to run during an active incident. Your log path may be /var/log/maillog (RHEL family) instead of /var/log/mail.log (Debian family). Adjust accordingly.

# Count bounces logged in the current hour
grep "$(date '+%b %e %H')" /var/log/mail.log | grep -c 'status=bounced'

# Count MAILER-DAEMON messages currently queued
postqueue -p | grep -c 'MAILER-DAEMON'

# Show top senders in the queue (Postfix 3.1+ uses -j JSON output)
postqueue -j | jq -r '.sender' | sort | uniq -c | sort -rn | head -20

# Identify forged sender patterns in recent bounces
grep 'status=bounced' /var/log/mail.log | tail -20 | grep -o 'from=<[^>]*>' | sort | uniq -c

# Inspect bounce destination domains
grep 'status=bounced' /var/log/mail.log | grep -oE 'to=<[^>]*>' | cut -d@ -f2 | sort | uniq -c | sort -rn | head

# Check if relay_recipient_maps is configured
postconf -h relay_recipient_maps

# Check if local_recipient_maps is populated
postconf -h local_recipient_maps

# Check recipient rejection enforcement
postconf -h smtpd_reject_unlisted_recipient

# Check current deferred queue size
find /var/spool/postfix/deferred -type f | wc -l

# Check inode usage on queue filesystem (backscatter consumes inodes fast)
df -i /var/spool/postfix

How to diagnose it

  1. Confirm backscatter is happening. Look for bounces (status=bounced) with sender addresses at domains unrelated to your users or relay customers. If the log fills with MAILER-DAEMON mail to random external domains, you are generating backscatter.

  2. Identify which mail was accepted that should have been rejected. Search for recent bounced messages:

    grep 'status=bounced' /var/log/mail.log | tail -50
    

    Look at the to=<...> field. If the recipient does not exist in your directory, the message should have been rejected at SMTP time, not accepted and bounced.

  3. Trace the acceptance path. Check which Postfix restriction allowed the message through. Determine whether the recipient domain is in relay_domains, mydestination, or virtual_alias_domains:

    postconf -h relay_domains mydestination virtual_alias_domains
    

    Then check whether the corresponding recipient validation map exists and is populated.

  4. Test the recipient map directly. If relay_recipient_maps is configured, verify a lookup works:

    # Test a known-invalid recipient - should return empty
    postmap -q nonexistent@yourdomain.com hash:/etc/postfix/relay_recipients
    
    # Test a known-valid recipient - should return a result
    postmap -q validuser@yourdomain.com hash:/etc/postfix/relay_recipients
    

    If both return empty, the map is not populated. If the map file does not exist, relay_recipient_maps is effectively a no-op.

  5. Check for wildcard entries. Inspect map source files for @domain entries that accept all recipients:

    grep '^@' /etc/postfix/relay_recipients 2>/dev/null
    grep '^@' /etc/postfix/virtual 2>/dev/null
    
  6. Check DNSBL status. Query common blocklists for your IP before the listing propagates further:

    # Replace 1.2.3.4 with your IP in reverse notation
    host 4.3.2.1.bl.spamcop.net
    host 4.3.2.1.zen.spamhaus.org
    host 4.3.2.1.dnsbl.sorbs.net
    

    Backscatterer.org is still operational in 2026 (currently operated by UCEPROTECT) and accepts the same reversed-IP query format against its ips.backscatterer.org zone, e.g. host 4.3.2.1.ips.backscatterer.org.

Metrics and signals to monitor

SignalWhy it mattersWarning sign
Bounce rate (status=bounced)Directly measures NDR generation volumeSustained rate above 1% of injection, or sudden 10x increase from baseline
MAILER-DAEMON queue entriesActive bounce messages sitting in queueAny significant count indicates bounces not draining
Deferred queue growth rateBounces to invalid addresses defer on delivery, consuming queue capacityGrowth exceeding 1000 messages/hour with no plateau
Injection vs delivery velocityBounce generation inflates injection without real delivery valueInjection rate far exceeding delivery rate sustained over 5+ minutes
Recipient rejection rateShows whether recipient validation is activeDrop in rejections coinciding with bounce rate spike
Inode usage on queue filesystemEach bounce and double-bounce creates small queue filesAbove 80% used on the partition holding /var/spool/postfix
Relay attempt rejection rateIndicates whether relay restrictions are catching forged trafficDrop in “relay access denied” log entries with rising bounces
Maildrop queue depthBounces are generated locally via pickup daemonPersistent files in maildrop older than 10 minutes

Fixes

Reject unknown recipients at SMTP time

This is the definitive fix. Every recipient must be validated during the SMTP transaction, before the message is queued.

For relay domains, configure relay_recipient_maps with an explicit list of valid recipients:

# The source file must already exist and contain entries.
# Format: validuser@domain  OK
postmap /etc/postfix/relay_recipients
postconf -e 'relay_recipient_maps = hash:/etc/postfix/relay_recipients'
postfix reload

For domains where you cannot maintain a static recipient list (for example, a backup MX for a primary server you do not control), use address verification:

# Review existing restrictions first - postconf -e replaces the entire list.
postconf -h smtpd_recipient_restrictions
postconf -e 'smtpd_recipient_restrictions = reject_unauth_destination, reject_unverified_recipient'
postfix reload

The reject_unverified_recipient check (Postfix 2.1+) probes the destination MTA in real time and caches the result. Be aware of the tradeoff: the official ADDRESS_VERIFICATION_README warns that this can increase load on downstream servers during dictionary attacks or backscatter floods. The persistent verification cache (address_verify_map) mitigates this by caching results across restarts. The cache has been persistent by default since Postfix 2.7 (btree:$data_directory/verify_cache, or $default_cache_db_type:$data_directory/verify_cache on Postfix 3.11+), and it only has an effect when address verification is actually used.

Do not change unverified_recipient_reject_code from its default of 450 to 250. The Postfix documentation explicitly warns this turns your server into a backscatter source under load.

Remove wildcard catch-all aliases

If your virtual alias map or relay recipient map contains @domain wildcard entries, every address in that domain is accepted. During a spam flood targeting random addresses at your domain, this generates bounces for every forged sender.

Replace wildcard entries with explicit recipient lists. If you must keep a catch-all for operational reasons, understand that your server will generate backscatter during any spam campaign targeting that domain.

Fix local_recipient_maps configuration

The local_recipient_maps parameter specifies which local recipients are valid. By default (Postfix 2.0+), Postfix populates this from the Unix password file and alias database. If it is set to empty, all local recipients are accepted.

The critical gotcha: if you use luser_relay to redirect unknown local recipients, you must set local_recipient_maps to empty (disabling recipient validation). The LOCAL_RECIPIENT_README explicitly warns against doing this on systems receiving mail directly from the internet.

Check your configuration:

postconf -h local_recipient_maps luser_relay

If luser_relay is set and local_recipient_maps is empty on an internet-facing server, you have found the problem.

Stop an active storm

To stop bounce generation immediately, tighten recipient restrictions and reload. New connections will reject invalid recipients at SMTP time. Existing queued bounces still need cleanup.

To remove queued bounce messages without affecting legitimate mail:

# DANGER: This deletes messages from the queue. Verify the pattern matches
# only bounce messages before running.
# mailq output appends * (active) or ! (held) to queue IDs.
# The gsub strips those before passing to postsuper.

# Test the pattern first:
mailq | awk '/MAILER-DAEMON|double-bounce/ {gsub(/[*!]/,"",$1); print $1}' | head -20

# If the output looks correct, delete those queue entries:
mailq | awk '/MAILER-DAEMON|double-bounce/ {gsub(/[*!]/,"",$1); print $1}' | postsuper -d -

Review the output carefully before piping to postsuper. Do not run postsuper -d ALL unless you are prepared to lose every queued message, including legitimate mail.

Address blocklisting

After fixing the root cause, request delisting from any DNSBL that listed your IP. Some blocklists (particularly those targeting backscatter sources) require admin-initiated removal and will re-list you if the underlying problem persists. Fixing recipient validation before requesting delisting is mandatory; delisting without a fix guarantees re-listing.

Prevention

  • Monitor bounce rate explicitly. Bounces count as “sent” in simple delivery metrics. You need a dedicated counter for status=bounced entries, not just delivery success/failure. Alert on sustained rates above 1% or any sudden 10x spike from baseline.
  • Keep relay_recipient_maps current. Stale maps that are missing valid recipients cause false rejections. Maps that include too many entries or wildcards cause backscatter. Sync from your authoritative directory on a schedule.
  • Audit recipient validation after every configuration change. Any change to smtpd_recipient_restrictions, relay_domains, virtual_alias_domains, or transport_maps can silently disable recipient validation. Run postfix check and test with an invalid recipient after changes.
  • Use postscreen to reduce inbound spam volume. Postscreen blocks obvious zombies before they reach smtpd, reducing the volume of spam that reaches your recipient validation logic.
  • Check DNSBL listings proactively. Query major blocklists for your IP on a schedule, not just when recipients complain. Backscatter listings can appear within hours of a storm starting.

How Netdata helps

Netdata’s Postfix collector surfaces the signals that indicate a backscatter storm before it reaches the blocklisting stage:

  • Per-second queue depth tracking across active, deferred, maildrop, and incoming queues. A spike in maildrop combined with deferred growth while MAILER-DAEMON messages accumulate is the earliest indicator of bounce generation.
  • Mail flow velocity correlation. Injection rate outpacing delivery rate, combined with rising bounce counts, distinguishes a backscatter storm from a normal delivery backlog or slow-destination queue buildup.
  • Inode utilization monitoring on the queue filesystem. Each bounce and double-bounce creates small queue files that consume inodes independently of disk space.
  • Process count tracking for smtpd, bounce, cleanup, and pickup daemons. Sustained elevation in bounce daemon activity with high smtpd utilization indicates active NDR generation under load.
  • Anomaly detection on bounce rate and queue growth velocity. Netdata learns the baseline for each signal and flags deviations without manually tuned thresholds.