59 lines
1.9 KiB
Bash
Executable File
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
|