checkId: check.notify.channel.connectivity plugin: stellaops.doctor.notify severity: warn tags: [notify, channel, connectivity, network, air-gap]

Notification Channel Connectivity

This Doctor check is the setup-wizard compatibility check for Notify channel reachability. It probes configured Email, Slack, Teams, and generic Webhook destinations from the Doctor runtime and reports a single aggregate result.

What It Checks

The check reads the configured Notify channels and tests reachability:

In sealed or forced offline mode, external Slack and Teams probes are skipped. External Email and Webhook targets are also skipped, while loopback, RFC1918, link-local, and IPv6 unique-local addresses still run because they can be internal services inside the sealed perimeter.

Why It Matters

Configuration-only checks prove that a value exists. This check proves Doctor can reach the configured delivery targets from the deployed runtime. It catches firewall, DNS, proxy, TLS, and service availability problems before operators depend on Notify for incident and release-gate alerts.

Common Causes

How to Fix

Docker Compose

docker exec <doctor-container> getent hosts smtp.internal.example
docker exec <doctor-container> nc -zv smtp.internal.example 587
docker exec <doctor-container> curl -I https://notify.internal.example/hooks/stella

Bare Metal / systemd

getent hosts smtp.internal.example
nc -zv smtp.internal.example 587
curl -I https://notify.internal.example/hooks/stella

If the site is sealed, prefer internal SMTP relays and webhooks using loopback or private addresses.

Kubernetes / Helm

kubectl exec -it deploy/stellaops-doctor -- nc -zv smtp.internal.example 587
kubectl exec -it deploy/stellaops-doctor -- curl -I https://notify.internal.example/hooks/stella
kubectl get networkpolicy -A

Verification

stella doctor run --check check.notify.channel.connectivity