Route Migadu SMTP relay traffic through VPS, not VPN #179
Labels
No labels
audit-work
bug
docs
general-admin
major-upgrade
needs-vps-sync
new-service
on-hold
outside-work
post-podman
renovate
upstream
vps
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mysticalsoap/docker#179
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Forgejo (and the other Migadu-SMTP services — Authelia, Vaultwarden, Seerr, CWA) send outbound mail through this host's default route, which is ProtonVPN's kill-switch tunnel (
ip rule/fwmark-based, all non-excluded traffic gets forced throughproton0/ipv6leakintrf0). Proton's exit IPs are shared and rotate; one landed on Spamhaus ZEN on 2026-08-27 and Migadu quarantined a Forgejo → Renovate notification email as a result.Confirmed while diagnosing:
2001:41d0:203:375::1a) was an OVH-hosted Proton node, not this host's ISP IP or the VPS.66.135.18.105, Vultr) is currently clean on Spamhaus ZEN.Fix direction
Route the SMTP-to-Migadu hop through the VPS instead of the VPN tunnel, using a private WireGuard tunnel + NAT masquerade (preferred over standing up a Postfix smarthost relay on the VPS — keeps the Migadu credential confined to the home network instead of copying it onto the public-facing box). Whichever shape it takes, it should stay off the open internet — not exposed as a public listener — so it doesn't need to lean on the new CrowdSec edge bouncer for protection.
Scope narrowly: only SMTP-destined traffic should move off the VPN path. Everything else stays on ProtonVPN as-is.
Blocked on
Waiting on the VPS overhaul so this gets built on the Quadlet pattern once, rather than as a bare ad-hoc setup now:
No urgency otherwise — this only affects non-critical notification mail so far.