Добавить в корзинуПозвонить
Найти в Дзене
Записки сисадмина

Redmine. Трекер задач. Отправляем уведомления по почте.

«Что там с задачей?» - самый частый вопрос, который слышит разработчик каждый день. Каждый день, несколько дней, либо неделю ты отчитываешься о проделанной работе на созвонах, иногда просто пересказывая то, что ты уже расписал в трекере. Таков путь любого IT специалиста, тут ничего не поделаешь. Но если тебе прилетает задача из категории "текучка" от рядового сотрудника, ты ее выполнил и не сообщил об этом, то "поздравляю, Шарик, ты балбес". У такого сотрудника обычно и без тебя дел навалом, поэтому у него банально нет времени постоянно проверять трекер и следить за решением его проблемы. Зато он постоянно работает с электронной почтой. Вот тут и пересекаются наши интересы: нам нужно отправлять уведомления о статусах задачи, а пользователю удобно получать об этом письма. Так давайте же заставим наш Redmine отправлять уведомления. Заходим в Настройки -> Уведомления по email: echo restart > /var/lib/redmine/tmp/restart.txt Да, да. Приложение redmine перезапускается именно так. В поле "ис
Оглавление

«Что там с задачей?» - самый частый вопрос, который слышит разработчик каждый день.

Каждый день, несколько дней, либо неделю ты отчитываешься о проделанной работе на созвонах, иногда просто пересказывая то, что ты уже расписал в трекере. Таков путь любого IT специалиста, тут ничего не поделаешь.

Но если тебе прилетает задача из категории "текучка" от рядового сотрудника, ты ее выполнил и не сообщил об этом, то "поздравляю, Шарик, ты балбес".

У такого сотрудника обычно и без тебя дел навалом, поэтому у него банально нет времени постоянно проверять трекер и следить за решением его проблемы. Зато он постоянно работает с электронной почтой.

Вот тут и пересекаются наши интересы: нам нужно отправлять уведомления о статусах задачи, а пользователю удобно получать об этом письма.

Так давайте же заставим наш Redmine отправлять уведомления.

Заходим в Настройки -> Уведомления по email:

Настраиваем отправку уведомлений в Redmine

-2
  • Окей, у нас домен прикреплен к яндекс360, поэтому мы вставляем данные smtp серверов яндекса:
-3
  • Сохраняем и перезапускаем наше приложение:
echo restart > /var/lib/redmine/tmp/restart.txt

Да, да. Приложение redmine перезапускается именно так.

  • Возвращаемся в web версию и видим, что smtp активировалось:
-4

В поле "исходящий email адрес" вставляем нашу почту, с которой мы будем отправлять сообщения.

  • Пробуем создать пользователя, проставив галочку "Отправить пользователю информацию по учётной записи"
-5

Ииииии... Ничего не происходит.

В логах ошибка:

ERROR -- : [ActiveJob] [Mailer::DeliveryJob] [3a33019c-b100-4c50-8b6f-30606899f67d] Email delivery error: Net::ReadTimeout with #<TCPSocket:(closed)>
  • Возвращаемся в официальную документацию и смотрим, что нам советуют сделать:
-6

Спойлер: не поможет. Вывалится та же ошибка, только через 5 минут таймаута.

Начинаем разбираться в чем дело и понимаем, что яндекс требует SSL авторизацию, но не уведомляет об этом наше приложение.

-7
  • Убираем лишний таймаут из настроек и прописываем директивы SSL:
-8
  • Пробуем снова обновить пароль пользователя и отправить ему на почту:
-9

Наконец уведомления начали работать.

  • Пробуем назначить задачу на нашего пользователя:
-10
  • Получаем уведомление об этом на почту:
-11

А если лень разбираться

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

Даже в таком случае мы можем отправлять сообщения.

  • Проверяем, что на нашем сервере отрабатывает команда sendmail.
  • Указываем redmine отправлять сообщения через sendmail, игнорируя остальные настройки:
-12

Создаем задачу из email писем.

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

Практически каждый офисный сотрудник постоянно взаимодействует с электронной почтой. На эту почту он уже получает уведомления о своих задачах. Так пусть и создает новые задачи такими же письмами.

Алгоритм простой: пользователь отправляет письмо на наш почтовый ящик. Тема письма становится темой задачи, тело письма - описанием, а все прикрепленные файлы прикрепятся и к задаче. Также будет проставляться автор задачи, если redmine найдет пользователя в системе с таким email.

  • В директории /var/lib/redmine создаем скрипт email.sh
rake -f /var/lib/redmine/Rakefile --silent redmine:email:receive_imap RAILS_ENV="production" host=imap.yandex.ru username=our_email@yandex_domain.ru password=email_password unknown_user=accept no_permission_check=1 project=default_project ssl=SSL port=993

host - imap сервер нашего почтового сервиса

username - логин почтового ящика

password - пароль от почтового ящика

project - проект, в котором создавать задачи

port - imap порт нашего почтового сервиса

  • Добавляем в наш cron задачу на сбор писем раз в 5 минут:
*/5 * * * * /var/lib/redmine/email.sh

Либо создаем systemd таймер, который будет заниматься тем же.

  • Заходим в Настройки -> Прием сообщений:
-13
  • В поле "Урезать письмо после одной из этих строк" вставляем регулярное выражение:
\d+.\d+.\d+, \d+:\d+,.+?our_email@yandex_domain.ru.+?our_email@yandex_domain.ru.+?:
(\d+\/\d+\/\d+ \d+:\d+ \w+), our_email@yandex_domain.ru пишет:
--

Замените our_email@yandex_domain.ru на ваш адрес почты, на который приходят письма.

Все готово! Теперь все наши коллеги смогут взаимодействовать с redmine через почту, зачастую даже не заходя в веб версию приложения.