Редактировать DNS-запись — API. API Яндекс Почты для домена

Запрос следует отправлять по протоколу HTTPS с помощью метода POST.

POST /api2/admin/dns/edit
Host: pddimp.yandex.ru
Описание

\n

ПДД-токен.

\n "}}">: <ПДД-токен> ... Тип

Строка

Значение

\n

Имя домена.

\n "}}">=<имя домена> &Тип

Число

Значение

\n

Идентификатор DNS-записи.

\n "}}">=<идентификатор записи> [&Тип

Строка

Значение

\n

Email-адрес администратора домена.

\n

Параметр обязателен только для SOA-записи.

\n "}}">=<email-адрес администратора>] [&Тип

Строка

Значение

\n

Содержимое DNS-записи.

\n Для записи типа:

    \n
  • A — адрес в формате IPv4 (например, «194.84.46.241»).

  • \n
  • AAAA — адрес в формате IPv6 (например, «2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d»).

  • \n
  • CNAME, MX или NS — полностью определенное имя домена (FQDN).

  • \n
  • TXT — текст TXT-записи (например, «v=spf1 redirect=_spf.yandex.ru»).

  • \n
\n "}}">=<содержимое записи>] [&
Тип

Число

Значение

\n

Приоритет DNS-записи (чем меньше значение, тем выше приоритет).

\n

Параметр обязателен только для SRV или MX-записи.

\n

Значение по умолчанию — 10.

\n "}}">=<приоритет записи>] [&Тип

Число

Значение

\n

Вес SRV-записи относительно других SRV-записей для того же домена, с тем же приоритетом.

\n

Параметр обязателен только для SRV-записи.

\n "}}">=<вес SRV-записи>] [&Тип

Строка

Значение

\n

TCP или UDP-порт хоста, на котором размещен сервис. Сервисом может быть, например, джаббер.

\n

Параметр обязателен только для SRV-записи.

\n "}}">=<порт хоста>] [&Тип

Строка

Значение

\n

Каноническое имя хоста, предоставляющего сервис.

\n

Параметр обязателен только для SRV-записи.

\n "}}">=<каноническое имя хоста>] [&
Тип

Строка

Значение

\n

Имя поддомена. Например, «domain.com» — имя поддомена домена «com», а «my.domain.com» — имя поддомена домена «domain.com».

\n

Значение по умолчанию — «@» (корень домена).

\n

Параметр нужно передать, если требуется создать или отредактировать DNS-запись не для домена, а для его поддомена.

\n "}}">=<имя поддомена>] [&Тип

Число

Значение

\n

Время жизни DNS-записи в секундах.

\n

Для SOA-записи это время, на которое кешируется значение DNS-записи промежуточными DNS-серверами. Это же время будет использоваться по умолчанию для всех остальных новых записей зоны. Допустимые значения — от 900 и до 1209600. Рекомендуемое значение — 21600.

\n "}}">=<время жизни записи>] [&Тип

Число

Значение

\n

Частота проверки в секундах вторичными DNS-серверами DNS-записи для этой зоны. Допустимые значения — от 900 и до 86400. Рекомендуемое значение — 10800.

\n

Параметр нужно передать, если редактируется SOA-запись.

\n "}}">=<время между обновлениями>] [&Тип

Число

Значение

\n

Время в секундах между повторными попытками вторичных DNS-серверов получить записи зоны. Повторные запросы отправляются, если основной сервер не отвечает. Допустимые значения — от 90 и до 3600. Рекомендуемое значение — 900.

\n

Параметр нужно передать, если редактируется SOA-запись.

\n "}}">=<время между попытками получить записи>] [&Тип

Число

Значение

\n

Время в секундах, по истечении которого вторичные DNS-серверы считают записи зоны несуществующими, если основной сервер не отвечает. Допустимые значения — от 90 и до 3600. Рекомендуемое значение — 900.

\n

Параметр нужно передать, если редактируется SOA-запись.

\n "}}">=<предельное время>] [&Тип

Число

Значение

\n

Время в секундах, в течение которого будет кешироваться отрицательный ответ (ERROR = NXDOMAIN) от DNS-сервера. Допустимые значения — от 90 и до 86400. Рекомендуемое значение — 10800.

\n

Параметр нужно передать, если редактируется SOA-запись.

\n "}}">=<время кеширования>]

Заголовки:

НазваниеОписание
PddToken

ПДД-токен.

Параметры:

ПараметрТипЗначение
Обязательные
domainСтрока

Имя домена.

record_idЧисло

Идентификатор DNS-записи.

Необязательные
subdomain
Строка

Имя поддомена. Например, «domain.com» — имя поддомена домена «com», а «my.domain.com» — имя поддомена домена «domain.com».

Значение по умолчанию — «@» (корень домена).

Параметр нужно передать, если требуется создать или отредактировать DNS-запись не для домена, а для его поддомена.

ttlЧисло

Время жизни DNS-записи в секундах.

Для SOA-записи это время, на которое кешируется значение DNS-записи промежуточными DNS-серверами.

Это же время будет использоваться по умолчанию для всех остальных новых записей зоны. Допустимые значения — от 900 и до 1209600. Рекомендуемое значение — 21600.

refreshЧисло

Частота проверки в секундах вторичными DNS-серверами DNS-записи для этой зоны. Допустимые значения — от 900 и до 86400. Рекомендуемое значение — 10800.

Параметр нужно передать, если редактируется SOA-запись.

retryЧисло

Время в секундах между повторными попытками вторичных DNS-серверов получить записи зоны. Повторные запросы отправляются, если основной сервер не отвечает. Допустимые значения — от 90 и до 3600. Рекомендуемое значение — 900.

Параметр нужно передать, если редактируется SOA-запись.

expireЧисло

Время в секундах, по истечении которого вторичные DNS-серверы считают записи зоны несуществующими, если основной сервер не отвечает. Допустимые значения — от 90 и до 3600. Рекомендуемое значение — 900.

Параметр нужно передать, если редактируется SOA-запись.

neg_cacheЧисло

Время в секундах, в течение которого будет кешироваться отрицательный ответ (ERROR = NXDOMAIN) от DNS-сервера. Допустимые значения — от 90 и до 86400. Рекомендуемое значение — 10800.

Параметр нужно передать, если редактируется SOA-запись.

admin_mailСтрока

Email-адрес администратора домена.

Параметр обязателен только для SOA-записи.

contentСтрока

Содержимое DNS-записи.

Для записи типа:

  • A — адрес в формате IPv4 (например, «194.84. 46.241»).

  • AAAA — адрес в формате IPv6 (например, «2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d»).

  • CNAME, MX или NS — полностью определенное имя домена (FQDN).

  • TXT — текст TXT-записи (например, «v=spf1 redirect=_spf.yandex.ru»).

priorityЧисло

Приоритет DNS-записи (чем меньше значение, тем выше приоритет).

Параметр обязателен только для SRV или MX-записи.

Значение по умолчанию — 10.

portСтрока

TCP или UDP-порт хоста, на котором размещен сервис. Сервисом может быть, например, джаббер.

Параметр обязателен только для SRV-записи.

weightЧисло

Вес SRV-записи относительно других SRV-записей для того же домена, с тем же приоритетом.

Параметр обязателен только для SRV-записи.

targetСтрока

Каноническое имя хоста, предоставляющего сервис.

Параметр обязателен только для SRV-записи.

POST /api2/registrar/dns/edit
Host: pddimp.yandex.ru
Описание

\n

ПДД-токен.

\n "}}">: <ПДД-токен> Описание

\n

OAuth-токен.

\n "}}">: OAuth <OAuth-токен> ... Тип

Строка

Значение

\n

Имя домена.

\n "}}">=<имя домена> &Тип

Число

Значение

\n

Идентификатор DNS-записи.

\n "}}">=<идентификатор записи> [&Тип

Строка

Значение

\n

Email-адрес администратора домена.

\n

Параметр обязателен только для SOA-записи.

\n "}}">=<email-адрес администратора>] [&Тип

Строка

Значение

\n

Содержимое DNS-записи.

\n Для записи типа:

    \n
  • A — адрес в формате IPv4 (например, «194.84.46.241»).

  • \n
  • AAAA — адрес в формате IPv6 (например, «2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d»).

  • \n
  • CNAME, MX или NS — полностью определенное имя домена (FQDN).

  • \n
  • TXT — текст TXT-записи (например, «v=spf1 redirect=_spf.yandex.ru»).

  • \n
\n "}}">=<содержимое записи>] [&Тип

Число

Значение

\n

Приоритет DNS-записи (чем меньше значение, тем выше приоритет).

\n

Параметр обязателен только для SRV или MX-записи.

\n

Значение по умолчанию — 10.

\n "}}">=<приоритет записи>] [&Тип

Число

Значение

\n

Вес SRV-записи относительно других SRV-записей для того же домена, с тем же приоритетом.

\n

Параметр обязателен только для SRV-записи.

\n "}}">=<вес SRV-записи>] [&Тип

Строка

Значение

\n

TCP или UDP-порт хоста, на котором размещен сервис. Сервисом может быть, например, джаббер.

\n

Параметр обязателен только для SRV-записи.

\n "}}">=<порт хоста>] [&Тип

Строка

Значение

\n

Каноническое имя хоста, предоставляющего сервис.

\n

Параметр обязателен только для SRV-записи.

\n "}}">=<каноническое имя хоста>] [&Тип

Строка

Значение

\n

Имя поддомена. Например, «domain.com» — имя поддомена домена «com», а «my.domain.com» — имя поддомена домена «domain.com».

\n

Значение по умолчанию — «@» (корень домена).

\n

Параметр нужно передать, если требуется создать или отредактировать DNS-запись не для домена, а для его поддомена.

\n "}}">=<имя поддомена>] [&Тип

Число

Значение

\n

Время жизни DNS-записи в секундах.

\n

Для SOA-записи это время, на которое кешируется значение DNS-записи промежуточными DNS-серверами. Это же время будет использоваться по умолчанию для всех остальных новых записей зоны. Допустимые значения — от 900 и до 1209600. Рекомендуемое значение — 21600.

\n "}}">=<время жизни записи>] [&Тип

Число

Значение

\n

Частота проверки в секундах вторичными DNS-серверами DNS-записи для этой зоны. Допустимые значения — от 900 и до 86400. Рекомендуемое значение — 10800.

\n

Параметр нужно передать, если редактируется SOA-запись.

\n "}}">=<время между обновлениями>] [&Тип

Число

Значение

\n

Время в секундах между повторными попытками вторичных DNS-серверов получить записи зоны. Повторные запросы отправляются, если основной сервер не отвечает. Допустимые значения — от 90 и до 3600. Рекомендуемое значение — 900.

\n

Параметр нужно передать, если редактируется SOA-запись.

\n "}}">=<время между попытками получить записи>] [&Тип

Число

Значение

\n

Время в секундах, по истечении которого вторичные DNS-серверы считают записи зоны несуществующими, если основной сервер не отвечает. Допустимые значения — от 90 и до 3600. Рекомендуемое значение — 900.

\n

Параметр нужно передать, если редактируется SOA-запись.

\n "}}">=<предельное время>] [&Тип

Число

Значение

\n

Время в секундах, в течение которого будет кешироваться отрицательный ответ (ERROR = NXDOMAIN) от DNS-сервера. Допустимые значения — от 90 и до 86400. Рекомендуемое значение — 10800.

\n

Параметр нужно передать, если редактируется SOA-запись.

\n "}}">=<время кеширования>]

Заголовки:

НазваниеОписание
PddToken

ПДД-токен.

Authorization

OAuth-токен.

Параметры:

ПараметрТипЗначение
Обязательные
domainСтрока

Имя домена.

record_idЧисло

Идентификатор DNS-записи.

Необязательные
subdomainСтрока

Имя поддомена. Например, «domain.com» — имя поддомена домена «com», а «my.domain.com» — имя поддомена домена «domain.com».

Значение по умолчанию — «@» (корень домена).

Параметр нужно передать, если требуется создать или отредактировать DNS-запись не для домена, а для его поддомена.

ttlЧисло

Время жизни DNS-записи в секундах.

Для SOA-записи это время, на которое кешируется значение DNS-записи промежуточными DNS-серверами. Это же время будет использоваться по умолчанию для всех остальных новых записей зоны. Допустимые значения — от 900 и до 1209600. Рекомендуемое значение — 21600.

refreshЧисло

Частота проверки в секундах вторичными DNS-серверами DNS-записи для этой зоны. Допустимые значения — от 900 и до 86400. Рекомендуемое значение — 10800.

Параметр нужно передать, если редактируется SOA-запись.

retryЧисло

Время в секундах между повторными попытками вторичных DNS-серверов получить записи зоны, если основной сервер ничего не вернул. Допустимые значения — от 90 и до 3600. Рекомендуемое значение — 900.

Параметр нужно передать, если редактируется SOA-запись.

expireЧисло

Время в секундах, по истечении которого вторичные DNS-сервера считают записи зоны несуществующими, если основной сервер повторно ничего не возвращает. Допустимые значения — от 90 и до 3600. Рекомендуемое значение — 900.

Параметр нужно передать, если редактируется SOA-запись.

neg_cacheЧисло

Время в секундах, в течении которого будет кешироваться отрицательный ответ (ERROR = NXDOMAIN) от DNS-сервера. Допустимые значения — от 90 и до 86400. Рекомендуемое значение — 10800.

Параметр нужно передать, если редактируется SOA-запись.

admin_mailСтрока

Email-адрес администратора домена.

Параметр обязателен только для SOA-записи.

contentСтрока

Содержимое DNS-записи.

Для записи типа:

  • A — адрес в формате IPv4 (например, «194. 84.46.241»).

  • AAAA — адрес в формате IPv6 (например, «2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d»).

  • CNAME, MX или NS — полностью определенное имя домена (FQDN).

  • TXT — текст TXT-записи (например, «v=spf1 redirect=_spf.yandex.ru»).

priorityЧисло

Приоритет DNS-записи (чем меньше значение, тем выше приоритет).

Параметр обязателен только для SRV или MX-записи.

Значение по умолчанию — 10.

portСтрока

TCP или UDP-порт хоста, на котором размещен сервис. Сервисом может быть, например, джаббер.

Параметр обязателен только для SRV-записи.

weightЧисло

Вес SRV-записи относительно других SRV-записей для того же домена, с тем же приоритетом.

Параметр обязателен только для SRV-записи.

targetСтрока

Каноническое имя хоста, предоставляющего сервис.

Параметр обязателен только для SRV-записи.

Yandex «Почта для домена» как почтовый шлюз для ваших серверов / Хабр

Каждый раз поднимая новый сервер в облаках, вы получаете случайный IP-адрес. Не все понимают, что IP-адрес может попасть к вам с «историей». Часто приходится тратить время на удаление IP из публичных черных списков. В моём случае в последний раз это была очень неторопливая переписка с mail.ru, которая ни к чему не привела. После этого, создав новый сервер, я задумался: как же сделать так, чтобы не огребать проблем с такими IP-адресами?


Введение

Несмотря на то, что серверы у меня могут быть как постоянные так и «на поиграться», почту на всех них я не обслуживаю, но очень хочу получать сервисные письма от своих скриптов и системных служб.

Очевидное решение — сделать свой «порядочный» почтовый шлюз и все остальные серверы настраивать на пересылку почты через этот шлюз. Минусы такого решения очевидны:


  • Отдельный сервер стоит денег, даже если это дешевая VPSка
  • IP-адрес надо постоянно отслеживать в черных списках
  • Настройка почтового шлюза требует времени, которое зависит от ваших скиллов

Из-за вышеперечисленных причин я пошёл искать другое решение, и, что характерно, нашёл.


Решение

Я обнаружил возможность схалявить, воспользовавшись сервисом «Почта для Домена» от Yandex. На тот момент у меня было поднято 3 сервера и в DNS были следующие А-записи:


Хост Тип Значение
example.com A 123.123.123.120
server1.example.com A 123.123.123.121
server2.example.com A 123. 123.123.122
server3.example.com A 123.123.123.123

Я зарегистрировал свой технический домен в «Почте для Домена» и создал аккаунт: [email protected]. Попробовал отправить письма с одного из своих серверов, используя этот SMTP-аккаунт и получил следующую ошибку:

553 5.7.1 Sender address rejected: not owned by auth user.
envelope from address [email protected] not accepted by the server

Yandex не разрешает подставлять какие попало данные в envelope-from. Но как же быть, если хочется понимать, с какого сервера пришло то или иное письмо, без дополнительных ухищрений?

Чтобы соблюсти правила Yandex’a, нужно выполнить следующие шаги на стороне их сервиса:


  1. Зарегистрировать основной домен и его поддомены в pdd.yandex.ru. Проще всего пройти подтверждение домена через добавление CNAME-записи:


    Хост Тип Значение
    example. com CNAME verification-code
    server1.example.com CNAME verification-code
    server2.example.com CNAME verification-code
    server3.example.com CNAME verification-code

  2. Так же для каждого домена создаем MX-запись:


    Хост Тип Приоритет Значение
    example.com MX 10 mx.yandex.ru
    server1.example.com MX 10 mx.yandex.ru
    server2.example.com MX 10 mx.yandex.ru
    server3.example.com MX 10 mx.yandex.ru

  3. В настройках основного домена указать поддомены как алиасы этого домена.



  4. Создаём почтовый аккаунт [email protected], если он ещё не создан



  5. Обязательно нужно зайти в аккаунт через веб-интерфейc и активировать его, иначе получите ошибку:
    535 5.7.8 Error: authentication failed: Please accept EULA first. https://mail.yandex.ru/for/example.com

Дальше требуется работа на нашей стороне — настраиваем сервера:


  1. Устанавливаем msmtp — миниатюрный SMTP-клиент, который предоставляет свою реализацию sendmail
  2. Настраиваем его:

    defaults
    syslog LOG_MAIL
    tls_certcheck off
    tls on
    auto_from on
    # server hostname
    maildomain server1.example.com
    account default
    host smtp.yandex.ru
    port 25
    auth on
    user [email protected]
    password 123qwe

  3. Отправляем тестовое письмо с отладкой:
    echo -e "test message" | /usr/bin/msmtp --debug -t -i [email protected]

    и смотрим результат:

    loaded system configuration file /etc/msmtprc
    ignoring user configuration file /root/. msmtprc: No such file or directory
    falling back to default account
    using account default from /etc/msmtprc
    host = smtp.yandex.ru
    port = 25
    proxy host = (not set)
    proxy port = 0
    timeout = off
    protocol = smtp
    domain = localhost
    auth = choose
    user = [email protected]
    password = *
    ntlmdomain = (not set)
    tls = on
    tls_starttls = on
    tls_trust_file = (not set)
    tls_crl_file = (not set)
    tls_fingerprint = (not set)
    tls_key_file = (not set)
    tls_cert_file = (not set)
    tls_certcheck = off
    tls_min_dh_prime_bits = (not set)
    tls_priorities = (not set)
    auto_from = on
    maildomain = server1.example.com
    from = [email protected]
    add_missing_from_header = on
    add_missing_date_header = on
    remove_bcc_headers = on
    dsn_notify = (not set)
    dsn_return = (not set)
    logfile = (not set)
    syslog = LOG_MAIL
    aliases = (not set)
    reading recipients from the command line and the mail
    <-- 220 smtp3h.mail.yandex.net ESMTP (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru)
    --> EHLO localhost
    <-- 250-smtp3h. mail.yandex.net
    <-- 250-8BITMIME
    <-- 250-PIPELINING
    <-- 250-SIZE 42991616
    <-- 250-STARTTLS
    <-- 250-AUTH LOGIN PLAIN XOAUTh3
    <-- 250-DSN
    <-- 250 ENHANCEDSTATUSCODES
    --> STARTTLS
    <-- 220 Go ahead
    TLS certificate information:
    Owner:
        Common Name: smtp.yandex.ru
        Organization: Yandex LLC
        Organizational unit: ITO
        Locality: Moscow
        State or Province: Russian Federation
        Country: RU
    Issuer:
        Common Name: Yandex CA
        Organization: Yandex LLC
        Organizational unit: Yandex Certification Authority
        Country: RU
    Validity:
        Activation time: Mon 12 Oct 2015 03:41:24 PM MSK
        Expiration time: Wed 11 Oct 2017 03:41:24 PM MSK
    Fingerprints:
        SHA1: B7:0E:62:55:E1:3A:C0:F3:08:12:35:B2:9D:4B:25:D0:B8:C1:C6:39
        MD5:  BC:15:CE:B6:D4:FF:0D:95:4F:E5:1A:A7:3A:DF:DA:65
    --> EHLO localhost
    <-- 250-smtp3h.mail.yandex.net
    <-- 250-8BITMIME
    <-- 250-PIPELINING
    <-- 250-SIZE 42991616
    <-- 250-AUTH LOGIN PLAIN XOAUTh3
    <-- 250-DSN
    <-- 250 ENHANCEDSTATUSCODES
    --> AUTH PLAIN AhJvb3ARY29uzMlntS5ydQBXYw5VcMMlazk=
    <-- 235 2. 7.0 Authentication successful.
    --> MAIL FROM:<[email protected]>
    --> RCPT TO:<[email protected]>
    --> DATA
    <-- 250 2.1.0 <[email protected]> ok
    <-- 250 2.1.5 <[email protected]> recipient ok
    <-- 354 Enter mail, end with "." on a line by itself
    --> From: [email protected]
    --> Date: Mon, 06 Jun 2016 16:17:00 +0300
    --> test message
    --> .
    <-- 250 2.0.0 Ok: queued on smtp3h.mail.yandex.net as 1465219021-86hlZkGCpZ-H0J8ORE2
    --> QUIT
    <-- 221 2.0.0 Closing connection.

    Отлично, успех! Письмо ушло, правда, найдем мы его в спаме, так как оно почему-то пустое. Давайте проверим более привычным и «человеческим» способом:

    echo "test message" | mailx -s 'test subject' [email protected]

    Вот, теперь в ящике нормальное письмо. Здорово!


    DKIM & SPF

    А еще можно для каждого домена прописать записи DKIM и SPF. Если вы, как я, используете свой DNS-хостинг, то просто скопируйте соответствующие значения из “DNS редактора” в интерфейсе Яндекса. Внимание: для каждого домена и алиаса свой ключ!


    Хост Тип Значение
    mail._domainkey.example.com TXT v=DKIM1; k=rsa; t=s; p=MIGf…
    mail._domainkey.server1.example.com TXT v=DKIM1; k=rsa; t=s; p=MIGf…
    mail._domainkey.server2.example.com TXT v=DKIM1; k=rsa; t=s; p=MIGf…
    mail._domainkey.server3.example.com TXT v=DKIM1; k=rsa; t=s; p=MIGf…

    Отсылаем с сервера письмо и смотрим в заголовки:

    DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=mail; t=1467009762;
        bh=Pb6s/Xlf4...
    Authentication-Results: smtp14.mail.yandex.net; dkim=pass [email protected]

    Лепота!

    В случае если отправка почты для домена будет происходить только через сервера Яндекс и с заранее известных IP-адресов, то можно смело прописать SPF-записи в соответствии с документацией https://yandex. ru/support/pdd/troubleshooting/dns.xml#step2


    Хост Тип Значение
    example.com TXT v=spf1 redirect=_spf.yandex.net
    server1.example.com TXT v=spf1 redirect=_spf.yandex.net
    server2.example.com TXT v=spf1 redirect=_spf.yandex.net
    server3.example.com TXT v=spf1 redirect=_spf.yandex.net

    Нюансы

    Скорее всего, вы молодцы, и ваше приложение работает не из под root’а. Попытка послать письмо из-под обычного пользователя опять приведёт к знакомой ошибке в логе msmtp:

    Jun  6 14:21:24 server1 msmtp: host=smtp.yandex.ru tls=on auth=on [email protected] [email protected] [email protected] smtpstatus=553 smtpmsg='553 5.7.1 Sender address rejected: not owned by auth user.' errormsg='envelope from address user@server1. example.com not accepted by the server' exitcode=EX_DATAERR

    Можно решить эту проблему по-разному. Например, можно явно указывать пользователя, отключив опцию auto_from off в msmtp. Но я уже решил, что меня это не устраивает.

    Правильное решение — добавить пользователя как алиас для нашего основного адреса:



    Если вам требуется локальный SMTP-релей, то данная конфигурация вам тоже подходит. Нужно просто заменить msmtp на postfix или exim, настроенные на использование серверов Яндекса в качестве smart host’a (гуглить можно, например, по ключевым словам exim smarthost).


    Резюме

    Теперь любой сервер, который я поднимаю для своих задачек, сразу же получает настроенный канал отправки почты. В DNS и pdd.yandex.ru я заранее прописал несколько поддоменов про запас. Так как сервера я разворачиваю через SaltStack, то конфигурацию msmtp мои сервера получают автоматически.

    Что я получил в итоге:


    1. Самое главное — нет заморочек с черными списками и IP-адресами серверов, так как письма уходят через сервера Яндекса
    2. DKIM/SPF «из коробки» — письма не попадают в спам
    3. msmtp простой SMTP-клиент, которому даже в памяти сервера висеть не нужно — запускается по необходимости
    4. msmtp — простейшая настройка в отличие от «взрослых» postfix, exim
    5. можно не беспокоиться о PTR-записях для ваших IP-адресов с точки зрения почтовой системы.

    Надеюсь эта инструкция кому-нибудь пригодится. Буду рад узнать из комментариев, кто и как решает подобную проблему.

Добавить запись DNS — API. Яндекс.Почта для домена API

Этот запрос используется для добавления записи DNS для домена.

  1. Синтаксис запроса
  2. Пример запроса
  3. Структура ответа

Запрос должен быть отправлен по протоколу HTTPS методом POST.

 ПОСТ /api2/admin/dns/добавить
Хост: pddimp.yandex.ru
  Описание  

Токен PDD.

"}}">: <токен PDD> ... Тип

Строка

Значение

Имя домена.

"}}">=<имя домена> & Тип

Строка

Значение

Тип записи DNS.

Возможные значения:

  • SRV

  • TXT

  • NS

  • MX

  • SOA

  • A

  • AAAA

  • CNAME

"}}">=<тип записи> [& Тип

Строка

Значение

Адрес электронной почты администратора домена.

Этот параметр требуется только для записей SOA.

"}}">=<адрес электронной почты администратора>] [& Тип

Строка

Значение

Содержимое записи DNS.

Для записей типа:

  • A — адрес в формате IPv4 (например, «194.84.46.241»).

  • AAAA — адрес в формате IPv6 (например, «2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d»).

  • CNAME, MX или NS — абсолютное доменное имя (FQDN).

  • TXT — текст TXT-записи (например, «v=spf1 redirect=_spf.yandex.ru»).

"}}">=] [& Тип

Целое число

Значение

Приоритет записи DNS (чем меньше значение, тем выше ее приоритет).

Этот параметр требуется только для записей SRV и MX.

Значение по умолчанию — 10.

"}}">=<приоритет записи>] [& Тип

Целое число

Значение

Вес записи SRV по отношению к другим записям SRV для того же домена и с тем же приоритетом.

Этот параметр требуется только для записей SRV.

"}}">=<вес записи SRV>] [&port"}}">=<порт хоста>] [& Тип

Строка

Значение

Каноническое имя хоста, предоставляющего услугу.

Этот параметр требуется только для записей SRV.

"}}">=<каноническое имя хоста>] [& Тип

Строка

Значение

Имя поддомена. Например, «domain.com» — это имя субдомена домена «com», а «my.domain.com» — это субдомен домена «domain.com».

Значение по умолчанию — «@» (корневой домен домена).

Этот параметр следует передавать, если вам нужно создать или изменить DNS-запись для поддомена, а не для домена.

"}}">=<имя поддомена>] [& Тип

Целое число

Значение

Время жизни записи DNS в секундах. Значение по умолчанию — 21600.

"}}">=<срок жизни записи>]

Заголовки:

Имя Описание
PddToken

Токен PDD.

Параметры:

Параметр Тип Значение
Обязательное
домен Строка

Имя домен .

тип Строка

Тип записи DNS.

Возможные значения:

  • SRV

  • TXT

  • NS

  • MX

  • SOA

  • A 9 0003
  • AAAA

  • CNAME

admin_mail Строка

Адрес электронной почты администратора домена.

Этот параметр требуется только для записей SOA.

content String

Содержимое записи DNS.

Для записей типа:

  • A — адрес в формате IPv4 (например, «194.84.46.241»).

  • AAAA — адрес в формате IPv6 (например, «2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d»).

  • CNAME, MX или NS — абсолютное доменное имя (FQDN).

  • TXT — текст TXT-записи (например, «v=spf1 redirect =_spf.yandex.ru»). СРВ и Записи MX

    Значение по умолчанию: 10.

вес Целое число

Вес записи SRV по отношению к другим записям SRV для того же домена и с тем же приоритетом.

Этот параметр требуется только для записей SRV.

порт Строка

Порт TCP или UDP хоста, на котором находится служба. Услуга может быть, например, jabber.

Этот параметр требуется только для записей SRV.

цель Строка

Каноническое имя хоста, предоставляющего услугу.

Этот параметр требуется только для записей SRV.

Дополнительно
субдомен Строка

Имя субдомена. Например, «domain.com» — это имя субдомена домена «com», а «my.domain.com» — это субдомен домена «domain.com».

Значение по умолчанию — «@» (корневой домен домена).

Этот параметр следует передавать, если вам нужно создать или изменить DNS-запись для поддомена, а не для домена.

ttl Целое число

Время жизни записи DNS в секундах. Значение по умолчанию — 21 600.

 POST /api2/registrar/dns/add
Хост: pddimp.yandex.ru
  Описание  

Токен PDD.

"}}">: <токен PDD> Описание

Маркер доступа OAuth.

"}}">: OAuth <токен OAuth> ... Тип

Строка

Значение

Имя домена.

"}}">=<имя домена> & Тип

Строка

Значение

Тип записи DNS.

Возможные значения:

  • SRV

  • TXT

  • НС

  • MX

  • SOA

  • А

    900 06
  • AAAA

  • CNAME

"}}">=<тип записи> [& Тип

Строка

Значение

Адрес электронной почты администратора домена.

Этот параметр требуется только для записей SOA.

"}}">=<адрес электронной почты администратора>] [& Тип

Строка

Значение

Содержимое записи DNS.

Для записей типа:

  • A — адрес в формате IPv4 (например, «194.84.46.241»).

  • AAAA — адрес в формате IPv6 (например, «2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d»).

  • CNAME, MX или NS — абсолютное доменное имя (FQDN).

  • TXT — текст TXT-записи (например, «v=spf1 redirect=_spf.yandex.ru»).

"}}">=] [& Тип

Целое число

Значение

Приоритет записи DNS (чем меньше значение, тем выше ее приоритет).

Этот параметр требуется только для записей SRV и MX.

Значение по умолчанию — 10.

"}}">=<приоритет записи>] [& Тип

Целое число

Значение

Вес записи SRV по отношению к другим записям SRV для того же домена и с тем же приоритетом.

Этот параметр требуется только для записей SRV.

"}}">=<вес записи SRV>] [&port"}}">=<порт хоста>] [& Тип

Строка

Значение

Каноническое имя хоста, предоставляющего услугу.

Этот параметр требуется только для записей SRV.

"}}">=<каноническое имя хоста>] [& Тип

Строка

Значение

Имя поддомена. Например, «domain.com» — это имя субдомена домена «com», а «my.domain.com» — это субдомен домена «domain.com».

Значение по умолчанию — «@» (корневой домен домена).

Этот параметр следует передавать, если вам нужно создать или изменить DNS-запись для поддомена, а не для домена.

"}}">=<имя поддомена>] [& Тип

Целое число

Значение

Время жизни записи DNS в секундах. Значение по умолчанию — 21600.

"}}">=<срок жизни записи>]

Заголовки:

Имя Описание
PddToken

Токен PDD.

Авторизация

Маркер доступа OAuth.

Параметры:

906 97

Адрес электронной почты администратора домена.

Этот параметр требуется только для записей SOA.

Параметр Тип Значение
Обязательный
домен Строка

Имя домена.

тип Строка

Тип записи DNS.

Возможные значения:

  • SRV

  • TXT

  • NS

  • MX

  • SOA

  • A 9 0003
  • AAAA

  • CNAME

admin_mail Строка
content String

Содержимое записи DNS.

Для записей типа:

  • A — адрес в формате IPv4 (например, «194,84,46,241″).

  • AAAA — адрес в формате IPv6 (например, «2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d»).

  • CNAME, MX или NS — абсолютное доменное имя (FQDN).

  • TXT — текст TXT-записи (например, «v=spf1 redirect=_spf.yandex.ru»).

приоритет Целое число

Приоритет записи DNS (чем меньше значение, тем выше ее приоритет).

Этот параметр требуется только для записей SRV и MX.

Значение по умолчанию — 10.

вес Целое число

Вес записи SRV по отношению к другим записям SRV для того же домена и с тем же приоритетом.

Этот параметр требуется только для записей SRV.

порт Строка

Порт TCP или UDP хоста, на котором находится служба. Услуга может быть, например, jabber.

Этот параметр требуется только для записей SRV.

цель Строка

Каноническое имя хоста, предоставляющего услугу.

Этот параметр требуется только для записей SRV.

Дополнительно
субдомен Строка

Имя субдомена. Например, «domain.com» — это имя субдомена домена «com», а «my.domain.com» — это субдомен домена «domain.com».

Значение по умолчанию — «@» (корневой домен домена).

Этот параметр следует передавать, если вам нужно создать или изменить DNS-запись для поддомена, а не для домена.

ttl Целое число

Время жизни записи DNS в секундах. Значение по умолчанию — 21 600.

 POST /api2/admin/dns/add HTTP/1.1
Хост: pddimp.yandex.ru
PddToken: 123456789ABCDEF00000000000000000000000000000000000000
...
domain=domain.com&type=A&subdomain=www&ttl=14400&content=127.0.0.1 
cURL

 curl -H 'PddToken: 123456789ABCDEF00000000000000000000000000000000000000' -d 'domain=domain.com&type=A&subdomain=www&ttl=1440 0&content=127.0.0.1' 'https://pddimp.yandex.ru/api2/admin/dns/ add'soa 
 POST /api2/admin/dns/добавить HTTP/1.1
Хост: pddimp.yandex.ru
PddToken: 123456789ABCDEF00000000000000000000000000000000000000
Авторизация: OAuth 00123456789ABCDEF000000000000000000000000000000000000
...
domain=domain.com&type=A&subdomain=www&ttl=14400&content=127.0.0.1 
cURL

 curl -H 'PddToken: 123456789ABCDEF00000000000000000000000000000000000000' -H 'Авторизация: OAuth 00123456789ABCDEF0 0000000000000000000000000000000000' -d 'domain=domain. com&type=A&subdomain=www&ttl=14400&content=127.0.0.1' 'https://pddimp.yandex.ru ru/api2/admin/dns/add'soa 
 {
  "  Тип значения  

Строка

Описание

Имя домена.

"}}">": "{имя домена}", Тип значения

Объект

Описание

Информация о записи DNS.

"}}">": { " Тип значения

Целое число

Описание

Идентификатор записи DNS.

"}}">": "{ID записи}", " Тип значения

Строка

Описание

Тип записи DNS.

Возможные значения:

  • SRV

  • TXT

  • NS

  • MX

    9 0006
  • SOA

  • А

  • AAAA

  • 9004 2 ЗАПИСЬ

"}}">": "{тип записи}", " Тип значения

Строка

Описание

Имя домена.

"}}">": "{имя домена}", Тип значения

Строка

Описание

Имя поддомена. Например, «my.domain.com» — это имя субдомена домена «domain.com». Вы можете использовать «мой» вместо «мой.домен.com».

"}}">": "{имя субдомена}", " Тип значения

Строка

Описание

Абсолютное доменное имя (FQDN).

"}}">": "{абсолютное доменное имя}", " Тип значения

Строка

Описание

Содержимое записи DNS.

"}}">": "{содержимое записи}", " Тип значения

Целое число

Описание

Время жизни записи DNS, в секундах.

"}}">": "{срок жизни записи}", " Тип значения

Целое число

Описание

Приоритет записи DNS. Существует для записей MX и SRV. Для всех остальных записей DNS возвращается пустая строка.

"}}">": "{ приоритет записи}" }, Тип значения

Строка

Описание

Статус выполнения запроса.

Возможные значения:

"}}">": "{статус выполнения запроса}" }
 {
  "  Тип значения  

Строка

Описание

Имя домена.

"}}">": "{имя домена}", " Тип значения

Строка

Описание

Статус выполнения запроса.

Возможные значения:

"}}">": "{статус выполнения запроса}", " Тип значения

Строка

Описание

Код ошибки.

Включается в ответ, если запрос привел к ошибке.

Возможные значения:

    900 42 неизвестно — Временный сбой или API произошла ошибка (повторите запрос позже).0045 ) — пропущен обязательный параметр.

  • bad_domain — доменное имя не указано или не соответствует RFC.

  • запрещено — Запрещенное доменное имя.

  • bad_token ( bad_login , bad_passwd ) — был передан недопустимый токен PDD (или имя пользователя/пароль).

  • no_auth — заголовок PddToken был опущен.

  • not_allowed — Эта операция не разрешена для данного пользователя (пользователь не является администратором домена).

  • заблокирован — Заблокированный домен (например, из-за спама и так далее).

  • занято — Доменное имя используется другим пользователем.

  • domain_limit_reached — Превышено допустимое количество подключенных доменов (50).

  • no_reply — Яндекс.Почта для домена не может подключиться к серверу-источнику для импорта.

"}}">": "{код ошибки}" }

Была ли статья полезной?

Добавить почтовый ящик — API. Yandex.Mail for Domain API

Этот запрос используется для добавления почтового ящика для домена.

  1. Синтаксис запроса
  2. Пример запроса
  3. Структура ответа

Запрос должен быть отправлен по протоколу HTTPS методом POST.

 ПУБЛИКАЦИЯ /api2/admin/email/добавить
Хост: pddimp.yandex.ru
  Описание  

Токен PDD.

"}}">: <токен PDD> ... Тип

Строка

Значение

Имя домена.

"}}">=<имя домена> & Тип

Строка

Значение

Электронный адрес почтового ящика в формате «username@domain. ru» или «username».

"}}">=<имя пользователя почтового ящика> & Тип 9", "&", "*", "(", ")", "_", "-", "+", ":", ";", ", "."

  • отличаться от имени пользователя.

  • "}}">=<пароль>

    Заголовки:

    Имя Описание 9020 7
    PddToken

    Токен PDD.

    Параметры:

    Параметр Тип Значение
    Обязательный
    домен Строка

    Имя домена.

    логин String

    Электронный адрес почтового ящика в формате «username@domain. ru» или «username».

    пароль Строка

    Пароль пользователя. 9″, «&», «*», «(«, «)», «_», «-«, «+», «:», «;», «, «.»

  • отличаться от имени пользователя.

  •  POST /api2/registrar/email/добавить
    Хост: pddimp.yandex.ru
      Описание  

    Токен PDD.

    "}}">: <токен PDD> Описание

    Маркер доступа OAuth.

    "}}">: OAuth <токен OAuth> ... Тип

    Строка

    Значение

    Имя домена.

    "}}">=<имя домена> & Тип

    Строка

    Значение

    Электронный адрес почтового ящика в формате «[email protected]» или «username».

    "}}">=<имя пользователя почтового ящика> & Тип

    Строка

    Значение

    Пароль пользователя. », « &», «*», «(», «)», «_», «-», «+», «:», «;», «, «.»

  • отличаться от имени пользователя.

  • "}}">=<пароль>

    Заголовки:

    Имя Описание 9020 7
    PddToken

    Токен PDD.

    Авторизация

    Маркер доступа OAuth.

    Параметры:

    Параметр Тип Значение
    Обязательный
    домен Строка

    Имя домена.

    логин String

    Электронный адрес почтового ящика в формате «[email protected]» или «username».

    пароль строка 9″, «&», «*», «(«, «)», «_», «-«, «+», «:», «;», «, «.»

  • отличаться от имени пользователя.

  •  POST /api2/admin/email/добавить HTTP/1.1
    Хост: pddimp.yandex.ru
    PddToken: 123456789ABCDEF00000000000000000000000000000000000000
    ...
    домен = домен. d 'domain=domain.com&login=newlogin&password=1234567890' 'https://pddimp.yandex.ru/api2/admin/email/add' 
     POST /api2/admin/email/add HTTP/1.1
    Хост: pddimp.yandex.ru
    PddToken: 123456789ABCDEF00000000000000000000000000000000000000
    Авторизация: OAuth 00123456789ABCDEF000000000000000000000000000000000000
    . ..
    домен = домен. H 'Авторизация: OAuth 00123456789ABCDEF000000000000000000000000000000000000' -d 'domain=domain.com&login=newlogin&password=1234567890' 'https://pddimp.yandex.ru/api2/admin/email/add' 
     {
      "  Тип значения  

    Строка

    Описание

    Имя домена.

    "}}">": "{имя домена}", " Тип значения

    Строка

    Описание

    Адрес электронной почты почтового ящика.

    "}}">":"{адрес электронной почты почтового ящика}", " Тип значения

    Целое число

    Описание

    Идентификатор почтового ящика.

    "}}">": "{ID почтового ящика}", " Тип значения

    Строка

    Описание

    Статус выполнения запроса.

    Возможные значения:

    "}}">": "{статус выполнения запроса}" }
     {
     "  Тип значения 

    Строка

    Описание

    Имя домена.

    "}}">": "{имя домена}", " Тип значения

    Строка

    Описание

    Статус выполнения запроса.

    Возможные значения:

    "}}">": "{статус выполнения запроса}", " Тип значения

    Строка

    Описание

    Код ошибки.

    Включается в ответ, если запрос привел к ошибке.

    Возможные значения:

      900 42 неизвестно — Временный сбой или API произошла ошибка (повторите запрос позже).0044 no_ip ) — пропущен обязательный параметр.

    • bad_domain — доменное имя не указано или не соответствует RFC.

    • запрещено — Запрещенное доменное имя.

    • bad_token ( bad_login , bad_passwd ) — был передан недопустимый токен PDD (или имя пользователя/пароль).

    • no_auth — заголовок PddToken был опущен.

    • not_allowed — Эта операция не разрешена для данного пользователя (пользователь не является администратором домена).