Алексей Лебедев (wamba)
TRANSCRIPT
![Page 1: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/1.jpg)
Почта в интернет-проекте:
инфраструктура, статистика, мониторинг
Лебедев Алексей
![Page 2: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/2.jpg)
Почтовая инфраструктура
● IP адрес● Почтовый домен● Почтовый сервер● Программный код (отправка писем,
обработка жалоб и т. д.)● Статистика
![Page 3: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/3.jpg)
IP адрес
● Должен быть статическим● Лучше если у этого IP адреса не было
почтовой истории в течении последних 6 месяцев
● Идеально было бы иметь почтовый IP адрес из собственной автономной сети
![Page 4: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/4.jpg)
Почтовый домен — DNS записи● Тип «А» - по домену возвращает IP адрес. На этом
домене лучше не иметь веб-версии сайта.
● Тип «PTR» - по IP адресу получаем домен. PTR запись для IP адреса должна соответствовать имени отправляющего почтового сервера, которым он представляется в процессе SMTP-сессии (HELO).
● SPF-запись (заполняется в TXT) - указывает список серверов, имеющих право отправлять email-сообщения с обратными адресами в этом домене.
● Открытый ключ для ЭЦП (заполняется в TXT)
● abuse@, postmaster@ и whois-контакты — рабочие.
![Page 5: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/5.jpg)
DomainKeys Identified Mail (DKIM)
● Это метод E-mail аутентификации для антифишинга
● Открытый ключ добавляется в txt-поле DNS-записи.
● Добавляет в письмо цифровую подпись, связанную с именем домена отправителя письма
● Для создания ЭЦП использует извлеченный из хранилища закрытый ключ, созданный на основе информации о письме. Подпись вставляется в заголовок письма (DKIM-Signature).
● Проверка подлинности происходит при помощи открытого ключа.
![Page 6: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/6.jpg)
DomainKeys
● Система e-mail аутентификации, разработанная для проверки DNS домена отправителя e-mail сообщения и достоверности сообщения.
● Проект DomainKeys начала компания Yahoo
● DomainKeys выпущен в 2007 году со статусом «historical» - RFC 4870
● Подпись вставляется в заголовок письма (DomainKey-Signature).
![Page 7: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/7.jpg)
Почтовый сервер (MTA)
● Гибкая настройка почтовых логов.● Вменяемая производительность.● Наш почтовый сервер — Postfix.
![Page 8: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/8.jpg)
Почтовые логи
● Анализируем почтовые логи.● Добавляем результаты отправки каждого
письма в статистику.● При неуспешной отправке — делаем
различные действия в зависимости от причины неудачной отправки.
![Page 9: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/9.jpg)
Почтовые логи — sent (2.x.x)
● Письмо успешно отправлено:
Oct 16 11:47:04 relay postfix/smtp[1684]: 80E4EBFBB5134: to=<[email protected]>, relay=imx1.rambler.ru[81.19.66.235]:25, conn_use=7, delay=0.3, delays=0.13/0/0/0.17, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as A4F27516)
● Действия: отправляем результат успешной отправки в статистику.
![Page 10: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/10.jpg)
Почтовые логи — deferred (4.x.x)
● Сообщение временно не отправлено:Oct 16 10:42:52 relay postfix/smtp[16262]: 67D13BF75552F: to=<[email protected]>, relay=relay.nursat.net[195.82.0.9]:25, delay=159, delays=129/0/30/0, dsn=4.4.2, status=deferred (conversation with relay.nursat.net[195.82.0.9] timed out while receiving the initial server greeting)
● Добавляем данные статистику со статусом deferred
● Применяем временную блокировку данного адреса
![Page 11: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/11.jpg)
Почтовые логи — deferred (4.x.x)
● Случился «интересный» deferred:Oct 16 05:10:18 relay postfix/error[30520]: D5A21BE49DF97: to=<[email protected]>, relay=none, delay=0.12, delays=0.12/0/0/0, dsn=4.0.0, status=deferred (delivery temporarily suspended: host tommx.cdn.163.net[202.108.255.210] refused to talk to me: 421 /32 connection rate limit exceeded)
● Добавляем данные в статистику с особым статусом
● Применяем временную блокировку, мониторинг, ...
![Page 12: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/12.jpg)
Почтовые логи — bounced (5.x.x)
● Сообщение не отправлено (и отправлено не будет).
Oct 16 07:53:38 relay postfix/smtp[21592]: 4332BBEAC0166: to=<[email protected]>, relay=mxs.mail.ru[94.100.176.20]:25, delay=0.2, delays=0.12/0/0.01/0.07, dsn=5.0.0, status=bounced (host mxs.mail.ru[94.100.176.20] said: 550 Message was not accepted -- invalid mailbox. Local mailbox [email protected] is unavailable: user not found (in reply to end of DATA command)
● Добавляем данные статистику со статусом bounced
● Блокируем отправку писем
● Хранилище «битых» адресов
![Page 13: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/13.jpg)
Почтовые логи — bounced (5.x.x)● Случился «интересный» bounced:
Oct 16 10:03:22 relay postfix/smtp[15411]: 7FF91BF391708: to=<[email protected]>, relay=mta7.am0.yahoodns.net[98.138.112.38]:25, delay=2, delays=0.13/0/0.5/1.4, dsn=5.0.0, status=bounced (host mta7.am0.yahoodns.net[98.138.112.38] said: 554 Message not allowed - [PH01] Email not accepted for policy reasons. Please visit http://postmaster.yahoo.com/errors/postmaster-27.html [120] (in reply to end of DATA command))
● Добавляем данные в статистику с особым статусом
● Применяем временную блокировку, мониторинг, ...
![Page 14: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/14.jpg)
Программный код для отправки писем
● Письмо должно удовлетворять многим RFC: 2821, 2822, 532, 5322, …
● Не надо выдумывать велосипед● Для PHP: swiftmailer, zend-mail,...● Библиотеки сами заботятся о стандартах
![Page 15: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/15.jpg)
Зачем нужна почтовая статистика?
![Page 16: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/16.jpg)
Почтовая рассылка в среднестатистическом проекте
● подняли MTA● Генерация контента письма● mail($recipient, $subject, $body, $header);● ...● PROFIT!
![Page 17: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/17.jpg)
А что с почтовой статистикой?
● Ммм... ● У нас есть логи MTA!● grep '@#$%@' mail.log | wc -l● Получили статистику отправленных писем!
![Page 18: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/18.jpg)
Почтовая статистика из MTA
![Page 19: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/19.jpg)
Что не хватает?
● А что с просмотрами, кликами?● На какие домены шлем почту?● А если рассылаем разные типы писем?● А если письма на нескольких языках?● ...
![Page 20: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/20.jpg)
Есть готовые решения!
● postmaster.mail.ru● postmaster.yandex.ru● …● И они к тому же бесплатные!
![Page 21: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/21.jpg)
postmaster.yandex.ru
![Page 22: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/22.jpg)
Минусы готовых решений
● Не все почтовые сервисы предоставляют доступ к почтовой статистике
● postmaster.mail.ru, postmaster.yandex.ru, … - много разных интерфейсов, нет единой статистики
● Платные решения при большом объеме почтового трафика очень дорогие
![Page 23: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/23.jpg)
Делаем свою почтовую статистику
![Page 24: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/24.jpg)
Какие данные передавать в почтовую статистику
● Адрес получателя
● Тип письма
● Время отправки
● Время просмотра
● Время перехода из письма на сайт
● Язык
● Страна, пол, ...
● Статус отправки (MTA: sent, bounced, deferred)
![Page 25: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/25.jpg)
Как передавать данные в почтовую статистику
● Для каждого письма при отправке генерируем уникальный идентификатор, передаем ID и остальные данные в статистику
● В письмо встраиваем pixel:<img src="http://mamba.ru/1.jpg?id=288ade5a9f3fbc45b096dc695" alt=""/>
погрешность!
● В ссылках письма добавляем ID и обрабатываем в контроллерах
● Анализируем логи MTA — получаем статус отправки (sent, bounced, deferred)
![Page 26: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/26.jpg)
Как обрабатывать данные в почтовой статистике
● Письмо могут просмотреть не сразу● Храним данные о каждом письме 2 недели ● В хранилище сотни миллионов записей● Асинхронно!!!● RabbitMQ + MySQL● Шардинг● Хитрая агрегация данных
![Page 27: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/27.jpg)
Новый график статистики
![Page 28: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/28.jpg)
Как анализировать статистику?
● Фильтры:– Почтовый сервис (gmail, hotmail etc..)
– Тип письма
– Язык
– …
● С помощью фильтров делаем полезные графики
● С помощью фильтров локализуем проблему
![Page 29: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/29.jpg)
Статистика без фильтров — как бы все хорошо..
![Page 30: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/30.jpg)
Фильтр «письмо о новом сообщении/Español»- проблема генерации контента на испанском
![Page 31: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/31.jpg)
Фильтр «письмо о новом сообщении/AOL»- письма попали в спам
![Page 32: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/32.jpg)
MTA: Фильтр «письмо о новом сообщении»- проблема с плохими адресами
![Page 33: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/33.jpg)
Делаем Dashboards
![Page 34: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/34.jpg)
Жалобы пользователей
![Page 35: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/35.jpg)
Жалобы: Feedback Loop (FBL)
● Работает в yahoo, hotmail, mail.ru и т д.● Подключается в интерфейсе postmaster
почтового сервиса.● отсылается уведомление при нажатии на
кнопку «Это спам»● Пересылается оригинал письма, на которое
пожаловались● Обрабатываем жалобы (отписываем от
рассылок) и добавляем в статистику жалоб.
![Page 36: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/36.jpg)
Жалобы: List-Unsubscribe
● Работает в Gmail, yandex и т. д.● Встраиваем в письмо:
List-Unsubscribe: <mailto:[email protected]?subject=...>
● Отсылается уведомление при нажатии на кнопку «Это спам», «Отписаться от рассылки» и т. д.
● Оригинал письма не пересылается, данные для обработки жалобы передаем через
subject письма
![Page 37: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/37.jpg)
Фильтр «письмо о новом сообщении / Italiano»- некорректный перевод письма
![Page 38: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/38.jpg)
Анализ жалоб
● При всплеске жалоб необходимо выяснить причину жалоб
● Локализуем причину жалоб с помощью фильтров в статистике (язык, тип письма,..)
● Практика показывает что пользователи просто так жаловаться не будут — FBL как механизм поиска ошибок.
![Page 39: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/39.jpg)
Мониторинг почты
![Page 40: Алексей Лебедев (Wamba)](https://reader034.vdocuments.net/reader034/viewer/2022052602/559bbc271a28ab971a8b46ce/html5/thumbnails/40.jpg)
Мониторинг почты
● Количество отосланных писем, просмотров писем, переходов из писем с применением различных фильтров
● Количество жалоб на письма с применением различных фильтров
● Количественных характеристики логов MTA● Пороги срабатывания мониторинга ставятся
индивидуально, в зависимости от многих параметров