Skip to main content

CFEG — Cloudflare Email Gateway

·633 words·3 mins
Reyn Hartono
Author
Reyn Hartono
I build and operate systems that stay reliable and secure under real load. Open to senior roles in backend and SRE/infra, and to technical leadership — remote, globally.

CFEG is a gateway on Cloudflare Email Routing: keep what you receive when you want, forward on your terms, and reply or compose as the original address — even when you have hundreds of them.

Repos: cf-email-gateway · cfeg-reply-extension


The problems
#

1. Forwarding is lossy
#

Cloudflare can route mail to Gmail (or another inbox). That path is not a vault.

Inbound delivery can fail when the destination is down, the mailbox is full, or you hit rate limits. If the only copy was “whatever made it through forward,” that mail is gone.

CFEG can archive on receive so you keep a durable copy of what hit the domain, independent of the downstream inbox’s mood. Forward stays optional: archive + forward, archive only, forward only — per how you configure the worker.

2. Reply-as-original is painful at scale
#

Mail that lands in a shared/forwarded inbox is awkward to answer from the address the sender wrote to.

Gmail’s Send mail as works for a handful of identities. It does not work when you run:

  • many role addresses, or
  • catch-all privacy mail — one domain, local part unique per service (netflix@…, bank@…, random-shop@…), hundreds of addresses over time

You are not going to click through Send-mail-as setup for every alias. So people reply from the catch-all inbox address, break expectations, or abandon the privacy scheme.

CFEG reply tokens fix that: reply (and compose) using the right identity without provisioning each address in Gmail.

One personal pattern CFEG is built around: catch-all privacy domain → every service gets a unique local-part → still reply/compose as that address through the gateway, including from Gmail via the companion extension.


What CFEG does
#

CapabilityWhy it matters
Archive on receive (optional)Keep a copy when you enable it; survive dest outages, full storage, rate limits
Forward (optional)Forward after processing, or skip forward for keep-only / quiet sink
Reply tokens / hopAnswer as the original recipient address without per-alias Send mail as
Compose as any addressNew mail from catch-all / role identities in the same model
Gmail extensionReply / Reply-All in the UI you already use, routed through CFEG

Who it’s for
#

  • Domains on Cloudflare Email Routing that need a real receive log, not only a best-effort forward
  • People and teams juggling many identities on one domain
  • Catch-all privacy setups where unique local-parts are the product, not an edge case
  • Anyone tired of Send mail as as the identity plane

How it fits together
#

Inbound — your policy, not a fixed pipeline
#

Sender
Cloudflare Email Routing
CFEG Worker
  ├─► Archive (optional)
  └─► Forward (optional) ──► Your inbox

Examples:

  • Archive + forward — keep a copy and still land mail in the inbox
  • Archive only — durable keep, no forward
  • Forward only — routing without CFEG archive
  • Enable at least one path that matches how you want mail handled

When archive is on, the kept copy does not depend on the destination being up, having free storage, or accepting more mail right then.

Outbound — reply / compose as the original address
#

Gmail (CFEG extension) or send/reply client
CFEG hop (reply / compose token)
Sent as the real address
  (catch-all local-part, role address, etc.
   — no per-alias Gmail "Send mail as")

Inbound is no longer “forward or bust.” Outbound identity is no longer “only the addresses Gmail knows.”


Try it / code
#

Built for operators who want mail they can trust on Cloudflare — kept when you choose to archive, and speakable from every address the domain owns.


Note
#

CFEG is open tooling around Cloudflare Email Routing. Wire it to your own routes, storage, and policy. Archive and forward are independent options.