Files
jcoffey-dev dd2554aa82
ci / fork-checks (pull_request) Skipped
ci / build (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 10m26s
relay: hand outbound mail to relays and follow its status
With sendThrough on, every non-local recipient is handed to a linked
relay that may send, in turn, skipping inboundOnly ones; with none
linked the mail waits in the queue (RL-20, RL-24). The queue marks the
recipients as handed to the relay and shows its replies. The lowest
linked node follows Outbound by push, records each final status so the
queue sends the DSNs, and destroys the relay's copy.

DeliveryStatus gains mx, the host a reply came from. The relay's
test-mx feature sends all mail to one local port for the system test,
which now covers hand-over, delivery, one DSN for a refusal (RL-T11),
and a deferral shown in the queue.
2026-10-30 09:16:02 -07:00

45 lines
1.8 KiB
TOML

[package]
name = "inbuxa-relay"
description = "inbuxa Relay: a small edge appliance that takes mail in for one downstream inbuxa server and sends its mail on (docs/spec/features/relay.md)"
license = "AGPL-3.0-only"
version.workspace = true
edition = "2024"
[[bin]]
name = "inbuxa-relay"
path = "src/main.rs"
# The footprint rule (RL-30): no inbuxa server crate. Everything here is
# small, and most of it the server already uses.
[dependencies]
inbuxa-relay-proto = { path = "../relay-proto" }
inbuxa-outbound-tls = { path = "../outbound-tls" }
rustls-native-certs = "0.8"
aws-lc-rs = { version = "1" }
smtp-proto = { version = "0.2.3" }
tokio = { version = "1.53", features = ["rt-multi-thread", "net", "io-util", "time", "sync", "macros", "signal", "fs"] }
rustls = { version = "0.23.43", default-features = false, features = ["std", "aws_lc_rs", "tls12"] }
tokio-rustls = { version = "0.26", default-features = false, features = ["aws_lc_rs", "tls12"] }
rustls-pki-types = { version = "1", features = ["std"] }
rustls-webpki = { version = "0.103", default-features = false, features = ["std", "aws-lc-rs"] }
rcgen = { version = "0.14", default-features = false, features = ["crypto", "pem", "aws_lc_rs"] }
x509-parser = { version = "0.18" }
hyper = { version = "1.11.1", features = ["server", "client", "http1"] }
hyper-util = { version = "0.1.20", features = ["tokio"] }
http-body-util = "0.1.5"
tokio-tungstenite = "0.30"
futures-util = "0.3.34"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
[features]
# For the server's system tests only: `INBUXA_RELAY_TEST_MX=<port>` sends
# every domain's mail to 127.0.0.1 on that port. Never in a release.
test-mx = []
[lints]
workspace = true
[dev-dependencies]
hyper = { version = "1.11.1", features = ["client", "http1"] }