Files
hermes-recovery/scripts/apex-mail-watchdog.sh

59 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# apex-mail-watchdog.sh — Check Apex WPForms email delivery every 5 min
# Runs from Core via SSH to wphost02. Tests SMTP + checks debug events.
# Exit codes: 0=OK, 1=SMTP FAIL, 2=DEBUG FAILURES
WPHOST="root@5.161.62.38"
ALERT_TO="g@germainebrown.com"
LOG="/var/log/apex-mail-watchdog.log"
SSH_KEY="/root/.ssh/itpp-infra"
TIMEOUT=15
log() {
echo "[$(date -u +'%Y-%m-%dT%H:%M:%SZ')] $*" >> "$LOG"
}
log "Apex mail watchdog check starting..."
# Step 1: Test SMTP connectivity (login only — no email sent)
TEST_RESULT=$(ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$WPHOST" \
"python3 -c \"
import smtplib, ssl
try:
ctx = ssl.create_default_context()
with smtplib.SMTP('c1113726.sgvps.net', 2525, timeout=$TIMEOUT) as s:
s.starttls(context=ctx)
s.login('contact@apextrackexperience.com', 'apex.track!!')
print('OK')
except Exception as e:
print(f'FAIL: {e}')
\"" 2>&1)
if echo "$TEST_RESULT" | grep -q "^OK"; then
log "SMTP test passed"
else
log "SMTP FAILED: $TEST_RESULT"
echo "RESULT:FAIL|$TEST_RESULT"
exit 1
fi
# Step 2: Check WP Mail SMTP debug events for recent failures
DEBUG_CHECK=$(ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$WPHOST" \
"mysql -u apextrackexperience_1781549652 -p'K3E1ZZWvHDu0q8ZmoBCAhzKUZawEapdGBlbaPME1sOTKgGk9FCuYS' apextrackexperience_1781549652 -N -e \
\"SELECT COUNT(*) FROM wp_wpmailsmtp_debug_events WHERE event_type = 0 AND created_at >= NOW() - INTERVAL 10 MINUTE;\"" 2>&1)
if echo "$DEBUG_CHECK" | grep -qE '^[0-9]+$'; then
FAILURES=$(echo "$DEBUG_CHECK" | tr -d ' ')
if [ "$FAILURES" -gt 0 ] 2>/dev/null; then
log "WARNING: $FAILURES email failures in last 10 min"
echo "RESULT:WARN|${FAILURES} failures detected"
exit 2
fi
log "No recent debug failures"
else
log "DB check failed (non-fatal): $DEBUG_CHECK"
fi
log "All clear"
exit 0