VestaCP и pdd.yandex.ru. Отправка писем. DKIM и игнорирование «локальных» ящиков — DeaDSandro Notes

deadsandro Ubuntu / Debian,VestaCP

Столкнулся с 2 проблемами при использовании сервиса PDD от Яндекса с VestaCP.

 

Проблема #1. Использование секретного DKIM ключа от Яндекса.

Описание проблемы: Требуется корректная DKIM подпись для отправки как из почтового интерфейса Яндекса, так и для отправки  с нашего сервера.

Решение:

  1. Получение секретного ключа DKIM
    Получаем токен для управления доменом через
    API: https://pddimp.yandex.ru/api2/admin/get_token
    Далее с помощью токена можно получить секретный ключ DKIM. Подробности тут: https://tech.yandex.ru/pdd/doc/reference/dkim-status-docpage/
    Теперь этот ключ надо подменить в нашей конфигурации Exim для домена.
  2. Установка нового ключа DKIM взамен сгенерированного самой панелью Vesta
    Мы предполагаем, что домен уже добавлен в панели управления (вкладка MAIL) с включенным DKIM.
    Нужно положить(заменить) полученный у Яндекса секретный ключ в файл /etc/exim4/domains/{ВАШ_ДОМЕН}/dkim.pem
  3. Проверяем правильность установки ключа. Для проверки я обычно отправляю письмо на ящик на Яндексе и проверяю наличие флажка

 

Проблема #2. После создания mail домена у VestaCP все письма, отправленные на ящики вида user@domain падают в локальную почту.

Но так как мы используем PDD от яндекса, нам в большинстве случаев это не требуется, так как интерфейс яндекса в большинстве случаев удобнее и привычнее RoundCube (да и защита от спама посерьезнее).
В нашем случае ящики user@domain создаются для менеджеров, которые с Яндексом хорошо знакомы, поэтому он более предпочтителен.

Решение.
Для решения проблемы потребуется чуть-чуть изменить конфиги Exim.

Ранее я использовал не очень красивое решение, но потом нашел решение получше.
В обоих случаях мы будем изменять файл конфига Exim, который располагается по пути /etc/exim4/exim4.conf.template

Решение #1. «В лоб».

Находим в указанном выше файле блок ROUTERS CONFIGURATION и чуть ниже строчки:

dnslookup:
 driver = dnslookup
 domains = !+local_domains
 transport = remote_smtp
 no_more

Правило в строке domains = !+local_domains пропускает все существующие в VestaCP домены (mail домены). Мы можем закомментировать эту строчку для быстрого решения. ВНИМАНИЕ: данное «решение» можно применять  ТОЛЬКО в том случае, если вы не собираетесь использовать внутреннюю локальную почту!

Решение #2.

Находим в указанном выше файле блок ROUTERS CONFIGURATION и перед правилом dnslookup добавляем еще одно:

dnslookup2:
 driver = dnslookup
 transport = remote_smtp
 condition = ${if exists{/etc/exim4/domains/$domain/remote_always}{true}{false}}
 no_more

Теперь мы можем «управлять» поведением.

Если требуется, чтобы почта на user@domain «уходила» с сервера на удаленный сервер (в данном случае в яндекс), то надо всего лишь создать пустой файл remote_always в папке /etc/exim4/domains/{ВАШ_ДОМЕН}/

Не забудьте перезагрузить Exim (service exim4 restart).

 

В логах можно увидеть следующее (письмо отправляется на 3 ящика)

2016-03-29 15:56:52 1aktCW-0003J6-E8 <= no-reply@{DOMAIN} U=user P=local S=1018 id=9334fe7094b267139e89cb4005007491@{DOMAIN}
2016-03-29 15:56:53 1aktCW-0003J6-E8 => [email protected] R=dnslookup T=remote_smtp H=mx.yandex.ru [213.180.204.89] X=TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256 C="250 2.0.0 Ok: queued on mxfront9j.mail.yandex.net as 1459256213-e8YZDBmRmN-ur1KgWJk"
2016-03-29 15:56:54 1aktCW-0003J6-E8 => manager@{DOMAIN} R=
dnslookup2
T=remote_smtp H=mx.yandex.net [93.158.134.89] X=TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256 C="250 2.0.0 Ok: queued on mxfront5m. mail.yandex.net as 1459256214-sJw1dJeXUh-urn0ojhT" 2016-03-29 15:56:54 1aktCW-0003J6-E8 -> tatiana@{DOMAIN} R=dnslookup2 T=remote_smtp H=mx.yandex.net [93.158.134.89] X=TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256 C="250 2.0.0 Ok: queued on mxfront5m.mail.yandex.net as 1459256214-sJw1dJeXUh-urn0ojhT" 2016-03-29 15:56:54 1aktCW-0003J6-E8 Completed

Для ящиков user@domain сработает правило dnslookup2, для остальных dnslookup 

Делегирование DNS-домена на серверы Яндекса и подключение к бесплатной услуге Яндекса «Почта для домена»

03.02.2016 Автор:Алексей Максимов

40 126 Просмотров

Сегодня практически любой виртуальный хостинг в качестве дополнительной услуги предлагает возможность создания почтовых ящиков для вашего домена, однако удобство работы с такими ящиками иногда оставляет желать лучшего.

Чтобы поднять качество работы с почтой домена можно воспользоваться бесплатным сервисом от Яндекс Почта для домена. Данный сервис позволяет привязать почту вашего домена к почтовым серверам Яндекс с возможностью создания до 1000 безлимитных почтовых ящиков с использованием всех преимуществ сервиса Яндекс.Почта, таких как автоматическая проверка антивирусом, спам фильтры, доступ через веб-интерфейс, доступ с мобильных устройств и через прямое подключение по протоколам SMTP/POP3/IMAP.

Одним из основных этапов настройки привязки домена к почтовой системе Яндекса является создание специальных записей в DNS-зоне вашего домена. Чтобы максимально упростить и автоматизировать данную процедуру, можно произвести делегирование домена на NS-серверы Яндекса, то есть фактически воспользоваться ещё одним бесплатным сервисом

DNS-хостинг Яндекса.

В этой заметке мы поэтапно рассмотрим процедуру подключения почты домена к почтовым серверам Яндекса а также делегирование домена серверам Яндекса на примере нашего домена IT-KB. RU
 

Регистрируем аккаунт на Яндексе

Для работы с Почтой для домена необходим аккаунт Яндекса, используя который, мы в дальнейшем будем управлять почтой. На данный момент к каждому аккаунту можно подключить до 50 доменов. Зарегистрируемся и получим аккаунт Яндекс, если этого ещё не было сделано ранее.

 

Подключаем домен к Яндексу

После того, как мы авторизовались на сайте Яндекс используя созданный аккаунт, откроем cтраницу добавления домена, укажем имя нашего домена и нажмём кнопку Подключить домен.

После добавления домена, нам нужно будет подтвердить то, что мы являемся его владельцем. На веб-странице будет отображаться статус Домен не подтверждён и будет предложено три варианта действий, которыми мы сможем подтвердить владение доменом.

 

Из трёх предложенных вариантов я выбрал первый вариант с размещением файла в корневом каталоге сайта. После того, как указанный файл размещен, жмём кнопку Проверить владение доменом.

 

 

После успешной проверки нас перенаправят на страницу настройки MX-записи для нашего домена. Внести указанные изменения в DNS-зоне нашего домена можно как самостоятельно, так и автоматически, если выполнить делегирование домена на Яндекс. Учитывая то, что помимо MX-записи в нашем домене для полноценной поддержки почты Яндекс потребуется внести ещё несколько служебных SRV-записей, проще всего выполнить делегирование домена, в результате которого все нужные записи в DNS-зоне нашего домена будут созданы автоматически.

 

Пройдём по справочной ссылке делегировать домен на Яндекс и ознакомимся с информацией о том, как делегировать DNS-домен NS-серверам Яндекса. Здесь всё предельно просто. Переходим на DNS-хостинг, на котором в данный момент расположен наш доменом и правим записи NS-серверов. Поменяем текущие NS-серверы на dns1.yandex.net и dns2.yandex.net

Ждём некоторое время (может пройти от нескольких часов до двух суток), чтобы изменения разошлись по нейм-серверам интернета и проверяем результат, например, с помощью утилиты nslookup

 

Как видим, теперь нейм-серверами нашего домена являются серверы Яндекса, и мы можем вернуться к настройке почты для домена. Вернёмся на консоль управления почтой домена и увидим, что теперь статус домена изменился на Домен подключён и делегирован на Яндекс.

Откроем ссылку Редактор DNS и просмотрим автоматически добавленные и настроенные после делегирования домена записи для поддержки сервисов Яндекса — MX,CNAME записи для указания почтового сервера, SRV (SPF, DKIM) записи для поддержки сервисов почты и системы обмена сообщениями по XMPP.

Создадим новый почтовый ящик для нашего домена и ознакомимся с доступными возможностями по управлению ящиками

После создания ящиков входить получать доступ к почте через веб-интерфейс можно будет по ссылкам вида http://mail.yandex.ru/for/it-kb.ru или https://mail.it-kb.ru/ (в нашем DNS-домене для узла mail должна быть создана соответствующая запись). Войдя в почту, мы увидим, что для пользователей нашего домена доступно использование сервиса Яндекс. Диск с бесплатным базовым размером в 10GB.

 

Изучаем «плюшки» и делаем выводы

Из дополнительных интересных возможностей, которые предоставляет сервис «почта для домена» от Яндекс можно выделить ещё некоторые:

  • Возможность импорта почтовых ящиков с других почтовых серверов, в том числе и публичных, таких как например Gmail;
  • Централизованное управление ящиками домена;
  • Создание внутри-доменных групп рассылки;
  • Создание своей Jabber-сети с возможностью подключения к другим Jabber-сетям.
  • Доступ к почтовым ящикам с главных страниц Яндекса, напрямую с почтовых клиентов, с мобильных устройств ;
  • API для программного управления почтой домена;
  • и т.д.

Глядя на всё это, можно сказать, что для любой небольшой команды/компании/организации имеющей даже только лишь собственное доменное имя, на базе сервиса Почта для домена от Яндекс можно построить вполне приличный почтовый сервис для своего домена без финансовых затрат.

И это хорошо.

PS: Любителям позлорадствовать, сразу скажу, что данная заметка не носит какой-либо рекламный характер, а написана мной исключительно для того, чтобы познакомить с интересным бесплатным Российским сервисом от Яндекс тех, кто о нём ещё ничего не слышал.

Опубликовано в :  Хостинг , Яндекс

Метки :  DNS , Domain , Hosting , Jabber , Mail , Mailbox , MX , Nameserver , XMPP , Yandex , Домен , Почта для домена , Хостинг , Яндекс

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

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

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

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

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

Токен PDD.

"}}">: <токен PDD> . », « &», «*», «(», «)», «_», «-», «+», «:», «;», «, «.»

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

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

    Заголовки:

    11118080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808.

    Наименование Описание

    Параметры:

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

    Имя домена.

    логин String

    Электронный адрес почтового ящика в формате «username@domain. », « &», «*», «(», «)», «_», «-», «+», «:», «;», «,», «.»

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

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

    Токен PDD.

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

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

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

    Строка

    Значение

    Имя домена.

    "}}">=<имя домена> & Тип 9", "&", "*", "(", ")", "_", "-", "+", ":", ";", ", "."

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

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

    Заголовки:

    19292929.119292929.10018.

    .

    Наименование Описание
    Авторизация

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

    Parameters:

    9″, «&», «*», «(«, «)», «_», «-«, «+», «:», «;», «, «.»

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

  • Parameter Type Value
    Mandatory
    domain String

    Name of the domain.

    логин String

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

     POST /api2/admin/email/добавить HTTP/1. 1
    Хост: pddimp.yandex.ru
    PddToken: 123456789ABCDEF00000000000000000000000000000000000000
    ...
    Domain = Domain.com & Login = Newlogin & Password = 1234567890 

    Curl

     Curl -H 'Pddtoken: 123456789ABCDEF000000000000000000000000000000000' -d Domain = Domain.com & login..com = newrog и newrognin и newrogin newogin и newrogin resworgin и newrog newogin и newgin = newrogin reshin.comn.com и login..com.0' 'https://pddimp.yandex.ru/api2/admin/email/add' 
     POST /api2/admin/email/add HTTP/1.1
    Хост: pddimp.yandex.ru
    PddToken: 123456789ABCDEF00000000000000000000000000000000000000
    Авторизация: OAuth 00123456789ABCDEF000000000000000000000000000000000000
    ...
    domain=domain.com&login=newlogin&password=1234567890 

    cURL

     curl -H 'PddToken: 123456789ABCDEF0000000000000000000000000000000000000' -H 'Authorization: OAuth 00123456789ABCDEF00000000000000000000000000000000000' -d 'domain=domain. com&login=newlogin&password=1234567890' 'https://pddimp.yandex.ru/api2/admin/email/add' 
     {
      "  Тип значения  

    Строка

    Описание

    Имя домена.

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

    Строка

    Описание

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

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

    Целое число

    Описание

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

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

    Строка

    Описание

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

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

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

    Строка

    Описание

    Имя домена.

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

    Строка

    Описание

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

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

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

    Строка

    Описание

    Код ошибки.

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

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

    • Неизвестный - A Временная или AP произошла ошибка (повторите запрос позже).0416 no_ip ) — пропущен обязательный параметр.

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

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

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

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

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

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

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

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

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

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

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

    Получение списков рассылки домена — API. Яндекс.Почта для домена API

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

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

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

     ПОЛУЧИТЬ /api2/admin/email/ml/list?
      Тип  

    Строка

    Значение

    Имя домена.

    "}}">=<имя домена> Хост: pddimp.yandex.ru Описание

    Токен PDD.

    "}}">:

    Заголовки:

    0 PDDTONKONKONKONKINGNAIN1180813.

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

    Parameters:

    Parameter Type Value
    Mandatory
    domain String

    Name of the domain.

     ПОЛУЧИТЬ /api2/registrar/email/ml/list?
      Тип  

    Строка

    Значение

    Имя домена.

    "}}">=<имя домена> Хост: pddimp.yandex.ru Описание

    Токен PDD.

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

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

    "}}">: OAuth

    Заголовки:

    1919. 1008..

    Наименование Описание
    Авторизация

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

    Parameters:

    Parameter Type Value
    Mandatory
    domain String

    Name of the domain .

     ПОЛУЧИТЬ /api2/admin/email/ml/list?domain=domain.com HTTP/1.1
    Хост: pddimp.yandex.ru
    Пддтокен: 123456789ABCDEF000000000000000000000000000000000000000 

    Curl

     Curl -H 'Pddtoken: 123456789ABCDEF0000000000000000000000000000000' 'https://pddimp. yandex.ru. /email/ml/list?domain=domain.com HTTP/1.1
    Хост: pddimp.yandex.ru
    PddToken: 123456789ABCDEF00000000000000000000000000000000000000
    Авторизация: OAuth 00123456789ABCDEF000000000000000000000000000000000000 

    cURL

     curl -H 'PddToken: 123456789ABCDEF000000000000000000000000000000000000000 '-H' Authorization: OAuth 00123456789ABCDEF0000000000000000000000000000000 '' https://pddimp.yandex.ru/api2/admin/eml/ml/listex.
      "  Тип значения  

    Строка

    Описание

    Имя домена.

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

    Массив

    Описание

    Свойства списков рассылки. Каждый объект в массиве соответствует одному списку рассылки.

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

    Строка

    Описание

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

    "}}">": "{адрес списка рассылки}", " Тип значения

    Целое число

    Описание

    Идентификатор списка рассылки.

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

    Целое число

    Описание

    Количество подписчиков на список рассылки.

    "}}">": "{количество подписчиков}" }, ... ], " Тип значения

    Строка

    Описание

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

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

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

    Строка

    Описание

    Имя домена.

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

    Строка

    Описание

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

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

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

    строка

    Описание

    Код ошибки.

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

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

    • Неизвестный произошла ошибка (повторите запрос позже)

    • no_token ( no_domain , no_ip ) — пропущен обязательный параметр.

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

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

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

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

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

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

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

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