Skip to content

SMTP — алерт по росту bounce-rate из postfix-логов

Postfix начал bounce-ить часть писем (домен подмочил репутацию) — но видишь это только когда клиенты пишут в support: «не пришло письмо».

Рецепт

bash
#!/usr/bin/env bash
# /etc/cron.d/smtp-bounce-rate
# */5 * * * * root /opt/smtp-bounce.sh

LOG=${LOG:-/var/log/mail.log}
WINDOW=300       # last 5 min
BOUNCE_PCT=${BOUNCE_PCT:-3}   # alert above 3 % bounces
SINCE=$(date -d "-${WINDOW} seconds" '+%b %_d %H:%M')

read SENT BOUNCED < <(awk -v since="$SINCE" '
  $0 >= since {
    if (/status=sent/)              s++
    if (/status=bounced|status=deferred/) b++
  }
  END { print s+0, b+0 }
' "$LOG")

TOTAL=$((SENT + BOUNCED))
[ "$TOTAL" -lt 50 ] && exit 0   # not enough volume to judge

PCT=$((BOUNCED * 100 / TOTAL))
if [ "$PCT" -gt "$BOUNCE_PCT" ]; then
  echo "smtp-bounce: $BOUNCED / $TOTAL = ${PCT}% (threshold ${BOUNCE_PCT}%)"
  curl -fsS "$HEARTBEAT_URL" --data "bounce=${PCT}%"
  exit 2
fi
echo "OK (${PCT}% bounces)"

То же самое в Enterno.io

Подключите DMARC RUA-отчёты в Enterno DMARC — увидите не только локальные bounces, но и отчёты от провайдеров (Gmail, Yahoo) с точным указанием причины (DKIM/SPF/policy).

Настроить HTTP monitor → ← Все рецепты

Похожие рецепты

Маркетолог-стажёр меняет DMARC с <code>p=quarantine</code> на <code>p=none</code> ради «исправить bounce» — через час Gmail помечает все рассылки как спам.