Вам понадобятся аккаунт AWS и доступ к DNS вашего домена. SES — с большим отрывом самый дешёвый вариант в этом списке и вариант с наибольшим количеством шагов.
Собственная документация Amazon: Подтверждение домена · Получение учетных данных SMTP · Выход из песочницы
⭐ Мы подключаемся к SES через интерфейс SMTP, а не через REST API. Вот почему у вас запрашиваются имя пользователя и пароль SMTP, а не ключ доступа AWS. Оба способа доставляют абсолютно одно и то же сообщение; вариант с SMTP позволяет избежать целого класса проблем с подписью запросов AWS, которые крайне тяжело диагностировать извне, и это именно тот интерфейс, для которого Amazon публикует учетные данные специально для таких инструментов, как наш.
1. Выберите регион и оставайтесь в нём
SES привязан к регионам. Всё, что описано ниже — ваш подтверждённый домен, ваши учётные данные, ваша квота на отправку — принадлежит одному региону AWS и не существует ни в каком другом.
Выберите ближайший к вашим клиентам регион (eu-west-1 для Европы, us-east-1 для Северной Америки) и зафиксируйте его. Подтвердить домен в Ирландии, а затем создать учётные данные во Франкфурте — самый распространённый способ потерять полдня, при этом возникающая ошибка ничего не сообщает о регионах.
2. Подтвердите свой домен
Консоль Amazon SES → Identities → Create identity → Domain. Введите поддомен, например mail.yourdomain.com.
Включите Easy DKIM и выберите RSA_2048_BIT. SES предоставит вам три записи CNAME:
| Type | Host |
|---|
CNAME | <token1>._domainkey.mail.yourdomain.com |
CNAME | <token2>._domainkey.mail.yourdomain.com |
CNAME | <token3>._domainkey.mail.yourdomain.com |
Добавьте все три. Подтверждение обычно занимает не более часа.
⭐ Также включите кастомный домен MAIL FROM (bounce.mail.yourdomain.com) и добавьте запрошенные записи MX и SPF TXT. Без этого отправителем конверта будет amazonses.com, поэтому SPF будет сопоставляться с Amazon, а не с вами, и вам придётся полагаться только на DKIM.
3. Выйдите из песочницы — шаг, который многие пропускают
⛔⛔ Новый аккаунт SES находится в песочнице и может отправлять письма только на адреса, которые вы подтвердили отдельно. Он примет всё остальное и не доставит ничего из этого.
Именно эту проблему призван выявить наш шаг проверки: находясь в песочнице, SES принимает ваше сообщение с совершенно обычным ответом об успехе, а затем сбрасывает его. Если вы проверите нашу настройку, отправив тест на адрес, который вы случайно подтвердили в AWS, всё сработает — а затем каждое сообщение реальному клиенту будет бесследно исчезать.
Панель управления аккаунтом → Request production access. Amazon спросит, что вы отправляете и как обрабатываете возвраты; пара честных предложений о транзакционных уведомлениях для ваших собственных клиентов обычно одобряется в течение 24 часов.
⭐ Сделайте это до того, как подключите SES здесь. После этого отлаживать будет нечего, потому что никаких сбоев не произойдёт.
4. Создайте учетные данные SMTP
Консоль SES → SMTP settings → Create SMTP credentials.
Это создаст пользователя IAM с правами только на отправку и предоставит вам имя пользователя SMTP и пароль SMTP.
⛔ Это не ваш ключ доступа и секрет AWS. Они генерируются из секрета IAM по специальному алгоритму и не взаимозаменяемы. Вставка сюда секретного ключа доступа AWS приведёт к ошибке аутентификации в каждом случае, и ошибка просто скажет, что учетные данные были отклонены.
⚠️ Пароль показывается только один раз. Скачайте CSV перед тем, как покинуть страницу.
5. Подключите его в Zinn®
Откройте Отправка почты в вашей панели управления:
- Провайдер — Amazon SES
- Отправлять с этого домена —
mail.yourdomain.com
- Регион AWS — регион из шага 1, например,
eu-west-1
- Имя пользователя SMTP — из шага 4
- Порт — оставьте 587
- Пароль SES SMTP — из шага 4
Мы формируем хост за вас (email-smtp.<region>.amazonaws.com), поэтому опечататься в имени хоста невозможно.
6. Отправьте тестовое сообщение и введите код
Нажмите Отправить тестовое сообщение на почтовый ящик на другом домене, который вы не подтверждали в AWS — личный адрес Gmail идеален, так как именно он доказывает, что вы вышли из песочницы. Прочитайте код и введите его.
Когда что-то не работает
«Email address is not verified» при отправке реальному клиенту — вы всё ещё в песочнице. Шаг 3.
535 Authentication Credentials Invalid — вы использовали свой ключ доступа AWS вместо учетных данных SMTP (шаг 4), либо учетные данные относятся к другому региону, отличному от введённого вами.
«Maximum sending rate exceeded» — новый рабочий аккаунт начинает с 14 сообщений в секунду и 50 000 в день. Это огромное количество уведомлений, но если вы переносите большую клиентскую базу, сначала запросите увеличение лимита.
Работало при тестировании и перестало работать в рабочей среде — проверьте панель Reputation в SES. Amazon автоматически приостанавливает отправку, когда процент возвратов или жалоб превышает их порог, а со старой базой клиентов превысить его очень легко.