New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Настроить DKIM запись #593

Closed
mbaev opened this Issue Aug 18, 2017 · 37 comments

Comments

Projects
None yet
5 participants
@mbaev
Contributor

mbaev commented Aug 18, 2017

Мы совершили перенос drupal.ru на новый сервер и сейчас необходимо настроить DKIM запись для того, чтобы значительно уменьшить шанс попадания рассылок в спам.

@mbaev mbaev added the Improvement label Aug 18, 2017

@bober2000

This comment has been minimized.

Show comment
Hide comment
@bober2000

bober2000 Aug 31, 2017

Готов нарулить все что необходимо. Насколько я понимаю почта сейчас ходит используя SMTP Auth и Яндекс Почта для домена?

bober2000 commented Aug 31, 2017

Готов нарулить все что необходимо. Насколько я понимаю почта сейчас ходит используя SMTP Auth и Яндекс Почта для домена?

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 1, 2017

Contributor

@bober2000, мы используем свой сервер отправки, но принимаем на Яндекс и сейчас настроена DKIM Яндекса.
Собственно здесь нужно принять какое-то решение:

  • не хочется уходить с Яндекса:
    + хороший UI
    + настроен Я.Коннект
    - Не доступен из Украины
  • хочется остаться на своём сервере:
    + очередь отправки
    + производительность
    - Нельзя настроить вторую DKIM
Contributor

mbaev commented Sep 1, 2017

@bober2000, мы используем свой сервер отправки, но принимаем на Яндекс и сейчас настроена DKIM Яндекса.
Собственно здесь нужно принять какое-то решение:

  • не хочется уходить с Яндекса:
    + хороший UI
    + настроен Я.Коннект
    - Не доступен из Украины
  • хочется остаться на своём сервере:
    + очередь отправки
    + производительность
    - Нельзя настроить вторую DKIM
@bober2000

This comment has been minimized.

Show comment
Hide comment
@bober2000

bober2000 Sep 1, 2017

Я за 1й вариант.
По поводу DKIM Яндекса - подпись работает только если отправляете с веб-морды оного. Если с сервера и без SMTP Auth то не подписывает. Кому конкретно нужен доступ с Украины - знает что такое VPN.
Так же надо перенастроить SPF запись - сейчас она от Google ну и донастроить DMARC

bober2000 commented Sep 1, 2017

Я за 1й вариант.
По поводу DKIM Яндекса - подпись работает только если отправляете с веб-морды оного. Если с сервера и без SMTP Auth то не подписывает. Кому конкретно нужен доступ с Украины - знает что такое VPN.
Так же надо перенастроить SPF запись - сейчас она от Google ну и донастроить DMARC

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 1, 2017

Contributor

Все верно сказано.
Я вот не нашёл, но может быть в Яндекс можно добавить свой DKIM?
Тогда мы могли бы использовать одну подпись при отправке почты с обоих серверов и было бы всё ок.

Про гугл. Just fyi.

Я видел записи для гугла и оказывается у нас есть http://work.drupal.ru , к которому я на днях получил доступ.

--
Вот еще вопрос: drupal'ная реализация SMTP асинхронна?

Contributor

mbaev commented Sep 1, 2017

Все верно сказано.
Я вот не нашёл, но может быть в Яндекс можно добавить свой DKIM?
Тогда мы могли бы использовать одну подпись при отправке почты с обоих серверов и было бы всё ок.

Про гугл. Just fyi.

Я видел записи для гугла и оказывается у нас есть http://work.drupal.ru , к которому я на днях получил доступ.

--
Вот еще вопрос: drupal'ная реализация SMTP асинхронна?

@bober2000

This comment has been minimized.

Show comment
Hide comment
@bober2000

bober2000 Sep 1, 2017

Я вот не нашёл, но может быть в Яндекс можно добавить свой DKIM?

Там немного по другому делается, через API Yandex PDD забирается приватный ключ на сервер, в итоге то что идет с сервера - подписывается им и то что с Web интерфеса тоже им же.

Вот еще вопрос: drupal'ная реализация SMTP асинхронна?

Про асинхронность не готов сказать, но вроде как есть вариант положить в очередь и слать по крону.

bober2000 commented Sep 1, 2017

Я вот не нашёл, но может быть в Яндекс можно добавить свой DKIM?

Там немного по другому делается, через API Yandex PDD забирается приватный ключ на сервер, в итоге то что идет с сервера - подписывается им и то что с Web интерфеса тоже им же.

Вот еще вопрос: drupal'ная реализация SMTP асинхронна?

Про асинхронность не готов сказать, но вроде как есть вариант положить в очередь и слать по крону.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 1, 2017

Contributor

Там немного по другому делается, через API Yandex PDD забирается приватный ключ на сервер, в итоге то что идет с сервера - подписывается им и то что с Web интерфеса тоже им же.

Отличная инфа! Значит можем делать рассылки со своего сервера, а пользоваться UI Яндекса.
Это идеальный вариант. Можешь взяться за развитие этой темы?

Contributor

mbaev commented Sep 1, 2017

Там немного по другому делается, через API Yandex PDD забирается приватный ключ на сервер, в итоге то что идет с сервера - подписывается им и то что с Web интерфеса тоже им же.

Отличная инфа! Значит можем делать рассылки со своего сервера, а пользоваться UI Яндекса.
Это идеальный вариант. Можешь взяться за развитие этой темы?

@dansamara

This comment has been minimized.

Show comment
Hide comment
@dansamara

dansamara Sep 1, 2017

Вот еще вопрос: drupal'ная реализация SMTP асинхронна?

Если ты имеешь ввиду работу с локальным сервером, то это асинхронно, т.к. локальный почтовый сервер кладёт письмо в свою очередь и закрывает запрос.

dansamara commented Sep 1, 2017

Вот еще вопрос: drupal'ная реализация SMTP асинхронна?

Если ты имеешь ввиду работу с локальным сервером, то это асинхронно, т.к. локальный почтовый сервер кладёт письмо в свою очередь и закрывает запрос.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 1, 2017

Contributor

@dansamara я имею ввиду именно отправку писем через SMTP с помощью того же Яндекса.

Contributor

mbaev commented Sep 1, 2017

@dansamara я имею ввиду именно отправку писем через SMTP с помощью того же Яндекса.

@bober2000

This comment has been minimized.

Show comment
Hide comment
@bober2000

bober2000 Sep 1, 2017

@mbaev вот такие опции там есть
image
ну а дальше очередь уже обрабатывается через queue api - ее в принципе можно дергать с нужной частотой той же elysia_cron

bober2000 commented Sep 1, 2017

@mbaev вот такие опции там есть
image
ну а дальше очередь уже обрабатывается через queue api - ее в принципе можно дергать с нужной частотой той же elysia_cron

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 1, 2017

Contributor

@bober2000 ещё под queue api пишут отдельный крон. Обычный крон (на drupal.ru) слишком жирно будет под него дёргать

Contributor

mbaev commented Sep 1, 2017

@bober2000 ещё под queue api пишут отдельный крон. Обычный крон (на drupal.ru) слишком жирно будет под него дёргать

@bober2000

This comment has been minimized.

Show comment
Hide comment
@bober2000

bober2000 Sep 1, 2017

@mbaev я это и имел ввиду - что елизией его удобно дергать. И писать его не надо - он уже есть в модуле.

bober2000 commented Sep 1, 2017

@mbaev я это и имел ввиду - что елизией его удобно дергать. И писать его не надо - он уже есть в модуле.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 1, 2017

Contributor

Ок. Тогда возьмёшься? Получается надо:

  • Решить вопрос с Яндекс API на получение DKIM
  • Настроить SMTP на отправку через Яндекс по queue
  • Настроить queue с помощью elysia_cron.
Contributor

mbaev commented Sep 1, 2017

Ок. Тогда возьмёшься? Получается надо:

  • Решить вопрос с Яндекс API на получение DKIM
  • Настроить SMTP на отправку через Яндекс по queue
  • Настроить queue с помощью elysia_cron.
@bober2000

This comment has been minimized.

Show comment
Hide comment
@bober2000

bober2000 Sep 1, 2017

Вопрос, это дело надо проклацать и выкатить feature или настроить на проде?

bober2000 commented Sep 1, 2017

Вопрос, это дело надо проклацать и выкатить feature или настроить на проде?

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 1, 2017

Contributor

Идеальный вариант - прогнать через код.
Чуть похуже - описать в задаче и повторять действия на каждом окружении ручками.
Самый плохой - просто зайти и сделать ручками.

Contributor

mbaev commented Sep 1, 2017

Идеальный вариант - прогнать через код.
Чуть похуже - описать в задаче и повторять действия на каждом окружении ручками.
Самый плохой - просто зайти и сделать ручками.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 5, 2017

Contributor

Привет. Появились какие идеи?

Contributor

mbaev commented Sep 5, 2017

Привет. Появились какие идеи?

@bober2000

This comment has been minimized.

Show comment
Hide comment
@bober2000

bober2000 Sep 5, 2017

@mbaev вопрос - на сервере какое ПО в качестве Mailer стоит?

bober2000 commented Sep 5, 2017

@mbaev вопрос - на сервере какое ПО в качестве Mailer стоит?

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 5, 2017

Contributor

Привет! Там стоит postfix

Contributor

mbaev commented Sep 5, 2017

Привет! Там стоит postfix

@bober2000

This comment has been minimized.

Show comment
Hide comment
@bober2000

bober2000 Sep 5, 2017

Надо сделать следующее:

  1. Получаем токен для активации API Яндекс.Почты для доменов:
    http://api.yandex.ru/pdd/doc/reference/get-token.xml
  2. Далее получаем приватный ключ для DKIM через API следующим образом:
    https://pddimp.yandex.ru/api2/admin/dkim/status.xml?domain=drupal.ru&token=ТОКЕН_ИЗ_П1&secretkey=yes
    Пример для curl
    curl -H 'PddToken: 123456789ABCDEF0000000000000000000000000000000000000' 'https://pddimp.yandex.ru/api2/admin/dkim/status?domain=drupal.ru&secretkey=yes'
    Приватный ключ находится в секции secretkey. Публичный в секции txtrecord
  3. В DNS зону прописать mail._domainkey.drupal.ru. IN TXT "значение из п.2 txtrecord"
  4. В DNS зону прописать drupal.ru. IN TXT "v=spf1 ip4:IP - сервера на котором drupal.ru ip6:IPv6 сервера на котором drupal.ru include:_spf.yandex.ru ~all"
  5. Настроить postfix на подписывание писем используя приватный ключ secretkey.
    Есть подозрение что этого будет достаточно и не нужно будет настраивать SMTP Auth модуль на сайте. Если у вас есть админ который имеет все эти доступы и доступ к postfix то это алгоритм действий. Ну или мне тогда.

bober2000 commented Sep 5, 2017

Надо сделать следующее:

  1. Получаем токен для активации API Яндекс.Почты для доменов:
    http://api.yandex.ru/pdd/doc/reference/get-token.xml
  2. Далее получаем приватный ключ для DKIM через API следующим образом:
    https://pddimp.yandex.ru/api2/admin/dkim/status.xml?domain=drupal.ru&token=ТОКЕН_ИЗ_П1&secretkey=yes
    Пример для curl
    curl -H 'PddToken: 123456789ABCDEF0000000000000000000000000000000000000' 'https://pddimp.yandex.ru/api2/admin/dkim/status?domain=drupal.ru&secretkey=yes'
    Приватный ключ находится в секции secretkey. Публичный в секции txtrecord
  3. В DNS зону прописать mail._domainkey.drupal.ru. IN TXT "значение из п.2 txtrecord"
  4. В DNS зону прописать drupal.ru. IN TXT "v=spf1 ip4:IP - сервера на котором drupal.ru ip6:IPv6 сервера на котором drupal.ru include:_spf.yandex.ru ~all"
  5. Настроить postfix на подписывание писем используя приватный ключ secretkey.
    Есть подозрение что этого будет достаточно и не нужно будет настраивать SMTP Auth модуль на сайте. Если у вас есть админ который имеет все эти доступы и доступ к postfix то это алгоритм действий. Ну или мне тогда.
@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 5, 2017

Contributor

Назначаю на тебя, доступы дам вечером.

Contributor

mbaev commented Sep 5, 2017

Назначаю на тебя, доступы дам вечером.

@mbaev mbaev self-assigned this Sep 5, 2017

@awd-studio awd-studio referenced this issue Sep 5, 2017

Closed

Upgrade smtp #250

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 7, 2017

Contributor

У нас теперь есть возможность получить приватный и публичный ключ без обращения по API.
image

Contributor

mbaev commented Sep 7, 2017

У нас теперь есть возможность получить приватный и публичный ключ без обращения по API.
image

@bober2000

This comment has been minimized.

Show comment
Hide comment
@bober2000

bober2000 Sep 7, 2017

Отлично - в зону пропишешь все что из п.3-4 ? И второй вопрос - если мы все таки интегрируем #250 и #188 то postfix в принципе можно и не настраивать.

bober2000 commented Sep 7, 2017

Отлично - в зону пропишешь все что из п.3-4 ? И второй вопрос - если мы все таки интегрируем #250 и #188 то postfix в принципе можно и не настраивать.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 7, 2017

Contributor

Ага гляну сегодня. Там правда уже что-то прописано.

Contributor

mbaev commented Sep 7, 2017

Ага гляну сегодня. Там правда уже что-то прописано.

@bsyomov

This comment has been minimized.

Show comment
Hide comment
@bsyomov

bsyomov Sep 14, 2017

Надо настроить локальный почтовый сервер, на пересылку почты через яндекс, в этом случае все проблемы
описанные выше снмаются - dkim занимается yandex, посылать можно просто mail(), без очередей и.т.п они реализуются локальным почтовиком.

Я так не раз делал, это имхо проще и удобнее. К тому же, у яндекса бывают проблемы с приёмом почты и таймауты, и локальный почтовик эти ситуации обработает, перепослав письмо.

bsyomov commented Sep 14, 2017

Надо настроить локальный почтовый сервер, на пересылку почты через яндекс, в этом случае все проблемы
описанные выше снмаются - dkim занимается yandex, посылать можно просто mail(), без очередей и.т.п они реализуются локальным почтовиком.

Я так не раз делал, это имхо проще и удобнее. К тому же, у яндекса бывают проблемы с приёмом почты и таймауты, и локальный почтовик эти ситуации обработает, перепослав письмо.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 14, 2017

Contributor

Можешь взяться?

Contributor

mbaev commented Sep 14, 2017

Можешь взяться?

@bsyomov

This comment has been minimized.

Show comment
Hide comment
@bsyomov

bsyomov Sep 14, 2017

Хорошо. Сделаю, только продублируй задачу на projects, пожалуйста.

bsyomov commented Sep 14, 2017

Хорошо. Сделаю, только продублируй задачу на projects, пожалуйста.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 14, 2017

Contributor

Это ж не секьюрная)

Contributor

mbaev commented Sep 14, 2017

Это ж не секьюрная)

@bsyomov

This comment has been minimized.

Show comment
Hide comment
@bsyomov

bsyomov Sep 14, 2017

Вполне секюрная, мне нужны доступы к ящику для настройки будут.

bsyomov commented Sep 14, 2017

Вполне секюрная, мне нужны доступы к ящику для настройки будут.

@bsyomov

This comment has been minimized.

Show comment
Hide comment
@bsyomov

bsyomov Sep 14, 2017

Кстати, сразу к той задаче их и приложи.

bsyomov commented Sep 14, 2017

Кстати, сразу к той задаче их и приложи.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 14, 2017

Contributor

Ок, тогда давай дублировать. Здесь публичный статус, а детали в привате.
Сегодня опишу детали там

Contributor

mbaev commented Sep 14, 2017

Ок, тогда давай дублировать. Здесь публичный статус, а детали в привате.
Сегодня опишу детали там

@bsyomov

This comment has been minimized.

Show comment
Hide comment
@bsyomov

bsyomov Sep 14, 2017

Да, ок.

bsyomov commented Sep 14, 2017

Да, ок.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 14, 2017

Contributor

Ну и тебе будут кредитсы, а то ведь никто даже не знает, что ты уже два наших сервера настроил.

Contributor

mbaev commented Sep 14, 2017

Ну и тебе будут кредитсы, а то ведь никто даже не знает, что ты уже два наших сервера настроил.

@mbaev mbaev assigned bsyomov and unassigned bober2000 Sep 17, 2017

@itcrowd72

This comment has been minimized.

Show comment
Hide comment
@itcrowd72

itcrowd72 Sep 25, 2017

Member

Товарищи @mbaev @bsyomov
А что у нас с SPF записью после переноса на новый хостинг? Недавно обнаружил, что мой почтовый сервер не принимает почту с д.ру, т.к. тот не проходит проверку SPF

Логи:
Sep 20 03:58:25 mx postfix/smtpd[3438]: connect from 151515.simplecloud.ru[85.143.172.161]
Sep 20 03:58:29 mx policyd-spf[3443]: Softfail; identity=helo; client-ip=85.143.172.161; helo=drupal.ru; envelope-from=webmaster@drupal.ru; receiver=info@itcrowd72.ru
Sep 20 03:58:29 mx postfix/smtpd[3438]: NOQUEUE: reject: RCPT from 151515.simplecloud.ru[85.143.172.161]: 550 5.7.1 webmaster@drupal.ru: Sender address rejected: Message rejected due to: domain owner discourages use of this host. Please see http://www.openspf.net/Why?s=helo;id=drupal.ru;ip=85.143.172.161;r=info@itcrowd72.ru; from=webmaster@drupal.ru to=info@itcrowd72.ru proto=ESMTP helo=<drupal.ru>
Sep 20 03:58:29 mx postfix/smtpd[3438]: disconnect from 151515.simplecloud.ru[85.143.172.161]

Вы можете сказать ССЗБ, но я считаю, что лучше всё-таки SPF настроить корректно.

Member

itcrowd72 commented Sep 25, 2017

Товарищи @mbaev @bsyomov
А что у нас с SPF записью после переноса на новый хостинг? Недавно обнаружил, что мой почтовый сервер не принимает почту с д.ру, т.к. тот не проходит проверку SPF

Логи:
Sep 20 03:58:25 mx postfix/smtpd[3438]: connect from 151515.simplecloud.ru[85.143.172.161]
Sep 20 03:58:29 mx policyd-spf[3443]: Softfail; identity=helo; client-ip=85.143.172.161; helo=drupal.ru; envelope-from=webmaster@drupal.ru; receiver=info@itcrowd72.ru
Sep 20 03:58:29 mx postfix/smtpd[3438]: NOQUEUE: reject: RCPT from 151515.simplecloud.ru[85.143.172.161]: 550 5.7.1 webmaster@drupal.ru: Sender address rejected: Message rejected due to: domain owner discourages use of this host. Please see http://www.openspf.net/Why?s=helo;id=drupal.ru;ip=85.143.172.161;r=info@itcrowd72.ru; from=webmaster@drupal.ru to=info@itcrowd72.ru proto=ESMTP helo=<drupal.ru>
Sep 20 03:58:29 mx postfix/smtpd[3438]: disconnect from 151515.simplecloud.ru[85.143.172.161]

Вы можете сказать ССЗБ, но я считаю, что лучше всё-таки SPF настроить корректно.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Sep 25, 2017

Contributor

Как только закончим #601 так сделаем почту.

Contributor

mbaev commented Sep 25, 2017

Как только закончим #601 так сделаем почту.

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Oct 24, 2017

Contributor

@bsyomov можно браться!

Contributor

mbaev commented Oct 24, 2017

@bsyomov можно браться!

@bsyomov

This comment has been minimized.

Show comment
Hide comment
@bsyomov

bsyomov Oct 25, 2017

@itcrowd72 Ты прав, спасибо, что заметил. =)
У нас сейчас не правильно совсем настроен spf:
drupal.ru. 1800 IN TXT "v=spf1 include:_spf.google.com ~all"

Должно быть:
"v=spf1 redirect=_spf.yandex.net"
для яндекса

"v=spf1 a include:_spf.yandex.net ~all"
для текущей настройки.

bsyomov commented Oct 25, 2017

@itcrowd72 Ты прав, спасибо, что заметил. =)
У нас сейчас не правильно совсем настроен spf:
drupal.ru. 1800 IN TXT "v=spf1 include:_spf.google.com ~all"

Должно быть:
"v=spf1 redirect=_spf.yandex.net"
для яндекса

"v=spf1 a include:_spf.yandex.net ~all"
для текущей настройки.

@mbaev mbaev added this to the 4-ое Декабря 2017 milestone Nov 9, 2017

@mbaev

This comment has been minimized.

Show comment
Hide comment
@mbaev

mbaev Nov 9, 2017

Contributor

Теперь письма идут через Яндекс.
https://www.mail-tester.com/web-p8sos
image

Спасибо всем!

Contributor

mbaev commented Nov 9, 2017

Теперь письма идут через Яндекс.
https://www.mail-tester.com/web-p8sos
image

Спасибо всем!

@mbaev mbaev removed their assignment Nov 9, 2017

@bsyomov

This comment has been minimized.

Show comment
Hide comment
@bsyomov

bsyomov Nov 9, 2017

Готово.
Authentication-Results: mx.google.com;
dkim=pass header.i=@drupal.ru header.s=mail header.b=QoSqYvG4;

bsyomov commented Nov 9, 2017

Готово.
Authentication-Results: mx.google.com;
dkim=pass header.i=@drupal.ru header.s=mail header.b=QoSqYvG4;

@mbaev mbaev closed this Nov 9, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment