Компания
409,62
рейтинг
27 января 2014 в 16:44

Разное → Как инфраструктура Яндекс.Почты выросла за 13 лет

Во втором десятилетии XXI века почта — это не только переписка между людьми. Пользователи ожидают, что почта будет помогать им решать ежедневные задачи, экономить время, подсказывать недостающую информацию. Мы постоянно добавляем в Яндекс.Почту новые штрихи, которые делают жизнь пользователей немного проще. Сегодня мы бы хотели вместе с вами заново пройти тот путь, который Яндекс.Почта проделала за 13 лет, уделяя особое внимание развитию архитектуры и инфраструктуры сервиса.



Сейчас мало кто помнит, что самая первая версия Яндекс.Почты была написана на PHP, а письма хранились прямо в реляционной БД рядом с мета-информацией. В том не таком уж и далёком 2000 году весь почтовый сервис умещался на десятке серверов. Сами сервера обслуживались полностью в ручном режиме: от конфигурации дисков до установки операционной системы, никакой автоматизации не было.

2002 год


Первым, от чего пришлось отказаться, стал язык PHP. В то время он чаще мешал, чем помогал развиваться.



Вокруг было много первоклассных Perl-специалистов, под сам Perl уже тогда существовало огромное количество библиотек, и мы переписали почту на связке Apache + Perl. Стало быстрее и проще.

2005 год


Прошло еще немного времени, и существующая многопроцессная модель Apache перестала справляться с нагрузкой. Отдельную проблему создавал интерпретатор Perl и особенности его подключения к хранилищу мета-информации. В результате после серии экспериментов, в том числе с бета-версией тредного Apache 2, мы написали собственный модульный сервер приложений под названием Baida. Он может использовать как тредовую, так и event-loop модель обработки запросов, очень удобен для подключения расширений, в том числе интерпретаторов языков — например, JS. Сервер, как и большая часть кода Яндекс.Почты, написан на C++. Во многом это библиотека для сетевого обмена и работы с тредами, которая была нужна для того, чтобы обеспечить работу сервиса при росте нагрузок.

В этот сервер для облегчения эксплуатации встроен real-time мониторинг его состояния. Вдобавок мы полностью отказались от Perl. Вместо него был создан отдельный Baida-модуль — Web Mail Interface, который внутри себя содержал интерпретатор XScript: парсер XML и движок XSLT-преобразований. Другая особенность — пул соединений с реляционным мета-хранилищем и эффективное управление этим пулом.



2006 год


Стало понятно, что хранить тела писем в реляционном хранилище с растущими объемами данных не получится. Так появился заказ на специализированное хранилище писем, которое получило название Mulca. Технология за восемь лет развития претерпела не так много архитектурных изменений, хотя хранилище многократно выросло в размерах. Сейчас, кроме Почты, оно используется для хранения файлов в Яндекс.Диске.

С момента запуска отдельного хранилища, мы экспериментировали с конфигурацией дисковой подсистемы на серверах: пробовали разные уровни RAID и объединяли устройства в большие разделы. Дольше всего просуществовала конфигурация RAID5, но у нее были недостатки, которые нужно было устранять: RAID5 требует вычисления контрольных сумм, а также повторного чтения блока при его дозаписи, что снижает скорость записи. В случае, если необходимо пересобрать массив, его производительность так же деградирует на долгое время.



Тогда же мы начали проводить эксперименты с SATA дисками вместо SCSI. Оказалось, что без RAID5 SATA диски дают приблизительно ту же скорость доступа к данным, что и SCSI, собранные в RAID5 в нашей конфигурации. Нужно было или оптимизировать конфигурацию, или же придумать своё решение для обеспечения отказоустойчивости.

2007 год


Мы приняли решение полностью отказаться от RAID массивов на Mulca, и обеспечивать отказоустойчивость на уровне хранилища, а не дисковой подсистемы отдельного сервера. Некоторое время спустя высокопроизводительные SCSI диски небольшой емкости мы заменили на большие SATA-диски. Переход на отдельные файловые системы и отказ от избыточности на уровне дисков дал неплохую экономию ресурсов по месту. Вкупе с переходом на SATA ввод в строй новых объемов хранилища заметно ускорился. В случае выхода диска из строя мы просто копировали данные из второй копии в другом дата-центре. В это же время впервые появилась наша знаменитая почтовая стена.

image

Разработка этого dashboard была инициирована системными администраторами и служила тому, чтобы сводить воедино восприятие ситуации эксплуатацией, разработкой и менеджерами. Мы выделили самые важные числа и повесили их на видное место, чтобы все причастные к продукту видели, как он себя чувствует. К слову, внешний вид стены почти не поменялся с годами. С этой стены во всем Яндексе пошла традиция вешать панели и проекторы с важной информацией.

Традиционный POP3 со временем эволюционировал: из модуля Baida превратился в самостоятельный демон и научился читать данные из реплики мета-хранилища. Примерно в это же время стало понятно, что нам нужен протокол IMAP, и мы, используя опыт, полученный при разработке POP3, начали писать его с нуля. Текущая версия нашего IMAP четвертая по счету, и мы не планируем на этом останавливаться.

Для доставки почты использовался SMTP-сервер zMailer, и мы начали чувствовать его ограничения: в нашей архитектуре он плохо принимал входящие соединения, так как на каждое входящее подключение созавал новый процесс, и очень быстро деградировал при росте очереди. Мы накладывали на него свои патчи, но это не сильно помогало в решении проблем. Стало понятно, что нам нужна другая технология. После долгих обсуждений мы решили переключиться на Postfix, он намного лучше работает с большими очередями. Пришлось, конечно, переписать агент доставки из Postfix в наше хранилище.

2008 год


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

Сначала мы написали новый агент доставки — Fastsrv, и встроили его сначала в zMailer, а затем и в Postfix. Fastsrv практически не имеет очереди и держит постоянное соединение в мета-базу. Его установили на кластерах приема почты. Любое входящее письмо старались мгновенно положить пользователю в ящик, и только если не получилось, откидывали в очередь на доставку. Так большая часть писем стала доставляться практически мгновенно. Очереди на доставку из привычной картинки на графиках стали символом проблемы, и мы отразили это в мониторингах.

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

Теперь пришла пора заменить Postfix на приеме почты. Свой собственный SMTP-сервер мы назвали NwSMTP. Он был задуман как event-based сервер, способный обрабатывать неограниченно большое число соединений. Аналогично устроен небезызвестный web-сервер NGINX, но на тот момент в нем не было поддержки SMTP-proxy. Так мы начали принимать письма практически мгновенно. Разработка NwSMTP была устроена довольно интересно: выкатки происходили очень часто — иногда по версии в час. Сразу после сборки новой версии ее выкатывали на одну production-машину и смотрели, что происходит. Такая оперативность позволила очень быстро выпустить продукт. Отсюда пошло название NwSMTP, это сокращение от Next Week SMTP: почти любая задача в нем за семь дней проходит полный цикл разработки и на вопрос «Когда вы это сделаете?» группа разработки сервера отвечает: «На следующей неделе».

В середине 2008 года, когда у нас запустился Jabber-сервер, мы в качестве эксперимента сделали real-time уведомления о новых письмах. Чтобы не тормозить систему покладки, нотификации работали по UDP-протоколу, а внутри содержали XML-данные, удобные для превращения в XMPP-пакет. Сегодня шутки про «XML по UDP» вызывают улыбку, но в то время это работало, хотя и с большими ограничениями и потерями части нотификаций.

2009 год


К этому времени в Яндекс.Почте одновременно работало несколько интерфейсов. Neo не был интерактивным: HTML-страница генерировалась внутри WMI. Modern содержал интерактив, но был построен на той же архитектуре.

Интерфейс Яндекс.Почты в 2009 году

Мы решли придумать интерфейс, который загружает только самое необходимое — то, что изменилось прямо сейчас. После серии экспериментов удалось подготовить платформу и доказать, что такой сервис может работать. Так на свет появился интерфейс Daria, его можно видеть в Почте и сейчас.



С переходом на динамику очень сильно поменялась структура запросов. К этому времени сервер nginx достаточно развился и мы решили поставить его перед Baida для отдачи статики в Почте (к этому времени он уже использовался, например, в Народе). Одновременно с Daria мы экспериментировали с запуском интерпретируемых языков на стороне сервера. Остановились на Javascript в основном из-за удобства, так как на клиенте и сервере используется один и тот же язык программирования. Под сервер Baida написали модуль с TraceMonkey, встроить V8, к сожалению было невозможно. Он уже был популярен, но V8 на тот момент не мог работать с тредной моделью программирования (в последних версиях V8 этот недостаток исправлен).

Nginx позволил обрабатывать разные URL-ы по-разному, и мы разнесли собственно логику, раздачу вложений, а также вынесли старые интерфейсы на отдельные кластера. Это значительно упростило развертывание обновлений и эксплуатацию, а также позволило декомпозировать целостную систему на отдельные компоненты. Основные методы работы почты стали независимы от второстепенных, вся система в целом стала стабильнее.

В этом году мы сделали треды, что безусловно, сильно отразилось на структуре БД и нагрузке.

Традиционно размер ящика был ограниченного размера, и Яндекс.Почта не была исключением. Но мы решили, что пора отменить это ограничение. Такое решение изменило наш регламент. Если раньше мы могли рассчитывать нагрузку и размер хранилища, то с бесконечным ящиком все немного сложнее. Мы уже не могли в каждый момент времени сказать, сколько данных нам нужно положить на хранение. В это время мы складывали примерно по терабайту данных в день. Для сравнения, сегодня мы сохраняем по 120 Тб в сутки.

Отдельная история про просмотрщик документов

Как-то мы захотели проверить, насколько востребованным будет сервис просмотра документов. Удалось очень быстро разработать прототип на python и поднять ферму OpenOffice, который конвертировал документы в HTML. Перед сервисом поставили nginx для защиты от всплесков нагрузки, добавили модуль обращения в хранилище за документами и отдали в эксплуатацию. В таком виде прототип просуществовал несколько лет, оброс мониторингами, оптимизациями и второстепенными возможностями. Сейчас эксплуатируется уже вторая версия просмотрщика, которая впрочем работает примерно на тех же технологиях.

2010 год


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

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

Тогда же в 2010 году мы проделали большую работу, чтобы перевести внутреннюю переписку Яндекса (наши коллеги пишут очень много писем) на технологии Яндекс.Почты. Она работает практически так же, как Почта для доменов, но интегрирована с другими внутренними сервисами компании. Практически все новые функции сначала проходят обкатку на корпоративной почте, отлаживаются, уточняются функционально, и только после этого становятся доступны всем пользователям.

2011 год


Мы активно начали предлагать нашим пользователям использовать HTTPS для защиты передаваемых данных, а затем включили защищенную работу с почтой по умолчанию. Это решение, с одной стороны, сделало работу с Яндекс.Почтой более безопасной, а с другой — потребовало от нас работы по настройке параметров соединения. Классически почта работает на длинных HTTPS-подключениях с большим значением keepalive. Однако в смартфонах этот режим подключения часто ограничен или работает странно. При HTTPS-соединении возникают дополнительные накладные расходы на рукопожатие, а если браузер не хочет или не может держать открытым соединение, то каждый запрос будет вызывать дополнительные расходы. На узких каналах и слабых процессорах телефонов это время становится заметным. Сразу после включения HTTPS по умолчанию мы увидели, как выросли графики времени загрузки интерфейса почты, и потребовалось некоторое время на поиск причин и решение проблемы. Другой проблемой стало отображение HTTP-содержимого писем по HTTPS, например, изображений, добавленных через тег. Мы построили отдельный сервис, который кеширует изображения и способен отдавать их по HTTPS, после чего, заменили вставленные в письма изображения на ссылки нашего прокси. При проектировании подобных сервисов важно не допустить появления открытого редиректа — возможности открыть любой URL с доверенного хоста, а добавление уровней защиты не должно приводить к заметному снижению производительности. Мы справились и с этой задачей.
image
Тогда же начались первые эксперименты с нереляционными хранилищами данных. Первым сервисом, который был переведен на NoSQL (MongoDB), стала адресная книга. До этого момента у эксплуатации почты не было боевого опыта работы с внешними нереляционными технологиями хранения. Этот эксперимент удался — адресная книга и сегодня хранит книжки контактов в MongoDB.

Тем временем Яндекс готовился к запуску в Турции. Для сервиса это означало обязательную поддержку локализации, причем перевод интерфейса — это только малая часть работы. Фактически мы подготовили и запустили отдельный продукт — турецкую Яндекс.Почту — на той же кодовой базе. Они несколько различаются функционально, о чем теперь нужно помнить при разработке. Для ускорения доступа мы установили в Европе сервера, с которых отдаем статический контент, — так наша сеть стала еще разветвленнее.

Произошли изменения и в процессах разработки. Web Mail Interface, о котором говорилось выше, начал использовать Scrum и гибкие технологии разработки. Нам удалось реализовать цикл непрерывной выкладки новой функциональности, при котором каждая фича или исправление дефекта выкладывается отдельно, но при этом проходит полный производственный цикл: разработку, автоматическое тестирование, функциональное тестирование, нагрузочное тестирование, и, наконец, двухэтапная выкладка в бой — сначала на один сервер, а потом уже на весь кластер. Такой процесс позволяет очень быстро реагировать на появление новых продуктовых требований и устранять дефекты.

Наши дни


Запуск Яндекс.Диска значительно изменил наши протоколы эксплуатации оборудования. Диск, так же как и Почта, использует Mulca, чтобы хранить файлы пользователей, но при этом объемы загружаемой информации превосходят почтовые в несколько раз. Каждый месяц мы добавляем не менее пяти стоек серверов в Mulca, чтобы обеспечить надежное хранение ваших писем и файлов. Пропорционально выросли и потребности в пропускной способности опорной сети и сети внутри ДЦ. Объемы данных таковы, что в долгосрочной перспективе мы перешли от планирования установки стоек к планированию открытия новых дата-центров.

Чтобы оживить почтовый ящик, мы разработали и запустили технологию «Ева», которая из открытых источников собирает аватары пользователей и показывает их. Все аватары масштабируются, обрезаются и кешируются в специальном хранилище, в основе которого лежит другая наша разработка, — Elliptics — отказоустойчивое распределенное key-value хранилище, распространяемое под лицензией GPL.

Карточки организаций, которые можно увидеть в письмах, это еще один пример быстрого решения продуктовой задачи. Информация о компаниях обновляется не так часто, примерно один раз в две недели. Все остальное время — это просто статическая выдача, причем число этих организаций невелико — всего несколько десятков тысяч. Для решения задачи отображения карточек мы решили использовать кешированные статические html-файлы, которые доступны по хешу от имени домена организации. Поставленную задачу решили быстро и обеспечили высокую производительность и отказоустойчивость.

Технология «Маркер» позволила автоматически выделять полезную информацию из писем определенных типов. На этой технологии, например, работает извлечение информации из авиабилетов и выделение события из письма. За этим сервисом стоит большая работа эксплуатации, около сотни серверов и десятки миллионов запросов каждый день.

image

Тем временем в интернете назрели крупные перемены. Пространство адресов IPv4 подошло к концу, а 6 июня 2012 года считается Днем IPv6. К этому событию мы подготовили нашу внутреннюю архитектуру к работе в сетях IPv6. Сегодня IPv6 работает для домена mail.yandex.com и для отправки почты. Мы активно работаем над полной поддержкой IPv6 во всех компонентах и для всех наших доменов.

XScript, устраивавший нас долгое время, был окончательно исключен из работы почты. Теперь почта представляет собой статическое web-приложение, которое общается с бекендом посредством коротких вызовов API. Вызовы по-прежнему обрабатываются внутри WMI сервером Baida и транслируются через один из его модулей.

Почтовые сборщики научились собирать почту с использованием протокола IMAP. По IMAP передается значительно больше полезной информации, а значит, процесс сбора почты стал намного эффективнее.

За каждой из наших больших и маленьких, прошлых, существующих и будущих технологий стоят люди, настоящие профессионалы-инженеры: системные администраторы, разработчики, менеджеры. Мы всегда рады, когда к нам приходят те, кто любит задачи, которые еще никто не решал, кто готов быть на самом переднем краю технологий и не прочь вписать несколько страниц в историю развития Яндекс.Почты.
Автор: @vsadm
Яндекс
рейтинг 409,62

Комментарии (116)

  • +48
    Всегда радовали названия собственных разработок Яндекса
    • +1
      В случае с байдой и мулькой, названия еще имеют и расшифровку!
      BAIDA — Bridge Adapter Internet Daemon Architecture
      MULCA — Mail Units Localized Containers Architecture
      • +1
        В случае с кокаином тоже, но мы то знаем…
        • –2
          Следующая технология (картинка не хочет отображаться на Хабре)
          img.zelebober.com/svalka/habr/1.jpg
  • +8
    6 лет пользуюсь почтой от Яндекса. Доволен.
    До этого перепробовал много почтовиков. Всегда что-то не устраивало.
    Даже в хваленом gmail-e. Хотя резервным как раз ящик на gmail-е и использую )
    В общем — спасибо за вашу работу.
  • 0
    Почему в интерфейсе Daria в Ubuntu x64 GoogleChrome, автоматом не обновляется список писем? Чтобы проверить есть ли новое письмо, приходится нажимать Refresh. В трех колоночном интерфейсе, тоже не всегда срабатывает оперативно.
    • 0
      Скорее всего, ваша проблема не связана с конкретным браузером. Про недоставку некоторых нотификаций мы знаем и занимаемся решением проблемы.
  • +4
    Я уже и не помню сколько лет у меня Яндекс-почта, но картинки такие знакомые. Спасибо, за интересный экскурс в историю и, отдельное спасибо, за ваши названия проектов, вот как не сказать кому нибудь, что твои письма хранятся на Мульке, а ходят через Байду.
  • +1
    Сделайте возможность создание папки в Отправленные и фильтры на исходящую почту )
    • 0
      Здравствуйте!
      Расскажите, пожалуйста, для чего бы Вы хотели использовать сортировку отправляемых писем? Разве группировка писем по темам не решает эту проблему? Заходя в определённую папку, где находятся входящие письма, Вы сразу же видите и отправленные, сгруппированные по теме и некоторым другим признакам.
  • +2
    Всегда считал почту Яндекса самой крутой. Но хотелось бы еще лучше: например, чтобы почта для домена стала обладать всем функционалом простой почты (интеграция с Яндекс.Диском и прочее).
    • +2
      Следите за новостями.
  • +4
    Увидел почту 2003 такая ностальгия, мой любимый интерфейс.
    PS. А вообще вы молодцы, отличная работа.
    • 0
      У меня самый любимый интерфейс был как на картинке «Создание нового письма в 2006 году». Очень долго не мог смириться с тем, что его убрали.
  • 0
    С нового года как-то очень нестабильно работает транспорт lastmail.ya.ru — использую его в десктопном джаббер клиенте и транспорт очень часто оффлайн.
  • 0
    Присоединяюсь к Zelebober: отличная фича «почта на своём домене». Было бы здорово ещё иметь возможность использовать аккаунты на своём домене, как openid.
  • 0
    А когда можно будет использовать адреса postmaster@ и abuse@ в ПДД?
    • 0
      Адреса можно использовать прямо сейчас, создавайте их как рассылки и добавляйте в получатели любой нужный адрес.
      • 0
        Пробовал.
        Изнутри письма приходят (то есть когда sender из моего домена), снаружи — нет.
        • +7
          Ух ты, так быть не должно, исправим. Спасибо.
        • 0
          Сейчас с коллегами проверили, не получается воспроизвести. Предлагаю перейти в личку, нам нужно больше подробностей.
          • 0
            Пересоздал рассилку, сейчас все ок. Спасибо!
  • 0
    сегодя мы сохраняем по 120 Тб в сутки.
    Если не секрет, сколько спама из этих 120ТБ? Или речь идёт только о тех письмах, которые действительно нужно хранить?
    • +3
      Это только те письма, которые мы считаем хорошими.
      • 0
        А сколько спама приходит сверх этих 120?
        • +1
          Больше 90% входящих писем — спам, который мы отсекаем.
  • –1
    Скажите, пожалуйста, с чем связано введение горизонтальных разделителей в интерфейс Почты в прошлом году? По сравнению с предыдущей версией, на мой взгляд, эти полосы повышают визуальную загруженность (читай «замусоренность») интерфейса.

    image
    • +1
      Например, так меньше шансов сбиться при движении глазами по строчке. Когда текст с разрывами (как на Вашей картинке), можно перескочить случайно на другую строчку.
      • –2
        Мне наоборот всегда было легче воспринимать список писем без полос. Сейчас же глаз нагружается лишней графической информацией.
        • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    Круто! Каждый раз, когда читаю что-нибудь техническое от Яндекса, ищу какие еще общеупотребляемые библиотеки вы переписали под себя…

    1. nginx — под себя еще не допиливали?? Пока все устраивает?
    2. > «и поднять ферму OpenOffice, который конвертировал документы в HTML» — здесь тоже интересно, пока все устраивает?
    • +1
      Мы активно работаем с разработчиками opensource программ, в том числе и с команой nginx.
      Часть этих программ адаптирована для наших нужд, в основном, при помощи необычных конфигураций, но есть и наши собственные патчи.
  • 0
    Радует, что сервис постоянно модернизируется, по нескольку раз в сутки обязательно проводятся внеплановые технические работы.
    • 0
      Здравствуйте! В последнее время столь частых технических работ не должно быть. Можете назвать логин, на котором воспроизводится проблема? Когда в последний раз видели сообщение о технических работах?

      В целом же технические работы мы стараемся проводить в нерабочее для большинства пользователей время, и делать периоды «простоя» как можно короче.
  • 0
    Простое пожелание для ПДД да и в целом для веб-морды:

    Крайне не хватает (при чтении текста письма) в тулбаре перед «Написать», «Проверить» и т.п. кнопочек со стрелочками вверх и вниз для перемещения к следующему и предыдущему письму хронологично. История переписки справа гуд, но частенько бывает нужно быстро пролистать десяток-другой писем последовательно по времени, а не по автору, что в текущем интерфейсе страшно неудобно с большим кол-вом кликов.

    PS на @ mail.ru это сделано и очень удобно хотя у них «следующее письмо» и «предыдущее» по смыслу перепутаны в плане хронологии.
    • 0
      Здравствуйте! При чтении писем для перемещения к следующему или предыдущему письмам можно воспользоваться кнопками «пред» и «след», который находятся ровно над правой колонкой. Кроме того, ссылки на предыдущее и следующее письма есть под телом того письма, которое Вы читаете.
      • 0
        Простите, но я не слепой, указанных вами ссылок нет 100%.
        Для определенности скажу, что смотрю на ПДД с вашим «погодным» интерфейсом.
        • 0
          • 0
            По 1й ссылке повторяю еще раз — НЕТ такого в ПДД+погода
            По 2й ссылке рекомендую раз 10-20 пролистать письма вперед назад, чтоб осознать насколько удобно каждый раз курсор в футер тащить для навигации хронологической. Недаром именно в тулбар прошу кнопки навигации добавить и сделать их более заметными чем на 1м скрине ибо это важно.
            • +1
              Можете сделать снимок экрана, иллюстрирующий, как выглядит это место у Вас? На каком аккаунте и в каком браузере возникает проблема? Интерфейс для доменных аккаунтов в этом месте ничем и никак не отличается от интерфейса для обычных почтовых ящиков, мы проверили ещё раз.
              • 0
                В общий доступ разумеется скринов не будет, но уже и не актуально стало, сегодня появились данные ссылки как на скрине ниже. Однако:
                Вы и правда думаете, что это и в правду понятно и очевидно размещать их в истории переписки с конкретным человеком? В данном месте расположения ожидается лишь навигация по преписке с одним адресатом, а не по хронологии всех писем вообще.
                В общем фичреквест и домашнее задание — изучить опыт коллег аля @ mail.ru и сделать уж точно не хуже и в заметном удобном месте как просил и dzmitry_li а не в самом дальнем малозаметном углу экрана куда взгляд-то и не падает.
            • 0
              Хм, специально поставил погодную тему…
      • +1
        Я слепой! Год искал перелистывание писем — не видел этих незаметных сокращённых слов.
        Почему важная функция так невидима?
        И да — ПДД с погодой
  • +1
    Зато два года не в силах баг исправить…
    • +1
      Здравствуйте! Мы обязательно исправим описанную проблему. Признаться честно, до Вашего сообщения в июне мы совсем забыли про эту ошибку, потому что она очень специфическая и редкая, и, к сожалению, по той же причине она не исправлена до сих пор, но уже внесена в очередь.
  • 0
    А можете как-нибудь решить проблему с массовыми действиями?
    По ошибке недавно в одну цепочку прилетело 30к писем, через веб-интерфейс их не удалить — 5 минут ждет, затем пишет, что письма удалены, а на самом деле они остаются.
    • 0
      Здравствуйте! К сожалению, операции с такими крупными количествами писем действительно на данный момент могут вызывать проблемы. Если Вы посмотрите, в других почтовых службах вообще нет возможности выделить больше писем, чем находится на одной странице. Мы уже думаем, как решить эту проблему, но задача не самая простая, потому что при изменении статуса письма или его удалении производится очень много модификаций в базе данных, и при изменении статусов большого количества писем базы иногда могут не успеть ответить.

      До 5000 писем интерфейс обычно может всё же обработать. Могу предложить Вам следующий сценарий:
      1) зайти на страницу mail.yandex.ru/neo2/#setup/other и указать там, что на одну страницу нужно выводить 200 писем;
      2) в папке, где находятся письма, раз 10-15 нажать на кнопку «ещё письма» внизу страницы, чтобы на одной странице было 2000-3000 писем;
      3) воспользоваться кнопкой галочкой «выделить все» вверху списка и удалить выбранные письма;
      4) повторять пункты 2 и 3, пока не удалите всё ненужное.
      • +1
        В гугле можно выделять сколько угодно писем. Правда это работает вроде при поиске. Либо в папках типа спам. Хотя возможно и просто в папках.
        • –3
          Gmail даёт возможность выделить только все письма на одной странице. Даже на странице результатов поиска выделяются только письма на одной странице. При переходе на следующую страницу видно, что там письма не выделены.
          • +2
            Gmail выделяет все письма на странице, НО если выделение сделано из результатов поиска — действие (например, удаление) можно применить либо к текущей странице, либо ко всем результатам выборки.
            • –1
              Вот сейчас сходу не смог найти, как это сделать. Хотя в старом интерфейсе Gmail, помню, и правда была какая-то большая форма для таких операций. Мы тоже думаем, как лучше обрабатывать большие массивы писем. Ждите новостей на Хабре и в блоге Яндекс.Почты mail-blog.ya.ru
              • 0
                Выбрать любую «папку» или поиском найти что-нибудь, чего больше чем на одну страницу, далее нажать кнопку (поставить галку) «выбрать всё», над списком писем появляется строка с ссылкой:
                «All 20 conversations on this page are selected. Select all conversations that match this search» (при поиске)
                • –1
                  Если у Вас выбраны вот эти новые табы с социальным разделением писем (над списком писем), то такое сообщение не появляется. Ну и ещё я вспомнил, где я видел большую форму: можно через настройку фильтров тоже сделать выборку писем. В общем, эту фичу все прячут либо вообще не имеют, и не без причины.
              • 0
                Кстати, мне чтобы перейти на я.почту не хватает отмены отправки письма в течение полуминуты после отправки. Учитывая, что Вы стремитесь отправлять их как можно быстрее можно было бы сделать кроме кнопки отмена кнопку отправить прямо сейчас. Отмена отправки очень помогает. Иногда случайно отправляются письма, например.
          • 0
            www.dropbox.com/s/tlbbxxhg06i3c96/Скриншот%202014-01-28%2010.54.43.png

            Что я делаю не так?

            Если нажать выбрать все хххх и потом нажать скажем удалить или переместить куда действие применяется ко всем хххх письмам а не только к тем, что на странице.
            • –1
              Если у Вас выбраны вот эти новые табы с социальным разделением писем (над списком писем), то такое сообщение не появляется. Ну и ещё я вспомнил, где я видел большую форму: можно через настройку фильтров тоже сделать выборку писем. В общем, эту фичу все прячут либо вообще не имеют, и не без причины.
              • 0
                я их отключил. :-) оно конечно здорово, но я уж лучше сам как-нибудь. я просто не очень вижу проблему в том чтобы массовые операции позволять делать. их же не надо визуализировать. то что якобы выделены все, не означает, что эти все в памяти должны быть. очистить все это не то же самое что очистить все кроме пары писем. хотя признаюсь с большими массивыми данных и тем более аяксом я не работал и допускаю, что сложности могут быть. но сложностей не больше чем кнопка очистить все рядом с корзиной.
                • 0
                  Я выше написал, почему это не так просто. Да, о фоновых процессах тоже думаем. Но и их отображение надо реализовать так, чтобы пользователю было понятно, что происходит, но самое главное — нормально разработать и протестировать все варианты поведения в разных ситуациях. Например, если запущена очистка для всей папки, а в неё продолжают поступать письма, удалять ли те, что пришли позже запуска очистки?
                  • 0
                    я просто думал, что это вполне реализовано в рамках функции очистка корзины. но согласен, что подводные камни могут быть.
                    • 0
                      А корзина тоже не очищается, если в ней 10к писем
                      • 0
                        странно. у гугла и корзина и папки очищаются (правда с всплывающим окном столько-то из стольки-то).
                        • 0
                          Я про яндекс — если там в папке большое количество писем, то нажатием кнопки «Очистить» она не очистится.
                          • 0
                            Интересно. Не знал. я по некоторым техническим причинам пока поэтому и не пользуюсь яндекс почтой. Но не теряю надежду.
  • 0
    Интересно было бы узнать, почему перестали срабатывать правила обработки писем?
    К примеру: добавил правило «если тема совпадает с Ведомости: выбор редактора — удалить письмо», после этого получал это письмо не менее 10 раз.

    Буду признателен, если поможете решить проблему.
    • 0
      Здравствуйте! Вероятно, письмо попадает под какое-то другое, более приоритетное правило, которое его перекладывает в ту папку, куда оно падает. В Яндекс.Почте действует правило, что если письмо переложено из папки «Входящие» в какую-либо другую, то больше письмо автоматически в третью папку не будет перемещено.
      • 0
        Перепроверил и смог разобраться в проблеме. Оказывается правила обработки писем отлично справляются с основным потоком писем, но не распространяются на сбор почты с других почтовых ящиков. Это выглядит немного странным, так и должно быть?
  • 0
    Всё у Почты хорошо. Кроме Android-приложения.

    Интерфейс похож на портированное iOS-приложение.
    Нет привычных фич вроде «потянуть вниз для обновления».
    Нет кнопок в оповещениях.

    Одно время пользовался Aqua Mail — оно намного более продвинутое в плане удобства и функционала, но IMAP накладывает некоторые ограничения. Поэтому пришлось вернуться на клиент от Яндекса.
    • 0
      Добавлю немного:
      — Нет свайпа между табами (и настройки в стиле 2.x)
      — Приложение переодически падает в случае нетрадиционных действий (например при переодическом переходе оффланй-онлайн-оффлайн, не завершая процесс после перехода в оффлайн)
      — Действия при наличии нескольких папок и писем с одной темой в разных папках (когда правило перекладывания не сработало по какой-то причине) бывают нелогичными (Сейчас сходу вспомнить пример не могу, но помню что долго пытался разобраться с чем-то в подобном случае, потом плюнул и сделал через веб-интерфейс с ПК очень легко)
    • 0
      «потянуть вниз для обновления» вроде первыми именно iOS сделали? ;)
      • 0
        Да какая разница? :)
        Удобно.
        Привычно.
        Есть в Gmail и в VK.
    • 0
      Новое мобильное приложение обязательно будет. Следите за новостями в блоге Яндекс.Почты mail-blog.ya.ru
      • 0
        Это радует, спасибо!

        Может еще отпадет необходимость в SRV записях для ПДД? Как-то поднял на корпоративном домене XMPP, но счастье длилось недолго — получил люлей от шефа, у которого сломалась почта не телефоне.
        • 0
          Сейчас SRV записи можно не настраивать. Правда, если SRV смотрят не на серверы Яндекса, то мобильное приложение работать не будет. То есть либо серверы Яндекса, либо никуда вообще.
          Возможно, в будущем мы это изменим, но пока обещать не могу.
  • 0
    Интересно кстати, возможна ли смена основного логина пользователя в ПДД? Да, можно добавить алиасы, но интересует именно смена логина
    Под возможностью я понимаю тот факт, что сейчас сменить основной логин невозможно (нужно создавать новый ящик), и хотелось бы понять, это невозможно из-за реализации (т.е. скажем имя идет как уникальный ID и его просто нереально сменить в огромном количестве мест), или же технически смена возможна?

    Была бы хороша возможность привязки ящика ПДД к основному ящику почты на яндексе, без необходимости устанавливать пересылку, или возможность перехода в дочерний ящик с основного (как например реализовано расшаривание доступа к управлению и просмотру статистики в Яндекс.Метрике — сайты отображаются в общем списке + есть переключатель выбора конкретного аккаунта)

    Ну и вопрос, который много раз задавался: Двухэтапная авторизация-то скоро будет?

    — Про смену основного логина пользователя поясню подробнее, зачем мне это нужно, и интересную схему в целом:
    В отсутствии двухэтапой авторизации для важных сервисов у меня выстроена «защитная цепочка». Т.е. основная почта у меня @ yandex. Привязан домен, на нем создан ящик, скажем с логином fake@domain. Для этого ящика созданы алиасы korden@ domain, admin@ domain и т.д. Сервисы, которые любят пытаться взломать (например Steam) привязаны на алиас, письма редиректятся на основной адрес @ yandex. Таким образом, если узнать алиас, это ничего не даст (логин-то другой), в крайнем случае если узнают и начнут пытаться подобрать пароль к действительному логину на домене, всегда можно изменить пароль и восстановить контроль. Хотелось бы полностью иметь возможность и логин изменить :)

    В масштабном варианте это может быть актуально, если например кто-то изначально себе создал ящик с логином admin/support/etc и задал алиас в качестве имени/псевдонима, но потом появилась необходимость передать такой логин другому человеку, либо сделать этот адрес скажем рассылкой всем администраторам, а в ящике уже скопилась личная почта, и удаление будет связано со множеством проблем в переносе сохраненной информации

    PS: У вас для upics.yandex.net отдается просроченный сертификат (который идет через промежуточный Yandex External CA)
    • +2
      Здравствуйте!
      Мы традиционно не раскрываем своих планов, и каких-либо сроков по реализации двухэтапной авторизации назвать я не могу, хотя не скрою, что мы думаем об этом. На данный момент самый надёжный способ защитить свой почтовый ящик — привязать номер телефона на странице phone-passport.yandex.ru. Этот телефон невозможно отвязать, не имея к нему доступа или не прождав 30 дней, за который владелец уж сможет отреагировать, и вернуть доступ к утраченному аккаунту.

      Поменять логин почтовому ящику действительно сложно, гораздо сложнее, нежели сделать синоним. Но Вы же можете сделать следующее: создать новый почтовый ящик, настроить сборщик со старого? а когда все письма переедут, удалить старый и сделать его алиасом к новому.

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

      PS: Открыл прямо сейчас upics.yandex.net – сертификат подписан центром Certum Level IV CA, всё как надо :)
      • 0
        Этот телефон невозможно отвязать, не имея к нему доступа или не прождав 30 дней, за который владелец уж сможет отреагировать, и вернуть доступ к утраченному аккаунту.

        Вот за эту информацю спасибо. Всегда напрягало, что телефон фактически во могих сервисах можно отвязать, зная лишь пароль или имея какую-то еще информацию, но не имея доступа к телефону. Кстати, в случае отвязки (без подтверждения) придет ли SMS о том, что отвязан телефон? И если дополнительный логин отключен, безопасность при этом не меняется?

        Про смену логина — сборщик позволяет забрать все старые письма, со всех папок, сохраняя структуру? Просто я им толком и не пользовался, когда как-то раньше пробовал, вроде получалось что письма приходят с большей задержкой, чем при установке правила пересылки, (что не всегда удобно для писем со ссылками на подтверждение аккаунтов и т.д.). Или сейчас это не так, в случае настройки сборки в ящик на яндексе с ящиков ПДД?

        PS: Да, сертификат уже Certum, вчера днем еще был YandexExternal и при входе в тот же ПДД браузер ругался
        • +2
          Когда кто-то пытается отвязать номер телефона, на него отправляется SMS с кодом, который нужно ввести для подтверждения удаления вместе с паролем от аккаунта. Кроме того, на удаляемый номер отправляется предупреждение с вот такой ссылкой feedback2.yandex.ru/alert, где всё подробно рассказывается. Это же предупреждение и ссылка отправляется на все возможные дополнительные адреса почты, если они были указаны в настройках аккаунта.
          Если в течение 30 дней код не был введён, и никто другой не пришёл и не отменил отвязку телефонного номера, то он удаляется. При этом ещё одно SMS уже не отправляется.

          Сборщики в Яндекс.Почте умеют собирать письма по IMAP с сохранением структуры того ящика, где изначально лежали письма. Об этом мы тоже писали ;)
          • 0
            Спасибо за описание логики отвязки телефона.

            Про сборщик — все-таки вопрос остается открытым, приходят ли сейчас письма при сборе с ящиков яндекса мгновенно, или же для цепочки яндекс-яндекс (либо яндекс-пдд) все равно действует стандартная обработка по cron'у и задержка в несколько минут? Как-то кажется непрактичным такое для сборки внутри одного сервиса…

            PS: опять браузер ругнулся один раз на недействительный сертификат upics. Происходило уже сегодня в случайное время по одному разу и в Opera 12 и в SRWare Iron (v31). Не могу повторить вручную, уже раз десять попадал на страницу счастья, а вот воспроизвести специально ругню на сертификат не получается. Может не на всех серверах правильный сертификат или что-то подобное?
            • +1
              Сбор действительно производится раз в 10-15 минут.
              Информацию про сертификаты мы проверим со службой безопасности. Спасибо за сигнал!
      • 0
        по двухэтапной авторизации можно же хотя бы сделать такую авторизацию с помощью приложений google authenticator или authy
        • 0
          «Яндекс использует приложение Google» :)

          Хотя ИМХо если и будут делать свое приложение, то хоть бы использовали тот же метод (как коды гугловского можно и в другими приложениями генерировать), чтобы можно было все держать в одном месте тем, кто знает, что метод генерации одинаков.
          • 0
            authy не гугловое :-)
    • 0
      самый надёжный способ защитить свой почтовый ящик

      Ну и, конечно, создание достаточно сложных паролей, которые не повторяются на других ресурсах. Обо всём этом мы регулярно пишем рекомендации:
      mail-blog.ya.ru/1063
      blog.yandex.ru/post/72690/
  • 0
    после чего, заменили вставленные в письма изображения на ссылки нашего прокси.


    В rss подписках, которые как я понимаю от почты в этом плане не отличаются эти ссылки часто битые, или может время хранения ограничено…

    Хотелось бы иметь возможность с одной админской авторизации отправлять маилы с разных доменов. Или может я не нашел\не понимаю?

    Пользуюсь давно, перейти полностью к вам мешало отсутствие почты для домена. И отдельное спасибо автору темы «Космос», за интересные факты и оформление. А еще за ДНС спасибо, удобно.
    • 0
      Добрый день!
      В rss подписках […] ссылки часто битые

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

      Можно настроить сбор писем, после чего сообщения можно не только получать в один ящик, но и использовать каждый дополнительный адрес при написании писем.
  • 0
    Какие впечатления от использования MongoDB? Это надёжное хранилище? Мне встречались упоминания о саморазрушении базы в процессе работы.
    • +1
      Как и от любого инструмента впечатления, скорее, нейтральные. У MongoDB есть ряд проблем, про них нужно помнить и вовремя обходить. Как хранилище оно вполне надежно и производительно до определенных объемов данных, потом нужно шардировать и разбивать на несколько баз.
      • 0
        А расскажите поподробней чем был обусловлен выбор MongoDB? Я не знаю как устроена адресная книга в Яндекс.Почте, но по сути–то она ложится в реляционную модель, не?
  • –3
    Эволюция конечно колосальная, как и объемы работы, проделанные за это время. Только наблюдается некоторая отсталость от современных тенденций в мире ИТ. Если Вы начали использовать postfix в 2007 по причине его большей скорости работы, то я еще в 2004 заменил sendmail на postfix по этой же причине и знал, что быстрее него на тот момент ничего не было. Ну про HTTPS с 2011 года я молчу… году в 2007 нужно было это внедрять.
    • 0
      Приходите нами руководить, пожалуйста.
      • 0
        Начинайте мочить розги.
      • –2
        Нет, спасибо.
  • 0
    У меня есть несколько вопросов, но не столько по почте, сколько по диску. Меня всегда интересовало, как удается хранить такие объемы пользовательских данных? Какой путь проделывает файл, после того, как пользователь загрузил его на сервер? Как осуществляется резервное копирование? В скольки местах есть дупликат пользовательского файла? Были ли случаи потери пользовательских данных? Какие жесткие диски используются для длительного хранения файлов?
    • +1
      Письма Яндекс.Почты и файлы Диска хранятся в одном хранилище. Каждый файл сохранен минимум в двух копиях в двух разных дата-центрах. Копирование осуществляется нашими технологиями. Про процесс загрузки файла на Яндекс.Диск мы уже писали. Что касается нашего хранилища, про него можно рассказывать очень долго. В двух словах, мы используем разные диски, в зависимости от того, как часто требуются сохраненные на них данные.
  • 0
    Спам как приходил так и приходит. Видать в мире это неизбежное зло
    • +1
      Здравствуйте! Если Вы регулярно отмечаете все нежелательные письма как спам, Спамооборона запоминает Ваш выбор и корректирует персональные фильтры для Вашего ящика. Одна оговорка: при пока что не учитываются действия по IMAP, потому что часто в почтовых программах работают свои автоматические алгоритмы спамозащиты, которые могут портить качество фильтров Спамообороны.
      • –1
        5 лет уже нажимаю и ничего. Лучше не врите что у вас почта без спама.
        • +1
          А нежелательные письма приходят именно в папку «Входящие»? Можете сказать свой логин на Яндексе? Если не хотите публично, напишите личным сообщением.
          • 0
            Да, в инбокс. Сейчас напишу
        • 0
          Также, если можно, покажите примеры писем, на которые Вы неоднократно жаловались как на спам, а они всё равно приходят во «Входящие». Для этого нужно скопировать свойства писем.
          • 0
            Письма каждый раз разные, на то он и спам
  • +4
    Огромное вам спасибо за вашу работу. Если по поиску и картам вам ещё только предстоит догнать Google, то с почтой — давно уже обогнали.
    • +3
      В некотором Яндекс обогнал гугловский поиск. Из любимого: можно пополнить счет телефона из поиска (линк); расчет площади, периметра, объема (и прочего) прямо в поиске (линк); коды и названия цветов (линк); есть ссылки «искать в других поисковых системах».
  • 0
    Используем postfix для рассылки новостей. В этот момент он создает просто дикую нагрузку на диск, видимо из-за fsync, при этом удобной конфигурации для настройки fsync как в mysql нет.
    Остаётся только пересобрать postfix, исключил из исходников fsync, или есть более простые вещи для его ускорения?
    Ну и держать пул на ram диске тоже как-то небезопасно. Если только на таком ram-диске, который бы сам умел сбрасывать изменения периодически.
    • +2
      Поставьте SSD-диск.
      • 0
        Вопрос был не о железных изменениях.
        К тому же у Яндекса я не увидел упоминания SSD.
  • +2
    Очень не хватает возможности связать несколько учётных записей для быстрого между ними переключения.
    Личная учётная запись, учётная запись в которой настроена ПДД, учётная запись внутри ПДД…
    В GMail оно реализовано довольно удобно:


    А в идеале ещё хотелось бы иметь возможность управлять этими связями внутри ПДД.

    Если нечто подобное уже реализовано, не пинайте… честно, искал — не нашёл.
    • +2
      Добрый день! Пока что можно настроить сбор писем в один ящик, после чего Вы не только будете получать все письма для разных адресов в один ящик, но и использовать любой из подключённых дополнительных адресов в поле «От кого» при написании писем.
      О возможности мультиавторизации обязательно подумаем в будущем.
      • +1
        Спасибо большое.
  • 0
    Здравствуйте!
    У меня очень давно проблема с вложенями в Яндекс.Почте.

    В списке писем виден аттач и размер указан один, а если провалиться внутрь письма, то вместо вложения файл winmail.dat и размер отличается от того, что указан в списке. Соответственно, данные из аттача очень хорошо мутируют по дороге к моей почте:)

    С учетом этого:
    Nginx позволил обрабатывать разные URL-ы по-разному, и мы разнесли собственно логику, раздачу вложений, а также вынесли старые интерфейсы на отдельные кластера.
    примерно понятно в чем может быть проблема

    Нужно доработать.
    • +3
      Добрый день! Формат winmail.dat — это нестандартный формат отправки данных, «оболочка», в которой может содержаться файл любого формата. Эта оболочка создается при отправке из почтового клиента Outlook (но только если в программе активирована определённая настройка). К сожалению, Яндекс.Почта действительно пока что не умеет распаковывать такой формат, чтобы извлекать файлы, но мы уже работаем над решением этой проблемы.
      Пока что можно предложить отправителю изменить настройки своей почтовой программы. На сайте Microsoft есть инструкции, как это сделать:
      support.microsoft.com/kb/290809
      office.microsoft.com/ru-ru/outlook-help/recipients-receive-a-winmail-dat-attachment-HA010153018.aspx
      • +1
        Спасибо!
  • 0
    А в чем заключалась локализация для Турции кроме перевода?
    • 0
      Добрый день! Рассказ про Турцию потянет на отдельную статью, над которой мы подумаем в будущем.
  • 0
    А почему был выбран именно postfix, а не другой (exim) почтовый сервер? Может старожилы яндекс почты помнят?

    P.S.: Сам использовал и postfix и exim и другие почтовые сервера. Ничего против postfix-а не имею, но всегда видел что exim тащат в большие почтовые домены, куда postfix не ставят.
  • 0
    Спасибо за ПДД!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разное