Создание адреса Yandex Cloud Postbox и проверка владения доменом с помощью Terraform
В этом руководстве вы с помощью Terraform создадите адрес в Yandex Cloud Postbox, а также добавите в DNS-зону вашего домена необходимые ресурсные записи для подтверждения владения доменом и отправки писем.
Ресурсную запись для подтверждения владения доменом можно добавить в Yandex Cloud DNS, если вы делегировали домен, или у вашего регистратора домена.
Для работы с Yandex Cloud Postbox в руководстве используется API, совместимый с AWS SESv2, поэтому для создания и управления ресурсами Yandex Cloud Postbox используется провайдер AWS
- Подготовьте облако к работе.
- Делегируйте домен сервису Cloud DNS.
- Подготовьте ключи для подписи электронных писем.
- Создайте инфраструктуру.
- Проверьте работу сервиса.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры для создания адреса, подтверждения владения доменом и отправки писем входят:
- плата за отправленные электронные письма (см. тарифы Yandex Cloud Postbox);
- плата за публичные DNS-запросы и зоны DNS, если вы используете Yandex Cloud DNS (см. тарифы Cloud DNS).
Делегируйте домен сервису Cloud DNS
Если у вас есть зарегистрированное доменное имя, то вы можете воспользоваться Yandex Cloud DNS для управления доменом.
Чтобы делегировать домен сервису Cloud DNS, в личном кабинете вашего регистратора домена укажите в настройках домена адреса DNS-серверов:
ns1.yandexcloud.kz
ns2.yandexcloud.kz
Делегирование происходит не сразу. Серверы интернет-провайдеров обычно обновляют записи в течение 24 часов (86400 секунд). Это обусловлено значением TTL, в течение которого кешируются записи для доменов.
Проверить делегирование домена можно с помощью сервиса Whoisdig
:
dig +short NS example.com
Результат:
ns2.yandexcloud.kz.
ns1.yandexcloud.kz.
Подготовьте ключи для подписи электронных писем
Для подписи электронных писем создайте RSA
-
Создайте скрипт
generate-key.sh
со следующим содержимым:#!/bin/bash # Generate private key openssl genrsa -out raw_privatekey.pem 2048 # Generate public key from the private key openssl rsa -in raw_privatekey.pem -pubout -out publickey.pem # Process private key for AWS (remove headers and line breaks) cat raw_privatekey.pem | grep -v "BEGIN" | grep -v "END" | tr -d '\n' > privatekey.pem # Format public key for DKIM DNS TXT record # Remove headers, strip newlines and concatenate for DNS TXT record DKIM_DNS_VALUE=$(cat publickey.pem | grep -v "BEGIN" | grep -v "END" | tr -d '\n') echo "$DKIM_DNS_VALUE" > dkim_dns_value.txt echo "Keys generated:" echo "- privatekey.pem (AWS-formatted private key)" echo "- publickey.pem (Public key)" echo "- raw_privatekey.pem (Original private key with headers)" echo "- dkim_dns_value.txt (Public key formatted for DKIM DNS TXT record)"
-
В терминале перейдите в папку со скриптом и выполните:
./generate-key.sh
В результате выполнения скрипта будут созданы:
privatekey.pem
— приватный ключ в формате AWS-провайдера;publickey.pem
— публичный ключ;raw_privatekey.pem
— оригинальный приватный ключ;dkim_dns_value.txt
— значение для создания DKIM-записи.
Создайте инфраструктуру
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Для создания инфраструктуры с помощью Terraform:
-
Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).
-
Подготовьте файлы с описанием инфраструктуры:
-
Клонируйте репозиторий с конфигурационными файлами.
git clone https://github.com/yandex-cloud-examples/yc-postbox-tf.git
-
Перейдите в директорию с репозиторием. В ней должны появиться файлы:
postbox-email-identity.tf
— конфигурация создаваемой инфраструктуры.postbox-email-identity.auto.tfvars
— файл с пользовательскими данными.
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:
-
-
В файле
postbox-email-identity.auto.tfvars
задайте пользовательские параметры:folder_id
— идентификатор каталога.domain_signing_selector
— селектор для подписи домена, например_postbox
.domain
— домен для отправки писем, напримерmail.example.com
.dns_zone_name
— имя существующей DNS-зоны, в которую будет добавлена запись.
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
Примечание
Если вы используете другой DNS-сервис, то следует самостоятельно добавить DKIM-запись в соответствии с его документацией. Значение DKIM-записи можно получить, используя следующий код для Terraform:
output "dkim_record" {
value = {
value = "v=DKIM1;h=sha256;k=rsa;p=${trim(local.public_key, "\n")}"
name = "${var.domain_signing_selector}._domainkey.${var.domain}"
type = "TXT"
ttl = 3600
}
}
После создания инфраструктуры, проверьте работу сервиса.
Проверьте работу сервиса
Убедитесь, что адрес успешно создан, и отправьте тестовое письмо:
- В консоли управления
перейдите в каталог, в котором создавали адрес. - Выберите сервис Cloud Postbox.
- Выберите созданный адрес и убедитесь, что статус проверки на странице адреса изменился на
Success
. - Отправьте тестовое письмо.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
-
Откройте конфигурационный файл
postbox-email-identity.tf
и удалите описание создаваемой инфраструктуры из файла. -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-