# Router SMTP Troubleshooting Reference Tested against `mail.germainebrown.com` (MXroute, port 2525) from a CCR2004-16G-2S+ (RouterOS 7.18.2) behind AT&T residential fiber via a netcup KVM. ## Validated Working Config ``` /tool/e-mail/set server=mail.germainebrown.com port=2525 tls=starttls \ from="g@germainebrown.com" password="" /ip/dns/set servers=10.1.1.14,10.1.1.10 /ip/firewall/filter/add chain=input action=accept connection-state=established,related \ place-before=1 comment="Allow established/related input" ``` ## Error Diagnosis Table | Log Error (`/log/print where topics~"e-mail"`) | Root Cause | Fix | |---|---|---| | `DNS resolve failed` | Router DNS empty or AT&T DHCP (192.168.1.254) can't resolve mail.germainebrown.com | `/ip/dns/set servers=` | | `timeout occured` | Missing established/related INPUT rule — SMTP connects but return packets are dropped by WAN-DROP | Add input established/related rule (see above) | | `AUTH failed` | Wrong SMTP password | `/tool/e-mail/set password=""` | | `succeeded` | Working | Nothing | ## The established/related INPUT Rule The router HAS an established/related rule on the **forward** chain (line 13), but unless explicitly added, the **INPUT** chain may lack one. Without it, any connection initiated BY the router (SMTP, DNS, API calls) has its response packets dropped by the WAN-DROP rule on the INPUT chain. **Symptom:** DNS resolved fine, port was correct, AUTH didn't fail — just `timeout occured`. The router's outbound SYN reached the server, the server responded with SYN-ACK, but WAN-DROP on INPUT killed the response before the SMTP process saw it. **Fix location:** Rule must be `chain=input` with `place-before=1` so it sits before WAN-DROP. NOT on the forward chain. ## Port Restrictions from netcup KVM Only port **2525** works for outbound SMTP from this netcup box. Ports 25, 465, 587 all timeout. This is a netcup infrastructure restriction, not a router issue. - TLS mode for port 2525: **starttls** (not `yes`/SSL) - TLS mode for port 465: **yes** (SSL/TLS direct) ## DNS Resolution Path The router's `dynamic-servers` comes from AT&T DHCP (192.168.1.254). AT&T's DNS cannot resolve `mail.germainebrown.com`. The static `servers` override must point to internal DNS (AdGuard at 10.1.1.14, 10.1.1.10). ## Verification Command ``` /tool/e-mail/print ``` Look for `last-status: succeeded`. If `failed`, check `/log/print where topics~"e-mail"` for the specific error and cross-reference the table above. ## Historical Context (Jul 9, 2026) During the core migration, the home router's SMTP had been broken for months (run-count=0 on all schedulers). The port was still set to 465 (from Hetzner days where port 465 worked). The DNS was using AT&T's DHCP servers. The INPUT chain had no established/related rule. Fixing all three in sequence produced the error progression: - DNS fix → `timeout occured` (was DNS resolve failed before) - INPUT rule fix → `AUTH failed` (was timeout before) - Password update → `succeeded` ## Router Scheduler SMTP (Email - Router Logs / Config / Backup) Three schedulers on the home router send daily email backups at 4:00 AM. They had `run-count=0` which means they had never successfully executed. When investigating broken schedulers: 1. **Check SMTP first** — `/tool/e-mail/print` shows last-status. If failed, check `/log/print where topics~"e-mail"` 2. **File name mismatch** — Scheduler uses `file=home-rtr-logs.txt` but `/log print file=logs` creates `logs.txt`, not `home-rtr-logs.txt`. The file created and the file attached by the scheduler MUST match exactly. Fix by making `/log print file=home-rtr-logs` create the correct base name, then attach `.txt`. 3. **RouterOS 7.18.2 file naming quirks:** - `/log print file=` creates `.txt` - `/export file=` creates `.rsc` (auto-appends .rsc) - `/system backup save name=` creates `.backup` - The scheduler's `file=` must include the correct extension **Fix pattern for scheduler scripts:** ``` # Logs — file base name must match across creation and send /system/scheduler/set [find where name="Email - Router Logs"] \ on-event="/log print file=home-rtr-logs\n:\delay 10\n/tool e-mail send \ to=\"g@germainebrown.com\" subject=\"...\" body=\"...\" file=home-rtr-logs.txt" # Config — export auto-appends .rsc /system/scheduler/set [find where name="Email - Router config (RCS)"] \ on-event="/export file=home-rtr-config\n/tool e-mail send \ to=\"g@germainebrown.com\" subject=\"...\" body=\"...\" file=home-rtr-config.rsc" ```