Как настроить почтовый сервер JES

Для того, чтобы использовать систему уведомлений и возможность импортировать письма электронной почты как задачи, TrackStudio нужен POP3/SMTP сервер. Вы можете использовать для этих целей любой известный вам сервер (или даже почтовый сервис, такой как Gmail или Яндекс.Почта). Для настройки и тестирования вы также можете использовать поставляемый вместе с TrackStudio Standalone преднастроенный Java E-mail Server (JES).

Чтобы использовать JES для отправки уведомлений:

  1. Откройте файл jes/etc/mail.conf в текстовом редакторе. Раскомментируйте параметр defaultsmtpservers и укажите адрес SMTP-сервера вашей организации.
  2. Запустите Java E-mail Server (jes/jes). (Для запуска под ОС GNU/Linux используйте команду sudo sh jes
  3. Запустите приложение для управления сервером TrackStudio (SMAN).
  4. Перейдите на вкладку "Электронная почта", а затем на "Оповещения по электронной почте".
  5. Включите опцию "Разрешить оповещения по электронной почте". Остальные параметры не меняйте.
  6. Укажите порт для SMTP-сервера. Обычно это порт 25 (в таком случае поле можно оставить пустым), но если такой порт уже занят, вы можете указать другой в файле jes/etc/mail.conf
  7. Нажмите кнопку "Старт" и дождитесь окончания запуска TrackStudio.
  8. Войдите в систему через ваш браузер под вашей учетной записью.
  9. Укажите ваш адрес электронной почты в настройках пользователя (Чтобы перейти к настройкам своей учетной записи, кликните на вашем имени в приветствии вверху страницы в TrackStudio и затем нажмите кнопку "Редактировать").
  10. Перейдите к проекту, для которого вы хотите создать уведомление.
  11. В меню выберите пункт "Оповещения о событиях" (если такого пункта меню нет, значит вы не включили в Server Manager возможность отправлять оповещения.
  12. Создайте оповещение о событиях, как это описано в статье документации "Как оповещать пользователей об изменениях по e-mail"

Как это работает:

  1. Кто-то из пользователей изменяет или добавляет задачу, выполняет над задачей операцию или оставляет комментарий.
  2. Если указанная задача удовлетворяет условиям фильтра, заданного для оповещения, TrackStudio создает сообщение электронной почты и отправляет его через указанный SMTP-сервер (в данном случае JES) подписчикам, для которых создано это оповещение.
  3. JES перенаправляет это сообщение на сервер, указанный в параметре defaultsmtpservers в файле mail.conf.
  4. Почтовый сервер отправляет сообщения в ящики электронной почты пользователей.
  5. Затем пользователи получают это сообщение с помощью своих почтовых клиентов.

Чтобы использовать JES для приема сообщений электронной почты:

  1. Настройте JES для отправки уведомлений, как описано выше и убедитесь, что оповещения доходят до адресатов.
  2. Запустите Java E-mail Server (jes/jes). (Для запуска под ОС GNU/Linux используйте команду sudo sh jes
  3. Запустите приложение для управления сервером TrackStudio (SMAN).
  4. Перейдите на вкладку "Электронная почта", а затем на "Регистрация задач и сообщений по электронной почте".
  5. Включите опцию "Разрешить импорт e-mail"
  6. Укажите периодичность импорта в минутах. При тестировании лучше указать минимальную периодичность в 1 минуту, чтобы не приходилось долго ждать обработки писем в очереди.
  7. Укажите адрес почтового сервера (для целей тестирования можно оставить 127.0.0.1)
  8. Укажите порт для POP3-сервера. Обычно это порт 110 (в таком случае поле можно оставить пустым), но если такой порт уже занят, вы можете указать другой в файле jes/etc/mail.conf
  9. Нажмите кнопку "Старт" и дождитесь окончания запуска TrackStudio.

Как это работает:

  1. Пользователь отправляет письмо на адрес trackstudio@127.0.0.1.
  2. JES определяет, что адрес получателя находится в локальном домене и пересылает его в соответствующий внутренний ящик, который используется TrackStudio
  3. Когда TrackStudio определяет наличие сообщения в ящике, она обрабатывает его и, в зависимости от результатов обработки, создает задачу или комментарий к задаче.

Для тестирования вы можете создать почтовые ящики для существующих пользователей TrackStudio на сервере JES. Для этого:

  1. Остановите сервер JES
  2. Откройте файл jes/etc/user.conf
  3. Создайте в нем записи вида user.username@localhost=<password>
  4. Запустите сервер JES.
  5. В почтовом клиенте укажите логин username@localhost и заданный пароль.

Подробнее о настройке импорта задач из электронной почты читайте в статье "Как импортировать письма от пользователей в задачи"

Отладка работы системы почтовых уведомлений

Логи работы почтового сервера Java Email Server находятся в файле jes/log/jes.log. Вы можете настроить вывод этих логов в файле jes/etc/log.conf (это обычный конфигурационный файл логгера log4j). Для отладки лучше использовать уровень debug.

Очередь отправки сообщений можно посмотреть в папке jes/etc/smtp вашего экземпляра TrackStudio. Если в этой папке есть файлы с расширением .ser и они из нее не исчезают, значит какие-то сообщения сервер jes не может отправить. Вы можете открыть файл с расширением .ser в любом текстовом редакторе и посмотреть, от кого и кому это письмо.

После приема почты сервером JES сообщения раскладываются в папки, соответствующие ящикам учетных записей. Так, например, сообщения для analyst@localhost будут складироваться в папку jes/etc/users/analyst@localhost в виде текстовых файлов, пока не будут удалены самим получателем из почтового клиента.

Для того, чтобы посмотреть логи отправки почтовых сообщений системой TrackStudio, либо посмотреть логи импорта сообщений, в файле trackstudio.mail.properties установите параметр mail.debug=true.
После запуска TrackStudio в файл trackstudio.log будут писаться сообщения логгера:

	com.trackstudio.app.adapter.service.BaseStoreServiceAdapter:processImpl:48 - START ADAPTER:com.trackstudio.app.adapter.service.BaseStoreServiceAdapter
2012-04-11 14:18:51,303 DEBUG com.trackstudio.app.adapter.service.BaseStoreServiceAdapter:processImpl:105 - CLOSE ADAPTER:com.trackstudio.app.adapter.service.BaseStoreServiceAdapter
2012-04-11 14:18:51,390 DEBUG com.trackstudio.app.adapter.service.BaseFilterServiceAdapter:getNextNextRun:83 - next run time java.util.GregorianCalendar[time=1334140260000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Moscow",offset=10800000,dstSavings=3600000,useDaylight=true,transitions=130,lastRule=java.util.SimpleTimeZone[id=Europe/Moscow,offset=10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=7200000,startTimeMode=1,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=7200000,endTimeMode=1]],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2012,MONTH=3,WEEK_OF_YEAR=16,WEEK_OF_MONTH=3,DAY_OF_MONTH=11,DAY_OF_YEAR=102,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=31,SECOND=0,MILLISECOND=0,ZONE_OFFSET=10800000,DST_OFFSET=3600000]
2012-04-11 14:18:51,473 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:processSubscription:440 - START SEND subscription
2012-04-11 14:18:51,490 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:sendMsg:79 - 

 ************ ALERT DISTRIBUTION ***********

2012-04-11 14:18:51,490 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:sendMsg:80 - 		DISTRIBUTION NAME: Эскалация первой линии
2012-04-11 14:18:51,490 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:sendMsg:81 - 		FILNET NAME: Эскалация первой линии
2012-04-11 14:18:51,491 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:sendMsg:82 - 		TASK NAME: Инциденты
2012-04-11 14:18:51,491 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:sendMsg:83 - 		USER NAME: Escalator Bot
2012-04-11 14:18:51,530 DEBUG com.trackstudio.app.adapter.email.SendMsgFJTask:run:102 - Send message to escalator1 escalator@localhost
2012-04-11 14:18:51,747 DEBUG com.trackstudio.kernel.manager.FilterManager:makeFValue:418 - CLOSE SESSION FilterManager
2012-04-11 14:18:51,753 DEBUG com.trackstudio.kernel.manager.FilterManager:getTaskFValue:537 - TaskFValue map: {UDFff8081812e9fac85012e9fe177300158=[_ne_любое значение], display=[UDFff8081812e9fac85012e9fe177300158, deadline, taskname, tasknumber], sortorder=[;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;], subtask=[1]}
2012-04-11 14:18:52,457 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:getDataMap:153 - mailFrom is trackstudio@localhost
2012-04-11 14:18:52,460 DEBUG com.trackstudio.kernel.manager.FilterManager:makeFValue:418 - CLOSE SESSION FilterManager
2012-04-11 14:18:52,461 DEBUG com.trackstudio.kernel.manager.FilterManager:getTaskFValue:537 - TaskFValue map: {UDFff8081812e9fac85012e9fe177300158=[_ne_любое значение], display=[UDFff8081812e9fac85012e9fe177300158, deadline, taskname, tasknumber], sortorder=[;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;], subtask=[1]}
2012-04-11 14:18:53,207 DEBUG com.trackstudio.app.adapter.email.EmailSender:send:124 - Send e-mail subject : : Инциденты X-Priority : null
2012-04-11 14:18:53,223 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:sendMsg:90 - 		RESULT DISTRIBUTION: false
2012-04-11 14:18:53,224 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:sendMsg:91 - 


2012-04-11 14:18:53,224 DEBUG com.trackstudio.app.adapter.email.FilterNotifyAdapterManager:processSubscription:491 - FINISHED SEND subscription