Мы удаляем поддержку IMAP в Discourse. Подробнее читайте в этом посте: IMAP support for group inboxes - #39 by martin . ![]()
Мы рады представить альфа-версию поддержки IMAP для групповых почтовых ящиков. Эта функция позволяет вводить учётные данные и настройки IMAP для каждой группы отдельно, чтобы синхронизировать групповые почтовые ящики с электронной почтой. ![]()
![]()
![]()
Это функция на стадии альфа-тестирования, поэтому она ещё не полностью завершена и отполирована. Вероятно, в ней есть ошибки; мы в настоящее время не поддерживаем её и не используем в рабочей среде. Используйте на свой страх и риск!
![]()
Преимущества
- Ваша группа сможет сразу начать использовать почтовые ящики Discourse, так как вся ваша существующая почта будет синхронизирована!

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

- Вам больше не нужно настраивать сложные правила пересылки с вашего почтового провайдера во входящие ящики Discourse.

- Метки электронной почты будут синхронизироваться с тегами Discourse, что поможет поддерживать порядок

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

Функциональность
- Весь входящий и исходящий трафик будет синхронизироваться между IMAP-сервером и Discourse. На основе проанализированных писем будут создаваться соответствующие темы и ответы на посты. Ответы можно создавать как из Discourse, так и с IMAP-сервера, и всё будет синхронизировано!
- На письма можно отвечать как из группового почтового ящика Discourse, так и с почтового аккаунта.
- Теги, применённые к теме в Discourse, будут созданы как метки и применены к письму на IMAP-сервере (это зависит от провайдера).
- Письма, архивированные на IMAP-сервере, будут архивироваться в групповом почтовом ящике.
- Темы групповых личных сообщений, архивированные в Discourse, будут архивироваться на IMAP-сервере.
- Письма, удалённые на IMAP-сервере, приведут к удалению темы в групповом почтовом ящике.
- Темы групповых личных сообщений, удалённые в Discourse, будут удалены на IMAP-сервере.
- Письма, отправленные группами с включённой этой функцией, будут иметь адрес ответа, установленный в соответствии с именем пользователя электронной почты, указанным в настройках IMAP.
Начало работы
Прежде всего, вам необходимо настроить некоторые параметры сайта перед тем, как вы сможете настроить эту функцию для группы.
enable imapиenable smtpдолжны быть включены. IMAP используется для синхронизации с вашим почтовым сервером, а SMTP — для отправки писем с вашего почтового сервера.tagging enabledиallow staff to tag pms— оба параметра должны быть включены, так как синхронизация меток применяется к личным сообщениям.enable imap write— должно быть включено, если вы хотите, чтобы изменения, внесённые в Discourse, отражались на вашем почтовом сервере (например, теги, архивирование тем и удаление тем).enable imap idle— позволяет получать обновления в реальном времени с вашего почтового сервера, ЕСЛИ ваш сервер поддерживает IDLE. Это значительно ускоряет отражение изменений в вашем почтовом провайдере в Discourse. Рекомендуется включить эту опцию (например, Gmail её поддерживает). Если вы хотите узнать все подробности, вы можете прочитать об этом в RFC для IDLE.imap polling period mins— ЕслиIDLEне поддерживается, это количество минут, которое мы ждём перед проверкой IMAP-сервера на наличие изменений. Это также время ожидания между отправкой изменений на IMAP-сервер из Discourse, если включеноenable imap write. Минимальное значение — 1 минута.
Эти настройки можно оставить по умолчанию и изменить, если вы столкнётесь с проблемами синхронизации:
imap polling old emails— Максимальное количество старых (обработанных) писем для обновления при каждой проверке IMAP-ящика (0 — все).imap polling new emails— Максимальное количество новых (необработанных) писем для обновления при каждой проверке IMAP-ящика.imap batch import email— Минимальное количество новых писем, которое запускает режим импорта (отключает оповещения о постах).
Если вы хотите, чтобы метки/теги синхронизировались с IMAP-сервером, необходимо включить параметры сайта tagging enabled и allow staff to tag pms.
Далее перейдите в группу, которую вы хотите синхронизировать с вашим IMAP-сервером, и заполните настройки.
Эти настройки зависят от провайдера; подробнее см. ниже. После ввода настроек и учётных данных нажмите «Сохранить изменения», и мы проверим учётные данные на серверах IMAP-провайдера. Если проверка успешна, список почтовых ящиков будет заполнен, и вам нужно выбрать тот, который вы хотите синхронизировать (рекомендации по этому вопросу также зависят от провайдера):
Если проверка учётных данных не удалась, на странице будет показано сообщение об ошибке. Важно понимать: SMTP-сервер, который вы указали, будет использоваться для отправки писем от имени аккаунта, указанного в полях «имя пользователя» и «пароль», а не основной SMTP-сервер Discourse, настроенный для массовой рассылки.
Наконец, в вашем файле app.yml необходимо добавить DISCOURSE_ENABLE_EMAIL_SYNC_DEMON: true в секцию env и выполнить команду ./launcher rebuild. Это запустит фоновый рабочий процесс, который начнёт синхронизацию писем! ![]()
Информация, специфичная для провайдера
Gmail
Вы должны создать пароль приложения, иначе вам придётся включить «Доступ для менее безопасных приложений», что Google в любом случае планирует отключить в ближайшее время. Используйте этот пароль вместо пароля вашей учётной записи Gmail в настройках IMAP. Подробнее см. на Sign in with app passwords - Gmail Help . 
- Убедитесь, что вы используете следующие настройки для SMTP и IMAP:
- Порт IMAP: 987
- Порт SMTP: 587
- Сервер IMAP: imap.gmail.com
- Сервер SMTP: smtp.gmail.com
- Используйте SSL как для SMTP, так и для IMAP
- Настоятельно рекомендуется (скоро это станет функцией интерфейса) выбирать только почтовый ящик «[Gmail]/Все письма» для синхронизации.
- Мы не удаляем письма в Gmail сразу, а только перемещаем их в корзину, когда тема удаляется в Discourse. Функция удаления «через 30 дней» в Gmail возьмёт на себя дальнейшую обработку.
- Теги, применённые к темам в Discourse, создадут метки в Gmail и применят их к потокам писем. Метки в Gmail также являются IMAP-почтовыми ящиками!
Ограничения
Это функция на стадии альфа-тестирования, поэтому она ещё не полностью завершена и отполирована. В настоящее время действуют следующие ограничения:
- В настоящее время поддерживается только Gmail как IMAP-провайдер. У нас есть некоторая общая функциональность IMAP, но нет гарантии, что она будет работать. Следующей нашей большой целью является поддержка Outlook Online.
- Восстановление удалённых писем из корзины Gmail и отражение этого состояния в Discourse в настоящее время работает нестабильно.
Изменение почтового ящика для синхронизации после того, как письма уже были синхронизированы, не рекомендуется и может привести к множеству странных проблем. 
- Для каждой группы можно синхронизировать только один почтовый ящик.
- Взаимодействие между группами — неизведанная территория и будет работать плохо (например, отправка письма team@yoursite.com с support@yoursite.com, если каждый из этих адресов настроен для разных групп).
Также могут быть другие тонкие нюансы и недоработки, так как это альфа-функция.
Обратная связь и дорожная карта
Мы будем рады получить обратную связь от всех, кто использует эту функцию с Gmail. Я буду тем, кто займётся устранением любых ошибок и проблем. Отладка сейчас немного сложна, но я работаю над этим!
Следующие задачи, над которыми я буду работать:
- Улучшение отладки для упрощения просмотра логов IMAP и выявления проблем.
- Улучшение интерфейса групповой электронной почты для ограничения выбора почтовых ящиков в Gmail, а также для предотвращения или запрета изменения почтовых ящиков.
- Валидация для предотвращения использования одних и тех же данных IMAP для нескольких групп.
- Возможно, улучшение способа хранения настроек группового IMAP и улучшение пользовательского опыта при проверке учётных данных.
- Поддержка Outlook.
В настоящее время, пока мы устраняем недочёты, эта функция недоступна для наших хостинговых клиентов.
Особая благодарность 
И @dan, и @j.jaffeux являются основными авторами этой огромной функции, над которой мы работали очень долго. Без их замечательной работы я не смог бы довести функцию до этого уровня и сделать это объявление
.

