Инструкция · Отправка
Подключение Amazon SES
Sendalto отправляет письма пользователям через ваш аккаунт Amazon SES: домен, репутация и счёт AWS остаются вашими. На настройку уйдёт около 30 минут плюс время на DNS и ответ AWS.
Сверено с Sendalto
Что понадобится
- Аккаунт AWS, в котором вы можете создавать IAM-пользователей, ресурсы SES и тему SNS.
- Домен, DNS которого вы управляете. Укажите ровно тот домен, с которого будете писать: для адреса
[email protected]домен отправки —mail.example.com. - Один регион AWS для всего — домена в SES, набора конфигурации и темы SNS, например
eu-central-1. - Права владельца или администратора пространства Sendalto и включённый двухфакторный вход.
- ID вашего пространства. Откройте «Настройки → Интеграции» и нажмите «Настроить» у Amazon SES: ID входит в имя тенанта
sendalto-WORKSPACE_IDи в адрес для обратной связи, который там показан.
Ниже замените REGION, ACCOUNT_ID (12-значный номер аккаунта AWS), example.com (ваш домен отправки) и WORKSPACE_ID своими значениями.
1. Создайте IAM-пользователя с этой политикой
Создайте для Sendalto отдельного IAM-пользователя без доступа к консоли, добавьте ему политику ниже как встроенную (inline) и создайте ключ доступа. Sendalto хранит ключ в зашифрованном виде и только для этого пространства.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AccountStatus",
"Effect": "Allow",
"Action": "ses:GetAccount",
"Resource": "*"
},
{
"Sid": "SendingDomain",
"Effect": "Allow",
"Action": [
"ses:CreateEmailIdentity",
"ses:GetEmailIdentity",
"ses:PutEmailIdentityMailFromAttributes"
],
"Resource": "arn:aws:ses:REGION:ACCOUNT_ID:identity/example.com"
},
{
"Sid": "ConfigurationSet",
"Effect": "Allow",
"Action": [
"ses:CreateConfigurationSet",
"ses:GetConfigurationSet",
"ses:GetConfigurationSetEventDestinations",
"ses:PutConfigurationSetSuppressionOptions"
],
"Resource": "arn:aws:ses:REGION:ACCOUNT_ID:configuration-set/sendalto-WORKSPACE_ID"
},
{
"Sid": "Tenant",
"Effect": "Allow",
"Action": [
"ses:CreateTenant",
"ses:TagResource",
"ses:GetTenant",
"ses:ListTenantResources",
"ses:PutTenantSuppressionAttributes"
],
"Resource": "arn:aws:ses:REGION:ACCOUNT_ID:tenant/sendalto-WORKSPACE_ID/*"
},
{
"Sid": "TenantResources",
"Effect": "Allow",
"Action": "ses:CreateTenantResourceAssociation",
"Resource": [
"arn:aws:ses:REGION:ACCOUNT_ID:tenant/sendalto-WORKSPACE_ID/*",
"arn:aws:ses:REGION:ACCOUNT_ID:identity/example.com",
"arn:aws:ses:REGION:ACCOUNT_ID:configuration-set/sendalto-WORKSPACE_ID"
]
},
{
"Sid": "Send",
"Effect": "Allow",
"Action": "ses:SendEmail",
"Resource": [
"arn:aws:ses:REGION:ACCOUNT_ID:identity/example.com",
"arn:aws:ses:REGION:ACCOUNT_ID:configuration-set/sendalto-WORKSPACE_ID"
]
}
]
}В политике ровно те вызовы API SES, которые Sendalto делает с вашим ключом, и ничего больше. Каждый ограничен вашим доменом, набором конфигурации и тенантом — кроме ses:GetAccount: его AWS ограничить не позволяет.
| Право | Когда Sendalto его использует |
|---|---|
ses:GetAccount | Проверка подключения и каждая отправка: рабочий доступ, статус отправки и квота. |
ses:GetEmailIdentity | Проверка подключения, каждая отправка и «Настройки → Доставка»: статус домена, DKIM и MAIL FROM. |
ses:GetConfigurationSet | Проверка подключения и каждая отправка: набор конфигурации не на паузе и сохраняет исключения тенанта. |
ses:GetConfigurationSetEventDestinations | Проверка подключения и каждая отправка: получатель обратной связи SNS настроен. |
ses:GetTenant | Проверка подключения, каждая отправка и «Создать ресурсы SES»: статус отправки и исключений тенанта. |
ses:ListTenantResources | Проверка подключения и каждая отправка: домен и набор конфигурации принадлежат вашему тенанту. |
ses:SendEmail | Отправка согласованного или тестового письма. |
ses:PutEmailIdentityMailFromAttributes | Настройка поддомена MAIL FROM в «Настройки → Доставка». |
ses:CreateTenant, ses:TagResource | «Создать ресурсы SES»: создаёт тенант sendalto-WORKSPACE_ID с меткой ID пространства. |
ses:CreateEmailIdentity | «Создать ресурсы SES»: добавляет домен отправки в SES, если его там ещё нет. |
ses:CreateConfigurationSet | «Создать ресурсы SES»: создаёт набор конфигурации sendalto-WORKSPACE_ID. |
ses:CreateTenantResourceAssociation | «Создать ресурсы SES»: привязывает домен и набор конфигурации к тенанту. |
ses:PutTenantSuppressionAttributes, ses:PutConfigurationSetSuppressionOptions | «Создать ресурсы SES»: включает для тенанта исключение адресов после возвратов и жалоб. |
2. Создайте тему SNS для обратной связи
В консоли Amazon SNS, в том же регионе, создайте тему типа «Стандартная» (Standard; в темы FIFO SES не публикует), например sendalto-feedback. Скопируйте её ARN, например arn:aws:sns:REGION:ACCOUNT_ID:sendalto-feedback. Подписку пока не добавляйте: Sendalto подтвердит её, только когда ARN темы уже сохранён в пространстве.
3. Введите данные в Sendalto
- Откройте «Настройки → Интеграции» и нажмите «Настроить» у Amazon SES.
- Укажите регион AWS, идентификатор ключа доступа и секретный ключ IAM-пользователя. Поле токена сессии оставьте пустым: временные ключи истекают, и тогда проверки и отправка останавливаются.
- Укажите домен отправки (домен вида
example.com, не адрес почты), оставьте набор конфигурацииsendalto-WORKSPACE_IDи вставьте ARN темы SNS. - Нажмите «Сохранить зашифрованно», затем «Создать ресурсы SES». Sendalto создаст тенант
sendalto-WORKSPACE_ID, добавит домен и набор конфигурации, привяжет их к тенанту и включит для него исключение адресов после возвратов и жалоб. Уже существующие ресурсы сохранятся.
Новые ключи сбрасывают статус подключения и отменяют письма в очереди через старые ключи — меняйте ключи в спокойный момент.
4. Добавьте DNS-записи
В разделе «Настройки → Доставка» показаны точные записи для вашего домена и отмечено, какие уже найдены. Технический специалист может работать там без доступа к контактам и ключам.
- DKIM. SES использует Easy DKIM: три записи CNAME
TOKEN._domainkey.example.com→TOKEN.dkim.amazonses.com. Токены появятся после «Создать ресурсы SES». - Собственный MAIL FROM. Выберите поддомен, например
bounce.example.com, в «Настройки → Доставка» (Sendalto включит в SES отклонение писем при ошибке MX — этого требует проверка) и добавьте его записи MX и SPF. Если настраиваете в консоли SES, выберите поведение при ошибке MX Reject message. - DMARC. Запись TXT ровно на имени
_dmarc.<домен отправки>сp=none,p=quarantineилиp=reject. Sendalto смотрит только это имя: если вы пишете сmail.example.com, опубликуйте_dmarc.mail.example.com, даже если уexample.comесть своя запись. Начните сp=noneи адресаruaдля отчётов.
; DKIM (Easy DKIM): three records, tokens come from SES
TOKEN1._domainkey.example.com CNAME TOKEN1.dkim.amazonses.com
TOKEN2._domainkey.example.com CNAME TOKEN2.dkim.amazonses.com
TOKEN3._domainkey.example.com CNAME TOKEN3.dkim.amazonses.com
; Custom MAIL FROM, for example bounce.example.com
bounce.example.com MX 10 feedback-smtp.REGION.amazonses.com
bounce.example.com TXT "v=spf1 include:amazonses.com ~all"
; DMARC, exactly at _dmarc.<sending domain>
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:[email protected]"Изменения DNS появляются от нескольких минут до нескольких часов. SES подтвердит домен, как только увидит записи DKIM.
5. Настройте обратную связь о возвратах и жалобах
- В консоли SES откройте Configuration sets →
sendalto-WORKSPACE_ID→ Event destinations → Add destination. - Отметьте как минимум Hard bounces, Complaints, Deliveries и Rejects (эти четыре Sendalto требует, остальные — по желанию), оставьте публикацию событий включённой, выберите Amazon SNS и тему из шага 2.
- Разрешите SES публиковать в тему: в консоли SNS измените политику доступа темы (Access policy) и добавьте правило ниже.
- В консоли SNS создайте подписку на тему: протокол HTTPS, адрес
https://sendalto.com/api/webhooks/email?workspace=WORKSPACE_IDс ID вашего пространства. Опцию Enable raw message delivery не включайте. - Sendalto проверит подписанное подтверждение от SNS и подтвердит подписку сам: в течение минуты она станет Confirmed. Если она осталась в Pending confirmation, проверьте, что в Sendalto сохранён тот же ARN темы, и нажмите Request confirmation.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSesEventPublishing",
"Effect": "Allow",
"Principal": { "Service": "ses.amazonaws.com" },
"Action": "sns:Publish",
"Resource": "arn:aws:sns:REGION:ACCOUNT_ID:TOPIC_NAME",
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "ACCOUNT_ID",
"AWS:SourceArn": "arn:aws:ses:REGION:ACCOUNT_ID:configuration-set/sendalto-WORKSPACE_ID"
}
}
}
]
}Когда обратная связь настроена, жёсткий возврат или жалоба сразу исключают адрес в Sendalto и отменяют его письма в очереди. После жалобы вся отправка в пространстве приостанавливается. Владелец разбирается в причине и возобновляет отправку в «Настройки → Пространство» → «Отправка» кнопкой «Возобновить отправку…» (нужны двухфакторный вход и недавний вход в аккаунт). Адреса, на которые пожаловались, остаются исключёнными.
6. Запросите рабочий доступ SES
Новый аккаунт SES работает в песочнице: письма уходят только на подтверждённые адреса. В консоли SES вашего региона откройте Account dashboard → Request production access и опишите сценарий: письма подписчикам с их согласия, как люди подписываются и как вы обрабатываете возвраты, жалобы и отписки (Sendalto добавляет отписку в один клик в каждое маркетинговое письмо). Обычно AWS отвечает в течение суток. Рабочий доступ выдаётся отдельно для каждого региона.
7. Запустите проверку подключения
Нажмите «Проверить подключение» на карточке Amazon SES. Sendalto прочитает ваш аккаунт SES сохранённым ключом и перечислит, чего не хватает, в «Результат проверки». Подключение готово, когда выполнены все пункты ниже.
| Сообщение | Что сделать |
|---|---|
| В этом регионе для SES не включён production access. | Шаг 6 — в регионе, сохранённом в Sendalto. |
| Отправка в аккаунте SES приостановлена или находится под ограничениями AWS. | Разберите уведомление в Account dashboard SES вместе с AWS. |
| Домен отправки не подтверждён. | Шаг 4: домен подтверждается записями DKIM. |
| DKIM не подтверждён или не включён. | Шаг 4: все три записи CNAME для DKIM и включённая подпись DKIM. |
| Нужен подтверждённый custom MAIL FROM с отклонением писем при ошибке MX. | Шаг 4: поддомен MAIL FROM с MX и SPF, поведение Reject message. |
| Configuration set приостановлен. | Возобновите отправку для набора конфигурации в консоли SES. |
| Отправка для tenant SES не включена. | Снова включите отправку для тенанта sendalto-WORKSPACE_ID в консоли SES. |
| Нужно включить подавление адресов по возвратам и жалобам на уровне tenant. | Повторно нажмите «Создать ресурсы SES». |
| Настройки подавления configuration set не должны отменять защиту tenant. | Уберите собственные настройки исключений у набора конфигурации или повторно нажмите «Создать ресурсы SES». |
| Домен и configuration set должны быть привязаны к этому tenant. | Повторно нажмите «Создать ресурсы SES». |
| Настройте SNS-получателя обратной связи для возвратов, жалоб, доставок и отказов. | Шаг 5: получатель событий со всеми четырьмя типами, включённый, на сохранённой теме. |
| Подтвердите подписку SNS на адрес обратной связи этого пространства. | Шаг 5: подпишите HTTPS-адрес с ID вашего пространства. |
| Нужна корректная DNS-запись политики DMARC. | Шаг 4: одна запись DMARC на _dmarc.<домен отправки>. |
| Не удалось проверить DNS-запись DMARC. | Шаг 4: записи TXT на _dmarc.<домен отправки> ещё нет или DNS не успел обновиться. Опубликуйте её и повторите проверку позже. |
| Квота отправки SES недоступна или исчерпана. | Дождитесь, пока освободится суточная квота, или попросите AWS её увеличить. |
| Проверка не удалась. Проверьте ключи, сетевой доступ и разрешения у провайдера. | SES отказал в запросе или не ответил. Проверьте идентификатор и секрет ключа, что регион совпадает с регионом ваших ресурсов SES и что к пользователю привязана IAM-политика из шага 1. Если вы ещё не нажимали «Создать ресурсы SES», сделайте это сначала: к моменту проверки тенант уже должен существовать. |
Sendalto повторяет эти проверки перед каждой отправкой, а проверку старше 24 часов нужно запустить заново. Письма отправляются с адресов на самом домене отправки: если подключён example.com, пишите с [email protected].
Когда проверка пройдена
Тестовые письма на свой адрес можно отправлять сразу. Для реальной отправки вашей аудитории также нужны одобренная Sendalto проверка бизнеса и платный тариф или пилотный ранний доступ. Тарифы пока не продаются; в раннем доступе Sendalto бесплатно открывает пилот проверенным пространствам. Подробнее — что работает уже сейчас.