# Manage the suppression list

> See which addresses the relay no longer sends to and why, add an address yourself, and remove one to send to it again.

Source: https://www.coritan.com/docs/mail/smtp-relay/suppressions/

In the dashboard:

- /dashboard/mail/…/suppressions: https://www.coritan.com/dashboard/mail

The *suppression list* holds the addresses that an SMTP Relay service no longer sends to. We add an address when a message to it bounces, when its recipient complains about a message, or when they unsubscribe from marketing mail, and you can add addresses yourself. Each relay has its own list.

A suppression covers every message the relay sends, over SMTP and over the send API, transactional and marketing alike. It lasts until you remove the address.

## Before you begin

- An SMTP Relay service. To add an address on the **Suppressions** tab, the relay's status must be `active`; while it is not, the **Address** field is greyed out.

## Why an address is on the list

The **Reason** column says how each address got there:

| **Reason** | `reason` in the API | When we add the address |
| --- | --- | --- |
| **Hard bounce** | `bounce` | A message to it was not delivered and we stopped trying: the `bounced` event. |
| **Spam complaint** | `complaint` | A report about a message to it reached us: the `complaint` event. |
| **Unsubscribed** | `unsubscribe` | The recipient used the unsubscribe link in a [marketing message](/docs/mail/smtp-relay/message-categories/). |
| **Added by you** | `manual` | You added it on the **Suppressions** tab or through the API. |

**Since** shows how long ago the address was added. [Receive delivery events with webhooks](/docs/mail/smtp-relay/webhooks/#events) says when each event happens.

We match the whole address and ignore case, so `Alex@Example.com` is the same entry as `alex@example.com`, while `alex+news@example.com` is a different one.

## What a suppression does

When a message goes to a suppressed address:

- Over SMTP, the relay refuses that recipient with `550 5.1.1 Recipient alex@example.com is suppressed after a bounce or complaint` and accepts the others. The reply names a bounce or complaint whatever the reason, including for an address you added.
- Through the send API, we leave the address out, send the message to the other recipients, and list the address in the `suppressed` field of the answer. [Send email over HTTPS](/docs/mail/smtp-relay/send-with-the-api/#read-the-answer) shows the answer.

Neither case produces a webhook request. A refusal over SMTP can appear on the [**Events** tab](/docs/mail/smtp-relay/events/) as `rejected`.

## Add an address

1. In the dashboard, go to [**Email**](https://www.coritan.com/dashboard/mail), open the SMTP Relay service, then the **Suppressions** tab.
2. Under **Suppress an address**, enter the address in **Address**, such as `alex@example.com`.
3. Select **Suppress address**.

## Result

A toast confirms it, such as `alex@example.com suppressed.`, and the address is listed with the reason **Added by you**. From then on the relay refuses to send to it.

When the address is already on the list, the toast says `alex@example.com is already suppressed.` and the entry keeps its reason and date.

## Find an address

The list shows the 200 addresses added most recently, newest first. An older entry still applies, but it does not appear on the tab or in the API.

To narrow the list, type in the search field above it. It matches part of an address, or a reason as the API names it, such as `bounce` or `unsubscribe`.

## Remove an address

> [!WARNING]
> An address that bounced or complained is likely to do so again. Each bounce and complaint counts against the relay's reputation, and a relay whose rates get too high has its sending paused. [Sending reputation and deliverability](/docs/mail/smtp-relay/deliverability/) explains the thresholds.

1. On the **Suppressions** tab, find the address and select **Release…** in its row.
2. Select **Release address**.

A toast confirms it, such as `alex@example.com released.` The relay sends to the address again straight away. If a new message to it bounces or draws a complaint, we add it back.

For someone who unsubscribed, remove the address only once they have asked to hear from you again.

## Troubleshooting

`550 5.1.1 Recipient alex@example.com is suppressed after a bounce or complaint`
: The address is on the relay's suppression list, for any of the reasons above. Remove it if you should mail it again.

`Enter an email address, such as someone@example.com.`
: The text in **Address** is not an email address. Enter the whole address.

The **Address** field is greyed out
: The relay's status is not `active`.

An address you expect is not in the list
: The list shows only the 200 most recent entries, and the search looks only through those. An older entry still applies. Adding the address again tells you whether it is on the list: the toast says `is already suppressed` when it is.

## Related

- [Receive delivery events with webhooks](/docs/mail/smtp-relay/webhooks/)
- [Look up message events](/docs/mail/smtp-relay/events/)
- [Transactional and marketing mail](/docs/mail/smtp-relay/message-categories/)
- [SMTP Relay suppressions API reference](/docs/api/reference/client/mail/smtp-relay-suppressions/)

## With the API

List the addresses:

```bash
curl https://api.coritan.com/api/v1/client/smtp-relay/4812/suppressions \
  -H "Authorization: Bearer $CORITAN_TOKEN"
```

```json
{
  "items": [
    {"id": 5120, "address": "alex@example.com", "reason": "bounce", "created_at": "2026-09-16T10:52:08"},
    {"id": 5087, "address": "sam@example.net", "reason": "manual", "created_at": "2026-09-12T08:15:40"}
  ]
}
```

The list holds the 200 entries added most recently, newest first, and takes no paging parameters. `reason` is `bounce`, `complaint`, `unsubscribe` or `manual`, and `created_at` is in UTC.

Add an address:

```bash
curl -X POST https://api.coritan.com/api/v1/client/smtp-relay/4812/suppressions \
  -H "Authorization: Bearer $CORITAN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"address": "alex@example.com"}'
```

`address` is 3–320 characters. We store it in lower case, without surrounding spaces, with the reason `manual`. The answer is `201` `{"ok": true, "added": true}`. `added` is `false`, and nothing changes, when the address is already on the list or has no `@`. Unlike the tab, the API adds an address while the relay is not active.

Remove an address by its `id` from the list:

```bash
curl -X DELETE https://api.coritan.com/api/v1/client/smtp-relay/4812/suppressions/5120 \
  -H "Authorization: Bearer $CORITAN_TOKEN"
```

The answer is `{"ok": true}`, or `404` `Not found` when the id is not on the relay.

### On a Mail Hosting service

A Mail Hosting service keeps a suppression list too, filled the same way, and the mail server refuses to send to an address on it from any of the service's mailboxes, with the same `550 5.1.1` reply. The service has no **Suppressions** tab, so use the same three operations under `/client/mail/{service_id}/suppressions` to see, add and remove addresses.

## API

- `GET /api/v1/client/smtp-relay/{service_id}/suppressions`: List suppressions (https://www.coritan.com/docs/api/reference/client/mail/smtp-relay-suppressions/#op-get-api-v1-client-smtp-relay-service-id-suppressions)
- `POST /api/v1/client/smtp-relay/{service_id}/suppressions`: Add suppression (https://www.coritan.com/docs/api/reference/client/mail/smtp-relay-suppressions/#op-post-api-v1-client-smtp-relay-service-id-suppressions)
- `DELETE /api/v1/client/smtp-relay/{service_id}/suppressions/{suppression_id}`: Remove suppression (https://www.coritan.com/docs/api/reference/client/mail/smtp-relay-suppressions/#op-delete-api-v1-client-smtp-relay-service-id-suppressions-suppression-id)
- `GET /api/v1/client/mail/{service_id}/suppressions`: List suppressions (https://www.coritan.com/docs/api/reference/client/mail/mail-suppressions/#op-get-api-v1-client-mail-service-id-suppressions)
- `POST /api/v1/client/mail/{service_id}/suppressions`: Add suppression (https://www.coritan.com/docs/api/reference/client/mail/mail-suppressions/#op-post-api-v1-client-mail-service-id-suppressions)
- `DELETE /api/v1/client/mail/{service_id}/suppressions/{suppression_id}`: Remove suppression (https://www.coritan.com/docs/api/reference/client/mail/mail-suppressions/#op-delete-api-v1-client-mail-service-id-suppressions-suppression-id)
