Initial skills documentation — 25 categories, all SKILL.md + references + scripts
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# SMTP delivery fallback patterns
|
||||
|
||||
When a script or cron job needs to send an email but SMTP is unreachable, use these fallback strategies.
|
||||
|
||||
## Current SMTP configuration
|
||||
|
||||
| Setting | Value |
|
||||
|---|---|
|
||||
| Host | `mail.germainebrown.com` |
|
||||
| Port | **2525** (NOT 587 — netcup blocks 25, 465, 587) |
|
||||
| TLS | STARTTLS |
|
||||
| From (outbound) | `g@germainebrown.com` |
|
||||
| Password file | `/root/.config/himalaya/g-germainebrown.pass` |
|
||||
|
||||
**Why 2525:** Netcup VPS blocks outbound ports 25, 465, and 587. The MXroute mail server (mail.germainebrown.com) accepts SMTP on port 2525. This was tested and confirmed working for both `g@germainebrown.com` and `shonuff@germainebrown.com`.
|
||||
|
||||
## Detect SMTP reachability first
|
||||
|
||||
```python
|
||||
import socket
|
||||
for port in [2525, 587, 465]:
|
||||
s = socket.socket()
|
||||
s.settimeout(5)
|
||||
try:
|
||||
s.connect(('mail.germainebrown.com', port))
|
||||
print(f'Port {port}: available')
|
||||
s.close()
|
||||
except (socket.timeout, ConnectionRefusedError, OSError):
|
||||
print(f'Port {port}: blocked')
|
||||
```
|
||||
|
||||
## Fallback: Wasabi S3 upload
|
||||
|
||||
If SMTP is completely unreachable:
|
||||
|
||||
```bash
|
||||
source /opt/awscli-venv/bin/activate
|
||||
aws s3 cp <path/to/file> s3://hermes-vps-backups/<filename> \
|
||||
--endpoint-url https://s3.us-east-1.wasabisys.com/
|
||||
```
|
||||
|
||||
Then notify the user via Telegram/DM: "File uploaded to Wasabi — grab it at `s3://bucket/key`"
|
||||
|
||||
## All scripts updated to use port 2525
|
||||
|
||||
The following files were patched from 587 → 2525 (confirmed working):
|
||||
- `/root/.hermes/scripts/send-recovery.py`
|
||||
- `/root/.hermes/scripts/send-backup-email.py`
|
||||
- `/root/.hermes/scripts/send-backup-readme.py`
|
||||
- `/root/.hermes/scripts/daily-feed-summary.py`
|
||||
- `/root/.config/himalaya/shonuff.toml`
|
||||
|
||||
## Future services (Mautic, etc.)
|
||||
|
||||
Any new service that sends email from this box must use port **2525**, not 587. Netcup's outbound port blocking applies to all servers in their network.
|
||||
Reference in New Issue
Block a user