Initial skills documentation — 25 categories, all SKILL.md + references + scripts

This commit is contained in:
root
2026-07-15 17:42:20 -04:00
commit 1b4fcd4427
976 changed files with 188344 additions and 0 deletions
@@ -0,0 +1,57 @@
# Apex WPForms Email Troubleshooting
WPForms on apextrackexperience.com (wphost02, RunCloud CPX21) uses WP Mail SMTP plugin to send through c1113726.sgvps.net:2525.
## Known Failure Modes
### 1. PHP Serialization Corruption
The password stored in WP Mail SMTP settings uses PHP serialized format. If the password contains special characters, the serialized length (s:N:) can become wrong:
```
s:72:"apex.track!!" ← WRONG: password is 13 chars, not 72
s:13:"apex.track!!" ← CORRECT
```
**Symptom:** SMTP auth fails silently. WP Mail SMTP can't read the password. Registration emails never send. The site shows "form submitted" but no email arrives.
**Fix:** UPDATE wp_options SET option_value = REPLACE(option_value, 's:WRONG_LEN:"', 's:CORRECT_LEN:"') WHERE option_name = 'wp_mail_smtp'
### 2. Sender Address Contains Multiple Emails
The sender_address field in form notifications must be a single email address. WPForms allows entering comma-separated emails but this creates an invalid From header:
```
"sender_address":"contact@apextrackexperience.com, g@germainebrown.com" ← INVALID
"sender_address":"contact@apextrackexperience.com" ← VALID
```
**Symptom:** SMTP server rejects with "Message rejected. domain.com is not currently owned by sender"
**Fix:** UPDATE wp_posts SET post_content = REPLACE(post_content, 'sender_address":"...", g@...', 'sender_address":"contact@apextrackexperience.com') WHERE ID IN (form_ids)
### 3. Password Format Changed by WP Mail SMTP Plugin Update
Plugin updates can re-serialize the password with incorrect length. Check after every WP Mail SMTP or WPForms update.
## Manual Verification
```bash
ssh -i /root/.ssh/itpp-infra root@5.161.62.38 '
mysql -u apextrackexperience_1781549652 -p"K3E1ZZWvHDu0q8ZmoBCAhzKUZawEapdGBlbaPME1sOTKgGk9FCuYS" apextrackexperience_1781549652 -e "
SELECT option_value FROM wp_options WHERE option_name = \"wp_mail_smtp\";
" | grep -o "s:[0-9]*:\\\\\"apex" | head -1
'
```
If the length (s:N) is wrong, apply fix #1.
## Watchdog Cron
The cron `apex-mail-watchdog` runs every 5 min on Core:
- Sends test SMTP email via the Apex SMTP server
- Checks wp_wpmailsmtp_debug_events for recent failures
- Silent on success, alerts on failure
Script: /root/.hermes/scripts/apex-mail-watchdog.sh
Log: /var/log/apex-mail-watchdog.log