# Forwarded mail

Much of the mail a small business wants processed does not arrive directly: an owner forwards a customer's message from their phone, or a mailbox rule at Gmail or Outlook forwards everything to an address here. The platform recognises both, records who really wrote the message and who passed it on, and lets each bucket decide whom to trust.

## What is recognised

| Shape | How it arrives | What is recovered |
|---|---|---|
| Automatic | A mailbox rule or alias forwards on behalf of its owner. The original From header survives; the envelope sender is the forwarding mailbox, often rewritten (SRS); markers such as `X-Forwarded-For`, `Resent-From` or an ARC chain are present. | Original sender from the From header, forwarder from the envelope or markers, the earlier hop's authentication results from `ARC-Authentication-Results` when present. |
| Manual | A person presses Forward. The forwarder is the From header; the original headers are quoted in the body ("Forwarded message", "Begin forwarded message", "Original Message", and localised forms). | Original sender, subject and date from the quoted block. |
| Attached | The client attaches the original as a `message/rfc822` part. | Original sender, subject and date from the attached message's headers; its text becomes a document. |

`get_message` shows `forward` with the kind, the forwarder, the recovered original sender, and the evidence: which markers led to the conclusion, so a person can check.

## Trust is per bucket

Recovery is evidence, not authority. By default a forwarded message is simply from whoever delivered it: for a manual forward that is the person who forwarded; for an automatic forward the From header, which the forwarding mailbox could have altered.

A bucket names the forwarders it trusts in its policy:

```json
{ "policy": { "forwarders": ["office@acme-plumbing.example", "@acme-plumbing.example", ".mail.example"] } }
```

Entries are an address, `@domain`, or `.domain` for the domain and its subdomains. For a message forwarded by a trusted forwarder, that bucket's rule, extractors and records use the recovered original sender: `sender`, `sender_domain`, and `mailbox` extractors on `from` all mean the author. The classification says `senderUsed: "original"` when that happened. Every other bucket sees the message as from the forwarder.

Trusting a forwarder means trusting it not to tamper with the original-sender information it relays. Authentication results always belong to the hop that delivered to us; the earlier hop's results, when an ARC chain carried them, are shown separately as `originalAuth` and never substituted.

## Rules about forwarding

- `{"forwarded": true}`: the message was forwarded, in any shape.
- `{"forwarder": "@acme-plumbing.example"}`: who forwarded it, by address, `@domain` or `.domain`.

## Forwarding rules from Gmail and Outlook

When you set a mailbox to forward into mximp, the provider first sends a confirmation to the destination address. The platform recognises it, holds it as a `forwarding_verification` task, and puts the confirmation code and link in the task and in the ingest result's `next` hints, so your agent can read the code without a person opening a mailbox. Enter it in the forwarding mailbox's settings, then `resolve_task`.

Once forwarding is running, tell the address who to expect: `set_address_forwarders` with the forwarding mailbox (`office@acme.example`) or its domain. Mail arriving at that address from anyone else is flagged `unexpected_sender` and held by default, which keeps a forwarded stream as trustworthy as a per-relationship address. That is separate from a bucket's `policy.forwarders`, which decides whose original-sender information a bucket believes.

## Setting it up

1. Have the mailbox forward to an address on your handle: `acme.claims@mximp.com`.
2. Ingest one forwarded message and read `get_message` → `forward` to see what was recovered and from what evidence.
3. Add the forwarder to the bucket's `policy.forwarders` with `update_bucket`, then `reprocess_message`.
4. `promote_to_test` the result, so the trust and the extractors stay covered.
