Clacks
АктивенПочтовый мост для устаревших учётных записей
"Дело не в сообщении. Дело в том, чтобы его отправить."
— GNU Terry Pratchett
Приложение на базе Symfony, которое связывает почтовые аккаунты POP3 и IMAP с Gmail. Опрашивает устаревшие почтовые серверы и безопасно пересылает сообщения прямо в ваш почтовый ящик Gmail — без хранения, без задержек, только бесшовная доставка с полной совместимостью фильтров и правил.
Ключевые функции
- Поддержка POP3 & IMAP
- Опрос на основе чистых PHP-сокетов без зависимости от ext-imap
- Интеграция с Gmail API
- Использует Gmail messages.import для нативной совместимости с фильтрами
- Безопасная пересылка
- Содержимое писем передаётся прямо в Gmail и никогда не хранится
- Управление несколькими аккаунтами
- Подключите несколько устаревших аккаунтов к одному или нескольким адресам Gmail
- Панель управления AdminLTE
- Современный веб-интерфейс для управления аккаунтами и мониторинга
Технологический стек
Кейс
- Задача
- Доставлять почту из старых ящиков POP3 и IMAP в Gmail так, чтобы к ней применялись собственные фильтры, ярлыки и спам-фильтр Gmail — как если бы она пришла туда напрямую.
- Моя роль
- Я спроектировал, разработал и сопровождаю сервис: почтовые клиенты, интеграцию с Gmail, шифрование учётных данных, планировщик и платные тарифы.
- Ограничения
- Каждое нужное разрешение Gmail Google относит к ограниченным, а это означает проверку безопасности и обязанность обосновать каждое запрошенное разрешение. К тому же сервис, который касается чужой почты, должен хранить её как можно меньше.
- Решения
- Импортировать, а не пересылать: письма попадают в ящик через messages.import в Gmail, поэтому фильтры и спам-фильтр работают как обычно. Запрашивать пять узких разрешений и сознательно не запрашивать gmail.readonly — приложение никогда не читает уже существующие письма Gmail. Не хранить содержимое писем: почта забирается и импортируется за один проход, а сохраняются только метаданные — отправитель, тема, дата и идентификаторы, предотвращающие повторный импорт, — которые удаляются по графику хранения. Написать клиенты POP3 и IMAP поверх обычных сокетов, а не зависеть от IMAP-расширения PHP. Шифровать секреты, которые хранить всё же приходится, — пароли от почтовых ящиков и токены обновления Gmail — ключом шифрования ключей.
- Компромисс
- Импорт требует ограниченных разрешений, а они влекут проверку Google. Пересылка позволила бы обойтись без того и другого — и сломала бы те самые фильтры и ярлыки, ради которых всё и делалось.
- Результат
- Работающий сервис с бесплатным и платными тарифами, который связывает ящики POP3 и IMAP с одним или несколькими ящиками Gmail.
- Подтверждения
- Каждое ограниченное разрешение задокументировано вместе с конкретными вызовами API, которые его используют, а код проверен на соответствие критериям Google CASA Tier 2 до официальной оценки.