Data privacy
relay processes your message data only to deliver email and to show you
reports. The defaults follow one line: keep the data, keep it short, keep it
in Europe, and never build something on top of it. This page states what
relay runs, what relay stores, and what relay will not do.
Hosting
All relay services run on Hetzner, in the Falkenstein data center (fsn1) in
Germany:
| Component | Role | Processes |
|---|---|---|
| Web dashboard and API | Your browser and your OAuth sign-in | Django web application behind a TLS-terminating reverse proxy |
| MCP server | Message access for AI assistants | FastMCP ASGI application behind the same reverse proxy |
| Authoritative nameserver | DNS for your sender domains | DNS proxy (dnsdist) and dnslib nameserver |
| SMTP submission | Your message submissions | aiosmtpd on 587 and 465 |
| MX | Inbound delivery on 25 | aiosmtpd, STARTTLS |
| Task worker | Asynchronous delivery, scans, webhooks | Threadmill task runner |
| PostgreSQL | Message metadata, org and domain state | Postgres 18+ |
| Redis | Caching and rate limiting | Redis |
| Object storage | Raw message bodies | S3-compatible bucket, behind a proxy that serves signed links |
| Spam and virus scanning | Content filter | rspamd with ClamAV, cluster-internal |
No component of this stack belongs to a provider in a third country. relay’s
servers make no third-country data transfers. Location lookups run in your
browser, not on relay’s servers, and are described under Data flows.
The node’s first-boot configuration is stored with Hetzner as the server’s user
data, because that is how the node’s operating system receives it. That document
holds the cluster’s private keys, and Hetzner serves it back to anything running
on the node. relay treats the node as inside the trust boundary for its own
cluster credentials, and it accepts the risk deliberately: the alternative is a
hand-rolled install that gives up repeatable provisioning. See
Security for the full
limitation.
What relay stores, and for how long
| Data | Where | How long |
|---|---|---|
| Raw message bodies | Object storage | Only for delivery, deletion after successful delivery |
| Message metadata | PostgreSQL | 30 days |
| Message headers (DKIM signatures, sender IPs) | PostgreSQL | With the retention of the message metadata |
| SMTP and webhook transcripts | PostgreSQL, with the message | With the message retention |
| DMARC, TLS-RPT, webhook-delivery records | PostgreSQL | With the retention of the message metadata |
| Suppression list | PostgreSQL, salted SHA-256 hashes | Until you remove the entry |
The binding legal text is the privacy
policy. This table describes how the platform implements it.
What relay never stores
- Plain suppressed addresses. A suppression entry is a salted SHA-256
hash of the lowercased address. relay can compare, but not read back. - The message body inside webhook payloads. A delivery carries the event
and a signed, expiring storage URL. The link grants read access to that one
message for an hour. The body never travels inline. - Passwords. GitHub OAuth signs in, and relay stores no password at all.
- API keys in plain form. The database holds prefixes and hashes. The
plain key is visible once at creation. - Customer-supplied Feedback-IDs. relay replaces them with its own header
at submission. The message does not carry your campaign identifiers.
Monitoring with boundaries
Sentry is off by default. When operators enable it, error reports contain no
message bodies, tokens, or credentials.
What relay does not do with your data
- no profiling of your senders or recipients,
- no data mining, no model training on your content,
- no sale and no resale of message data.
Processing exists for delivery, for bounces, for reports, and for the
dashboards you use. Anything else requires an explicit product
decision, not a hidden default.
Data flows
- GitHub OAuth provides your identity at sign-in. relay stores your
GitHub identity and your email address, and requests the email addresses
scope only. - Sending requires the platform to talk to receiving mail servers and to
DNS resolvers. Delivery is the product. - IP location lookups happen in your browser. relay runs them when you
open a transmission drawer that carries an IP address and when a DMARC
report lists source IPs. Your browser sends those addresses to ipwho.is
for an approximate location. Transmission drawers also load map tiles
from OpenFreeMap. relay does not proxy these requests, does not store the
result, and does not send message data to either service. - Reports come in from mailbox providers to the addresses your DMARC
and TLS-RPT records name. relay parses them for your dashboards.
GDPR
relay operates under GDPR rules, and the platform design supports them:
EU-only processing, short storage, data minimization, and encryptions at
rest for secrets. For legal binding commitments, read the
terms of service and the
privacy policy, which also cover
your rights as a data subject.
Related pages
- Security. Access
control and key protection. - Encryption. TLS and
key material at rest.