You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Address PR #50 review feedback on enable_ipv6 flag
- Extract connect-target selection into pure `select_connect_target()` with
`ConnectTarget` enum; add unit tests covering all four IPv4/IPv6 combinations.
- Skip MX hosts with no A record when `enable_ipv6 = false` instead of silently
falling through to the hostname (which could still resolve to IPv6 and
violate the flag). Emits a clear "no A record; skipping" error so
`try_deliver` moves on to the next MX.
- Replace blocking `ToSocketAddrs` in `resolve_ipv4` with a new
`mx::resolve_a()` helper built on `hickory-resolver`, for consistency with
MX resolution and to avoid blocking getaddrinfo in tokio workers.
- Add a doc comment on `resolve_ipv4` explaining why it exists (flag
semantics, third add/remove in three sprints) to prevent future deletion.
- Add a doc comment on TLS SNI vs. connect-target mismatch while
`dangerous_accept_invalid_certs` is set.
- Extract `detect_server_ipv6(enable_ipv6, net)` gate in setup.rs and add
tests using `get_server_ipv6_calls` counter on `MockNetworkOps` to verify
the network call is made iff the flag is true.
- Correct book/configuration.md: `aimx verify` only probes port 25, not IPv6;
the flag only affects `aimx setup`.
- Add post-merge addendum under Sprint 26 in docs/sprint.md noting that this
follow-up flipped the default to opt-in IPv6.
Copy file name to clipboardExpand all lines: book/configuration.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -111,7 +111,7 @@ If your server has a global IPv6 address and you want outbound mail to use it:
111
111
112
112
See the full DNS records table in [Setup](setup.md#dns-configuration) for formats. Without these DNS updates, messages delivered over IPv6 will fail SPF and may be rejected under your DMARC policy.
113
113
114
-
**When `enable_ipv6` is unset or `false`:**`aimx setup`and `aimx verify` ignore IPv6 entirely — no AAAA is advertised, no `ip6:` SPF is generated, and existing AAAA records in DNS are not validated (but their presence is harmless).
114
+
**When `enable_ipv6` is unset or `false`:**`aimx setup`ignores IPv6 entirely — no AAAA is advertised, no `ip6:` SPF is generated, and existing AAAA records in DNS are not validated (their presence is harmless). `aimx verify` only probes port 25 connectivity and is unaffected by this flag.
115
115
116
116
Leave `enable_ipv6` unset (or `false`) if any of these apply:
Copy file name to clipboardExpand all lines: docs/sprint.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -244,6 +244,16 @@ Completed sprints 1–21 have been archived for context window efficiency.
244
244
245
245
## Sprint 26 — IPv6 Support for Outbound SMTP (Days 73–75.5) [DONE]
246
246
247
+
> **Follow-up addendum (post-merge):** A later PR (`enable-ipv6-config-flag`)
248
+
> flipped the default back to IPv4-only and made IPv6 outbound opt-in via a
249
+
> new `enable_ipv6` bool in `config.toml`. The Sprint 26 ACs below still
250
+
> describe the original "OS chooses the family" behaviour that shipped when
251
+
> this sprint merged; the current shipped default is IPv4-only, and the
252
+
> dual-stack SPF / AAAA guidance is only emitted by `aimx setup` when
253
+
> `enable_ipv6 = true`. See PRD FR-7, FR-19, resolved-decision #8 and
254
+
> `book/configuration.md` "IPv6 delivery (advanced)" for the current
255
+
> behaviour.
256
+
247
257
**Goal:** Remove the IPv4-only workaround from outbound delivery and properly support IPv6 across SPF records, DNS guidance, and verification. The IPv4 preference was added in Sprint 25 as a workaround for SPF failures — now that DKIM is fixed, let the OS resolve addresses naturally and ensure SPF covers both address families.
0 commit comments