algolia search

Tìm thấy x bài viết trong xms.

Hướng dẫn xóa toàn bộ Suppression List trên AWS SES


Hướng dẫn xóa toàn bộ Suppression List trên AWS SES

Khi gửi mail bằng Amazon SES, một số địa chỉ email sẽ bị đưa vào Suppression List (thường do bounce hoặc complaint).
Vấn đề là AWS chỉ cho phép xóa từng email một cách thủ công, nên nếu danh sách có vài trăm hoặc cả nghìn email thì gần như không thể thao tác bằng tay.

Giải pháp là dùng CloudShell + Bulk Remove để xuất, chỉnh sửa và import lại toàn bộ danh sách email cần xóa.

Bước 1: Truy cập AWS SES

  • Đăng nhập vào AWS Console.
  • Mở dịch vụ SES (Simple Email Service).

Bước 2: Mở CloudShell

  • Ở góc trên cùng bên phải, nhấn CloudShell để mở terminal trực tiếp trên AWS.

Bước 3: Xuất danh sách Suppression

Chạy lệnh sau để xuất toàn bộ danh sách email trong Suppression List:

aws sesv2 list-suppressed-destinations --no-paginate > suppression_list.json

lệnh trên nó xuất ra tầm 1000 rows thôi, trường hợp hơn thế thì phải dùng lệnh này

TOKEN=null
> suppression_list.json   # clear file

while : ; do
  if [ "$TOKEN" = "null" ]; then
    RESP=$(aws sesv2 list-suppressed-destinations)
  else
    RESP=$(aws sesv2 list-suppressed-destinations --next-token "$TOKEN")
  fi

  echo "$RESP" | jq -c '.SuppressedDestinationSummaries[]' >> suppression_list.json

  TOKEN=$(echo "$RESP" | jq -r '.NextToken // "null"')

  [ "$TOKEN" = "null" ] && break
done

Bước 4: Tải file suppression_list.json về máy

  • Trong CloudShell, nhìn phía bên phải có nút Actions.
  • Chọn Download file.
  • Nhập đường dẫn: suppression_list.json
  • Nhấn Download để tải file về.

Bước 5: Chỉnh sửa file JSON

File tải về có dạng như sau:

{
    "SuppressedDestinationSummaries": [
        {
            "EmailAddress": "[email protected]",
            "Reason": "BOUNCE",
            "LastUpdateTime": "2025-03-12T01:44:12.126000+00:00"
        },
        {
            "EmailAddress": "[email protected]",
            "Reason": "BOUNCE",
            "LastUpdateTime": "2025-09-01T06:03:08.462000+00:00"
        }
    ]
}

Bạn cần chỉnh lại thành dạng đơn giản là csv hoặc json:

CÁCH 1 — CSV: File chỉ có email, mỗi dòng 1 cái.

Ví dụ suppression_list.csv:

[email protected]
[email protected]
[email protected]

Lười thì lấy file shell này về chạy

#!/bin/bash

# Kiểm tra file đầu vào
INPUT_FILE="suppression_list.json"
OUTPUT_FILE="suppression_list.csv"

if [ ! -f "$INPUT_FILE" ]; then
    echo "❌ File $INPUT_FILE không tồn tại!"
    exit 1
fi

echo "📖 Đang trích xuất email từ $INPUT_FILE..."

# Sử dụng grep và sed để trích xuất nội dung trong trường EmailAddress
# Cách làm:
# 1. Tìm các dòng chứa "EmailAddress"
# 2. Dùng sed để lấy nội dung bên trong dấu ngoặc kép
grep '"EmailAddress":' "$INPUT_FILE" | sed -E 's/.*"EmailAddress": "([^"]*)".*/\1/' >"$OUTPUT_FILE"

# Đếm số lượng dòng đã xuất
COUNT=$(wc -l <"$OUTPUT_FILE" | xargs)

echo "✅ Trích xuất thành công $COUNT email vào file: $OUTPUT_FILE"
printf "Dòng đầu tiên: %s\n" "$(head -n 1 "$OUTPUT_FILE")"

CÁCH 2 — JSON

SES KHÔNG dùng JSON mảng.

Sai ❌:

[
  {"emailAddress":"[email protected]"},
  {"emailAddress":"[email protected]"}
]

✅ SES cần: Newline-Delimited JSON (NDJSON)

Nghĩa là: 👉 Mỗi dòng là 1 object JSON hoàn chỉnh

{"emailAddress":"[email protected]"}
{"emailAddress":"[email protected]"}
{"emailAddress":"[email protected]"}

Bước 6: Import file để xóa Suppression List

  • Quay lại tab Suppression List trong AWS SES.
  • Nhấn Bulk actions → chọn Remove email addresses in bulk.
  • Chọn Import from file.
  • Upload file JSON đã chỉnh sửa ở bước 5.
  • Nhấn Remove để xóa toàn bộ email trong Suppression List.

✅ Như vậy, bạn đã có thể xóa nhanh toàn bộ Suppression List mà không cần làm thủ công từng email một.

Đánh giá bài viết

Thích thì like
Hướng dẫn xóa toàn bộ Suppression List trên AWS SES
0/5 0 votes

Bình luận

Tuấn Anh Kiều avatar
Tuấn Anh Kiều
Cảm ơn bạn đã chia sẻ. đúng cái mình đang cần để không gửi email nằm trong danh sách này nữa.
Hiển thị bình luận Facebook