cirrux

Can my app send its account emails (sign-up confirmations, password resets) through Cirrux?

Yes. Add an address like noreply@ as an alias on an existing mailbox, create a workspace API key that may send from that mailbox, and send with two HTTP calls. SMTP with an app password works too. Newsletters and bulk mail don't belong here.

Mail that your app sends to one person because of something they did (confirming an email address, resetting a password, a receipt) can go out through Cirrux, from an address on your own domain. Newsletters, marketing and other bulk mail can't.

1. An address to send from

The sending address doesn't need a mailbox of its own. In admin.cirrux.co, go to Users, open the mailbox that should own it and click Create address, for example noreply@yourapp.com. The domain needs to be added and verified, with DKIM set up, as described in Domains & DNS.

2. Send over the API

In admin.cirrux.co, go to API keys and create a key with email.read, email.write and email.send, limited to that one mailbox. The secret is shown once, so store it in your app's secrets right away.

Sending takes two calls to https://api.cirrux.co/public_api: create a draft, then send it. GET /v1/mailboxes gives you the mailbox's uuid; it lists only the mailboxes the key may use.

First create the draft:

curl https://api.cirrux.co/public_api/v1/drafts \
  -H "Authorization: Bearer $CIRRUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mailbox_uuid": "<mailbox uuid>",
    "body_format": "markdown",
    "from": "noreply@yourapp.com",
    "to": [{ "address": "new.user@example.com" }],
    "subject": "Confirm your email address",
    "markdown": "Confirm it here: https://yourapp.com/confirm"
  }'

Then send it, with the uuid from that response:

curl -X POST https://api.cirrux.co/public_api/v1/drafts/<uuid>/send \
  -H "Authorization: Bearer $CIRRUX_API_KEY"

This only needs HTTPS, so it works from serverless platforms such as Cloudflare Workers, which can't always open SMTP connections. Every message sent this way shows up in the mailbox's Sent folder.

Or send over SMTP

If your app or framework already speaks SMTP, create an app password for the mailbox (in Cirrux Mail: Settings → Mailboxes, the mailbox, Passwords, New app password) and use smtp.cirrux.co, port 465 (SSL) or 587 (STARTTLS). Mail sent over SMTP doesn't get a copy in Sent.

How much you can send

Each mailbox can send 100 messages an hour and 500 a day, and a workspace 500 an hour and 2,000 a day. A workspace that is less than a month old starts lower and moves up to these limits during that first month. If your app needs more, mail help@cirrux.co.

Bounces and replies

When a message can't be delivered, the bounce goes back to the sending address, and so does a reply from someone who answers your noreply mail. If your domain's mail is delivered to Cirrux, both land in the inbox of the mailbox that owns the address. A filter can move them out of the way.

Still stuck? Email help@cirrux.co and we’ll help you out.