КЕЙСЫ
11 июня 2026 г. 7 мин 5

Почта внутри трекера: как мы встроили полноценный email-клиент в свою систему управления проектами

Почта внутри трекера: как мы встроили полноценный email-клиент в свою систему управления проектами

У агентства переписка с клиентами живёт в десятке мест: общий ящик info@ на одном сервисе, личные ящики менеджеров - на другом, а задачи по этим же клиентам - в трекере. В итоге письмо обсуждается в одном окне, работа ведётся в другом, и связь между ними держится только в голове у сотрудника. Мы решили закрыть этот разрыв и встроили полноценный почтовый клиент прямо в наш трекер проектов. В этом кейсе разбираем, как устроена почта на своём домене без платных сервисов и без своего почтового сервера, и какие инженерные решения за этим стоят.

Задача: почта и работа в одном окне

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

  • Свои адреса на домене webcetera.ru для команды - без аренды корпоративной почты у внешних сервисов.

  • Вся переписка - внутри трекера: читать, отвечать, пересылать письма, не выходя из системы.

  • Личные и общие ящики: общий info@ видят все, личный ящик сотрудника - только он и администратор.

  • Без своего почтового сервера: не хотелось брать на себя эксплуатацию MTA, антиспама, прогрева IP и борьбы за доставляемость.

Архитектура: приём - сами, отправка - через облако

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

  • Приём писем берёт на себя отдельный модуль внутри нашего бэкенда: лёгкий SMTP-сервер на Node.js слушает 25-й порт, принимает входящие, проверяет подписи SPF/DKIM/DMARC, парсит письмо, складывает вложения в объектное хранилище, а текст и метаданные - в базу.

  • Отправку делает Yandex Cloud Postbox - облачный сервис рассылки, совместимый с протоколом Amazon SES. Письма уходят с инфраструктуры с хорошей репутацией и автоматической DKIM-подписью. Первые 2000 писем в месяц бесплатны - для деловой переписки этого с запасом.

Почему так. Главная боль собственного почтового сервера - не поднять его, а эксплуатировать: репутация IP, прогрев домена, антиспам, попадание в чёрные списки после одной жалобы. Отдавая исходящую почту облаку с готовой репутацией, мы убираем весь этот пласт рисков. А приём - операция простая и предсказуемая, её спокойно держит свой модуль, тесно интегрированный с трекером.

Раздел «Почта» в трекере: папки, список переписок, аватары контактов

Письма собираются в цепочки

Почта в трекере работает тредами, как в современных почтовых клиентах. Несколько связанных писем - обращение клиента и ответы на него - автоматически собираются в одну цепочку. Связка идёт по стандартным заголовкам ответов (In-Reply-To и References), поэтому переписка не рассыпается на отдельные сообщения, а читается единой лентой.

Внутри открытой переписки видно всю историю: входящие и исходящие письма по порядку, отправителя и получателей, дату, вложения. Снизу - поле быстрого ответа. У каждого письма есть действия «Переслать» и «Удалить».

Открытая переписка с клиентом: цепочка писем, ответ, действия

HTML-письма - безопасно

Клиенты присылают не только текст, но и свёрстанные письма: коммерческие предложения, баннеры, таблицы со сметами. Такие письма мы рендерим в изолированном окне (sandbox-iframe) без права исполнять скрипты. Это значит, что чужой HTML отображается корректно - с картинками, таблицами и кнопками - но не сможет добраться ни до куки, ни до интерфейса трекера. Безопасность без потери внешнего вида письма.

HTML-письмо с версткой рендерится в изолированном окне

Полноценный почтовый интерфейс

Раздел «Почта» получился привычным и закрывает повседневные сценарии работы:

  • Папки: Входящие, Отправленные, Черновики, Корзина. Переключение мгновенно фильтрует список.

  • Композер открывается прямо в рабочей зоне (не модальным окном): выбор ящика-отправителя, поля «Кому» и «Копия», тема, текст, прикрепление файлов.

  • Поле «Копия» (CC) для отправки нескольких адресатам, как в обычной почте.

  • Удаление с подтверждением: письмо или вся цепочка уезжают в Корзину через модальное окно, из Корзины можно восстановить или удалить навсегда.

Создание письма прямо в рабочей зоне: ящик, кому, копия, вложения

Черновики, которые не теряются

Отдельно проработали черновики - то, чего часто не хватает даже в зрелых системах. Пока пользователь печатает письмо, оно тихо сохраняется в «Черновики» автоматически. Если закрыть вкладку или перезагрузить страницу, недописанное письмо никуда не денется: открываешь черновик - и продолжаешь с того же места, со всеми полями и вложениями. Состояние раздела (открытая папка, выбранный ящик, открытое письмо или черновик) хранится в адресе страницы, поэтому переживает перезагрузку.

Редактирование сохранённого черновика

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

Администратор заводит ящики в отдельном разделе и привязывает их к сотрудникам. Тип ящика определяет видимость:

  • Общий ящик (например, info@) видят все сотрудники.

  • Личный ящик привязан к конкретному пользователю - его видит только владелец и администратор.

Приём настроен по принципу catch-all: письмо на любой адрес домена не теряется. Если адреса-ящика ещё нет, он заводится автоматически - потом администратор привяжет его к нужному сотруднику, и вся накопившаяся переписка окажется на месте. Это особенно важно при переезде со старой почты: ни одно письмо не пропадает в момент переключения.

Раздел «Почтовые ящики»: адреса, тип, привязка к сотрудникам, статус

Гибкая навигация и доставляемость

  • Автодополнение получателей: в поле «Кому» подсказываются адреса из истории переписки - с кем уже общались.

  • Авто-обновление списка: новые письма появляются сами, без ручного обновления страницы.

  • Настройка меню под себя: каждый сотрудник прячет лишние пункты боковой панели - у разных ролей разный набор разделов.

  • DKIM и DMARC настроены на домене, поэтому исходящие письма проходят проверки и не улетают в спам.

Персональная настройка видимости пунктов меню

Стек и инженерные решения

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

  • Бэкенд: NestJS, PostgreSQL, TypeORM. Приём - отдельный процесс с SMTP-сервером и парсером писем; вложения в объектном S3-хранилище.

  • Отправка: Yandex Cloud Postbox по SES-совместимому API, с собственными Message-ID для склейки тредов.

  • Фронтенд: Nuxt 3 с серверным рендерингом (SSR) - раздел почты и открытое письмо приходят уже готовыми с сервера, без «моргания» и догрузки после открытия страницы.

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

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

Результат

Отдельно стоит сказать про сроки. Вся разработка - от идеи до рабочего продукта на тестовом контуре - заняла два дня. Это показатель того, насколько быстро сегодня собираются такие вещи, если есть готовая архитектура, своя инфраструктура и опыт: не месяцы, а считанные дни от задумки до работающего почтового клиента внутри системы.

  • Почта на своём домене для команды - без аренды корпоративной почты и без своего почтового сервера.

  • Вся переписка с клиентами - внутри трекера, рядом с задачами и проектами.

  • Ноль платы за пользователей: приём - свой модуль, отправка - в пределах бесплатного лимита облака.

  • Контроль над данными: письма и вложения хранятся в нашей инфраструктуре.

Это типичный для нас подход: вместо набора разрозненных сервисов - единая система, где всё связано. Так же мы делаем веб-системы и автоматизацию под задачи бизнеса - от CRM и личных кабинетов до интеграций, которые экономят команде часы рутины.

Частые вопросы

Нужен ли свой почтовый сервер, чтобы сделать так же?

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

Письма не будут попадать в спам?

Исходящие подписываются DKIM и проходят DMARC, а отправка идёт с инфраструктуры облачного сервиса с хорошей репутацией IP. Это и есть рецепт нормальной доставляемости.

Можно ли подключить такой ящик к обычному почтовому клиенту на компьютере?

Отправку - да, через SMTP облачного сервиса. Чтение всей переписки удобнее держать в трекере, где письма связаны с задачами и клиентами. При необходимости можно добавить и полноценный доступ по IMAP - это вопрос отдельного слоя.

Сколько стоит такая разработка?

Зависит от объёма: базовый приём-отправка с тредами - это одна история, полный почтовый клиент с папками, черновиками, вложениями и управлением ящиками - другая. Оценку даём после короткой аналитики ваших сценариев.


Нужна похожая система - почта, CRM, личный кабинет или интеграция, встроенные в единый продукт? Обсудим задачу и предложим решение: разработка веб-систем и автоматизация.