# Danh sách chặn và thư trả lại

Gửi tiếp tới một địa chỉ không tồn tại, hoặc tới người đã báo thư của bạn là spam, làm uy tín gửi thư giảm rất nhanh. Hạ Tầng giữ một **danh sách chặn** cho mỗi doanh nghiệp và tự động ngừng gửi tới các địa chỉ trong đó. Trang này giải thích điều gì đưa địa chỉ vào danh sách, điều gì xảy ra khi bạn gửi tới địa chỉ bị chặn, và cách xem, gỡ địa chỉ.

## Điều gì thêm địa chỉ vào danh sách

| Lý do | Nhãn trong dashboard | Thêm khi |
|---|---|---|
| `hard_bounce` | trả lại cứng | Thư bị trả lại vĩnh viễn vì hộp thư không tồn tại: thư trả lại có loại phụ `NoEmail` hoặc mã trạng thái SMTP bắt đầu bằng `5.1.` (ví dụ `550 5.1.1 User unknown`). |
| `complaint` | báo spam | Người nhận đánh dấu thư là spam trong ứng dụng email. |
| `unsubscribe` | huỷ đăng ký | Một contact huỷ đăng ký mọi email: trên trang tuỳ chọn, bằng nút huỷ đăng ký một chạm của chiến dịch không gắn topic, qua API (`"unsubscribed": true`), bằng bước `update_contact` của automation, hoặc khi nhập CSV. |
| `manual` | thủ công | Ai đó trong đội thêm địa chỉ ở tab **Danh sách chặn**. |

Danh sách thuộc về doanh nghiệp và áp dụng cho mọi email bạn gửi: qua API, SMTP relay, chiến dịch email và automations. Địa chỉ được so sánh ở dạng chữ thường.

### Thư trả lại không đưa vào danh sách chặn

Không phải thư trả lại nào cũng có nghĩa là địa chỉ hỏng. Những trường hợp sau được ghi trên email nhưng **không** đưa địa chỉ vào danh sách:

- **Trả lại tạm thời (soft bounce)**: hộp thư đầy, máy chủ đang lỗi, thư quá lớn. Webhook `email.bounced` có `bounce.type` là `Transient`.
- **Từ chối vĩnh viễn vì nội dung thư chứ không phải vì địa chỉ**: ví dụ bị chặn theo chính sách hoặc nội dung (`5.7.x`). Webhook có `bounce.type` là `Permanent` với loại phụ như `Policy` hoặc `ContentRejected`.

Hãy theo dõi các trường hợp này qua webhook và số liệu: từ chối theo chính sách tăng lên thường cho thấy vấn đề về nội dung hoặc uy tín. Xem [Khả năng vào hộp thư](https://hatang.dev/vi/docs/guides/email/deliverability.md).

## Điều gì xảy ra khi gửi tới địa chỉ bị chặn

Hạ Tầng vẫn nhận request, rồi bỏ qua người nhận đó:

- Trạng thái của người nhận là `suppressed`, và không có gì được gửi đi.
- Webhook `email.bounced` bắn cho người nhận đó, với `bounce.subType` là `Suppressed`:

```json
{
  "type": "email.bounced",
  "data": {
    "email_id": "0199e6c1-7a2b-7f00-9c1e-3f6a2b1d9e10",
    "to": ["dia-chi-cu@example.vn"],
    "subject": "Hoá đơn của bạn",
    "bounce": { "type": "Permanent", "subType": "Suppressed", "message": "Recipient dia-chi-cu@example.vn is on the suppression list (hard_bounce)" }
  }
}
```

- Khi mọi người nhận của email đều bị chặn, email có trạng thái `bounced` ngay lập tức.
- Email vẫn tính vào hạn mức ngày.
- Trong [số liệu](https://hatang.dev/vi/docs/guides/email/metrics-and-logs.md), những người nhận này được tính ở `suppressed`, và sự kiện `email.bounced` của họ cũng được tính ở `bounced`. Hãy làm sạch danh sách để chúng không đẩy tỉ lệ bị trả lại lên.

Người nhận bị bỏ qua vì đã rời một `topic_id` cũng được báo theo cách này (lý do là `topic_opt_out`), nhưng không bị đưa vào danh sách chặn.

> **Note: Huỷ đăng ký chặn cả email giao dịch**
>
> Mục `unsubscribe` chặn mọi email tới địa chỉ đó, kể cả hoá đơn hay email đặt lại mật khẩu gửi qua `POST /emails`. Nếu ai đó chỉ muốn nhận ít email marketing hơn, hãy để họ rời một [topic](https://hatang.dev/vi/docs/guides/email/audiences.md) thay vì huỷ đăng ký mọi email.

## Xem danh sách

Mở **Email → Danh sách nhận → Danh sách chặn**. Danh sách hiển thị từng địa chỉ, lý do, ghi chú (với thư trả lại cứng là thông báo từ máy chủ nhận) và thời điểm thêm.

Hiện chưa có API cho danh sách chặn. Để đồng bộ với hệ thống của bạn, hãy nghe các webhook sau:

| Webhook | Dùng để |
|---|---|
| `email.bounced` | Đánh dấu địa chỉ không hợp lệ khi `bounce.type` là `Permanent` và loại phụ là `NoEmail`. |
| `email.complained` | Ngừng mọi email marketing tới người đó. |
| `contact.updated` | Biết khi `unsubscribed` thay đổi. |

## Thêm hoặc gỡ địa chỉ

Ở tab **Danh sách chặn**, nhập địa chỉ và bấm **Thêm** để chặn thủ công (lý do `manual`). Bấm **Gỡ** cạnh một địa chỉ để xoá mục đó; bạn cần quyền quản lý email.

Chỉ gỡ khi chắc chắn:

- **Trả lại cứng**: địa chỉ đã được sửa hoặc hộp thư nay đã tồn tại, ví dụ sau khi khách sửa lỗi gõ trong tài khoản.
- **Báo spam**: người đó đã yêu cầu nhận lại email của bạn. Gửi cho người đã báo spam là cách nhanh nhất để tên miền bị chặn.
- **Huỷ đăng ký**: hãy đăng ký lại cho contact thay vì gỡ, để contact và danh sách chặn luôn khớp nhau. Bấm **Cho nhận lại** trên contact, hoặc gửi `PATCH /contacts/{id hoặc email}` với `{ "unsubscribed": false }`; thao tác này tự gỡ mục `unsubscribe`. Nếu chỉ gỡ mục trong danh sách chặn, email giao dịch sẽ đi lại được, nhưng contact vẫn không nhận chiến dịch email chừng nào còn bị đánh dấu huỷ đăng ký.

## Bước tiếp theo

- [Khả năng vào hộp thư](https://hatang.dev/vi/docs/guides/email/deliverability.md)
- [Contacts, segments và topics](https://hatang.dev/vi/docs/guides/email/audiences.md)
- [Số liệu và logs](https://hatang.dev/vi/docs/guides/email/metrics-and-logs.md)

Source: https://hatang.dev/vi/docs/guides/email/suppressions-and-bounces
