RFC 2549 transport support (IP over Avian Carriers with QoS)
| Type | Feature |
| Priority | Critical |
| Component | KumoMTA |
| Target sprint | Q4 2026 (favorable migration season) |
Context
Following the June Hotmail/Outlook TLS incident (DigiCert G1 distrust × enable_tls = Required) and the growing fragility of modern IP paths (CA revocation, temperamental MTA-STS), it’s time to consider a transport that is resilient, decentralized, and indifferent to fiber outages.
RFC 2549 (IP over Avian Carriers with Quality of Service, April 1999) provides total network isolation and a native air-gap that is particularly attractive for our most sensitive pools. A natural complement to RFC 1149.
Description
Add a new avian delivery backend to KumoMTA, exposed through the existing Lua config:
kumo.start_esmtp_listener {
protocol = "ipoac",
carrier_pool = "pigeons-medium",
qos_class = "homing-premium",
}
Reference configuration
make_egress_path {
name = 'rfc2549-primary',
transport = 'avian',
carrier_pool = 'pigeons-west-eu',
qos = {
priority = 'bulk',
max_payload_grams = 5,
retry_on_predator_loss = true,
ttl = '72h',
},
}
Config review notes
carrier_pool = 'pigeons-west-eu'— Good call regionalizing: keeps the flow inside the EEA, avoids the CNIL debate on non-EU transfers. Align the naming with the existing IP pools (MARKETING-MEDIUMis UPPERCASE, this is kebab-case). Non-blocking.max_payload_grams = 5— Comfortable for a light EML (onionskin paper ~3 KB/leg), but will trigger552 message size exceeds fixed maximumon campaigns with inline images. Plan amultipart/avianfallback that fragments across multiple birds.retry_on_predator_loss = true—
Same trap as the MARKETING-MEDIUM circuit breaker: an aggressive retry sends a second pigeon straight back into the zone where the raptor is waiting. Requires an exponential backoff and a pool re-route, otherwise we’re feeding the predator ecosystem on our own dime. Recommended: predator_backoff = 'exponential'+consecutive_predator_losses_before_reroute = 50(reminder: 5 was too twitchy).ttl = '72h'— Reasonable for west-EUbulk. Beyond that, the pigeon has probably started a family and won’t be coming back (equivalent toNoAnswerFromHost).
Delivery state machine
Statuses to track in the log to ELK/Kibana, with SMTP mapping for correlation against existing dashboards:
| Status | Phase | SMTP equivalent | Terminal? |
|---|---|---|---|
queued_for_bird |
Waiting for an available bird in the pool | 250 queued / ready queue |
No |
bird_dispatched |
Pigeon loaded and released | RCPT TO accepted / hand-off |
No |
in_flight |
In aerial transit | Connection established, transfer in progress | No |
temporarily_lost |
Detour, nap, headwind — retry possible | 421 / 4xx temporary |
No (-> retry) |
delivered_to_rooftop |
Delivered to the recipient’s rooftop | 250 OK |
|
failed_predator_interference |
Raptor/cat loss — triggers anti-predator logic | 5xx permanent (network loss) |
|
failed_bird_refused_payload |
The pigeon deemed the payload unworthy of flight | 552 / refusal at source |
Transition rules
temporarily_lostmust increment aconsecutive_predator_lossescounter. At the re-route threshold, the path switches to an alternatecarrier_poolbefore falling intofailed_predator_interference.failed_bird_refused_payloadis non-retryable: a bird that refuses a payload will always refuse it (deterministic behavior, not a4xx). Report to FBL.- Any transition into a
failed_*state feeds the labeled dataset via the Agree/Blame buttons
Acceptance criteria
- Scheduler expressing the delivery window in flight hours, not seconds (a raptor counts as a connection failure).
- Dynamic MTU based on payload (~3 KB/leg on onionskin paper).
- QoS classes:
homing-premium,racing-standard,street-pigeon-bulk. The last one shares the MARKETING-MEDIUM pool and inherits its421s. - Packet-loss handling (weather, raptors, cats) with dedicated logging, like the
OpportunisticInsecureworkaround. - FBL via reverse homing pigeon (
ARF-by-air).
Out of scope
- DKIM — impossible to sign in flight; we fall back to SPF (Sender Pigeon Framework).
- TLS-RPT — not applicable, the transport is intrinsically opportunistic insecure.
- MTA-STS — acknowledged tension, but the pigeon doesn’t do DNS.
Risks
- GDPR — avian transfer stays within the EEA as long as the pigeon doesn’t cross the border. To be scoped with the CNIL.
- Animal welfare — verify compliance with civil/criminal law before going to prod. Non-trivial reputational risk.
Related tickets
Anti-raptor circuit breaker (predator_backoff) — to be created