Edgewall Software

Оповещение обновлений в задачах по электронной почте

На других языках:

Trac поддерживает оповещения о изменениях в задачах по электронной почте.

Оповещения по электронной почте помогают держать пользователей в курсе изменений задач или интересующих их вопросов, а так же предоставляют удобный способ отправления всех обновлений задач на внешний список рассылок. К примеру, этим способом организован список рассылок Trac-tickets.

Оповещене отключено по умолчанию, но его можно включить и настроить в trac.ini.

Получение писем оповещений

Во время создания новой задачи или добавления комментария к любой задаче, введите корректный адрес вашего ящика электропочты или ваше имя пользователя в поле от кого, владелец или cc. Trac будет автоматически присылать вам электрописьма о совершённых изменениях в задаче (зависит от того, как настроена система оповещения).

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

Использование вашего имени пользователя для получения уведомлений

Для получения уведомлений вы можете использовать полный адрес электроящика или ваше имя пользователя. Чтобы использовать ваше имя пользователя для получений уведомлений, вам нужно указать корректный адрес электропочты на странице Настройки.

Так же, имя домена по умолчанию (smtp_default_domain) может быть установлено в файле TracIni (смотрите Параметры настроек ниже). В этом случае, доменное имя, используемое по умолчанию может быть добавлено к имени пользователя, это может быть полезно при использовании в "Интранет".

Настройка оповещений по SMTP

Важно: Для корректной работы TracNotification параметр [trac] base_url должен быть установлен в trac.ini.

Параметры Настроек

Это возможные параметры секции [notification] в trac.ini.

  • smtp_enabled: Включить оповещение по электронной почте.
  • smtp_from: Адрес Отправителя в заголовке электронных писем оповещений.
  • smtp_from_name: Имя Отправителя в заголовке электронных писем оповещений.
  • smtp_replyto: Обратный адрес в заголовке электронных писем оповещений.
  • smtp_default_domain: (с выпуска 0.10) Добавляет этот домен к адресам, не содержащим домена. Fully qualified адреса это не затрагивает. Домен по умолчанию добавляется ко всем именам пользователей, у которых не определён адрес электропочты в пользовательских настройках.
  • smtp_always_cc: Список адресатов, на которые всегда требуется отсылать изменения. Обычно используется для отправления всех обновлений задач на внешний список рассылок.
  • smtp_always_bcc: (с выпуска 0.10) Скрытый от всех получателей список адресатов, на которые всегда требуется отсылать изменения.
  • smtp_subject_prefix: (с выпуска 0.10.1) Произвольный текст, который будет вставлен в начале темы сообщения. По умолчанию установлен "__default__".
  • always_notify_reporter: Всегда оповещать всех адресатов в поле создавшего задачу (по умолчанию отключено: false).
  • always_notify_owner: (с выпуска 0.9) Всегда оповещать владельца задачи (по умолчанию отключено: false).
  • always_notify_updater: (с выпуска 0.10) Всегда оповещать сделавшего обновление задачи (по умолчанию включено: true).
  • use_public_cc: (с выпуска 0.10) Адреса в поле получателей: (создавший задачу, владелец задачи) и Cc: список получателей виден всем получателям (по умолчанию Bcc: - скрытая копия).
  • use_short_addr: (с выпуска 0.10) Разрешить отправление оповещений по адресам, у которых отуствует домен (например оканчивается не @<domain.com>). Этот параметр может пригодиться для Интранет, где SMTP сервер может обрабатывать локальные адреса и доставлять письма с такими адресами. Так же смотрите smtp_default_domain. Не используйте этот параметр с публичным SMTP сервером.
  • mime_encoding: (с выпуска 0.10) Оповещения посылаются в представлении 7-bit. С помощью этого параметра можно выбрать тип MIME кодировки. Возможные значения:
    • base64: значение по умолчанию работает с любым содержимым. Может создавать проблемы с анти-спам/анти-вирус системами.
    • qp или quoted-printable: лучше для европейских языков (компактней, чем base64), не рекомендуется для текста, отличного от ASCII (объёмней, чем base64)
    • none: без кодировки. Используйте только с английским (ASCII). Письма с символами, отличными от ASCII не будут доставлены.
  • ticket_subject_template: (с выпуска 0.11) Текстовый шаблон Genshi для изменения темы письма оповещения.
  • email_sender: (с выпуска 0.12) Компонент, исполняющий функцию IEmailSender. Этот компонент используется системой оповещений для отправки электронных писем. Trac поддерживает следующие компоненты:
    • SmtpEmailSender: соединяется с SMTP сервером (по умолчанию).
    • SendmailEmailSender: исполняется внешнее приложение, совместимое с sendmail.

Либо smtp_from, либо smtp_replyto (или оба) должны быть определены, иначе Trac не будет отправлять оповещения.

Следующие параметры относятся только к доставке оповещений через SMTP.

  • smtp_server: Адрес SMTP сервера для доставки оповещений.
  • smtp_port: (с выпуска 0.9) Порт, используемый для соединения с SMTP сервером.
  • smtp_user: (с выпуска 0.9) Имя пользователя для аутентификации аккаунта на SMTP сервере.
  • smtp_password: (с выпуска 0.9) Пароль для аутентификации аккаунта на SMTP сервере.
  • use_tls: (с выпуска 0.10) Включите для отправления оповещений через SMTP сервер с использованием TLS, например как GMail.

Следующие параметры относятся только к доставке оповещений через внешнее приложение, совместимое с sendmail.

  • sendmail_path: (с выпуска 0.12) Путь к исполняемому файлу sendmail. Программа sendmail должна поддерживать командные параметры -i и -f.

Пример настройки (SMTP)

[notification]
smtp_enabled = true
smtp_server = mail.example.com
smtp_from = notifier@example.com
smtp_replyto = myproj@projects.example.com
smtp_always_cc = ticketmaster@example.com, theboss+myproj@example.com

Пример настройки (sendmail)

[notification]
smtp_enabled = true
email_sender = SendmailEmailSender
sendmail_path = /usr/sbin/sendmail
smtp_from = notifier@example.com
smtp_replyto = myproj@projects.example.com
smtp_always_cc = ticketmaster@example.com, theboss+myproj@example.com

Изменение темы сообщения

Тема сообщения может быть изменена с помощью параметра ticket_subject_template , который содержит Текстовый шаблон Genshi. Значение по умолчанию:

$prefix #$ticket.id: $summary

Следующие переменные можно использовать в шаблоне:

  • env: Окружение проекта (смотрите env.py).
  • prefix: Префикс, описанный в smtp_subject_prefix.
  • summary: Описание задачи, прежнее описание в том случае, если в описание задачи были внесены изменения.
  • ticket: Объект "задача" (смотрите model.py). Определённые поля в задаче могут быть использованы добавлением имени поля через точку, например $ticket.milestone.

Изменение содержимого оповещений

Содержание контента оповещений генерируется на основе ticket_notify_email.txt в trac/ticket/templates. По умолчанию содержимое файла:

$ticket_body_hdr
$ticket_props
#choose ticket.new
  #when True
$ticket.description
  #end
  #otherwise
    #if changes_body
Changes (by $change.author):

$changes_body
    #end
    #if changes_descr
      #if not changes_body and not change.comment and change.author
Description changed by $change.author:
      #end
$changes_descr
--
    #end
    #if change.comment

Comment${not changes_body and '(by %s)' % change.author or ''}:

$change.comment
    #end
  #end
#end

-- 
Ticket URL: <$ticket.link>
$project.name <${project.url or abs_href()}>
$project.descr

Пример оповещения

#42: testing
---------------------------+------------------------------------------------
       Id:  42             |      Status:  assigned                
Component:  report system  |    Modified:  Fri Apr  9 00:04:31 2004
 Severity:  major          |   Milestone:  0.9                     
 Priority:  lowest         |     Version:  0.6                     
    Owner:  anonymous      |    Reporter:  jonas@example.com               
---------------------------+------------------------------------------------
Changes:
  * component:  changset view => search system
  * priority:  low => highest
  * owner:  jonas => anonymous
  * cc:  daniel@example.com =>
         daniel@example.com, jonas@example.com
  * status:  new => assigned

Comment:
I'm interested too!

--
Ticket URL: <http://example.com/trac/ticket/42>
My Project <http://myproj.example.com/>

Использование Gmail в качестве SMTP сервера

Используйте следующий пример конфигурации:

[notification]
smtp_enabled = true
use_tls = true
mime_encoding = base64
smtp_server = smtp.gmail.com
smtp_port = 587
smtp_user = user
smtp_password = password

где user и password соответствуют существующему аккаунту в Gmail, то есть тому, что вы вводите для входа в http://gmail.com

Так же можно использовать smtp_port = 25.
Не используйте smtp_port = 465. Это не будет работать и система оповещений может остановиться. 465 порт зарезервирован под протоколом SMTPS, который не поддерживается Trac. Смотрите #7107 для более подробных деталей.

Фильтр оповещений собственных изменений

В Gmail используйте следующий фильтр:

from:(<smtp_from>) (("Reporter: <username>" -Changes) OR "Changes (by <username>)")

В случае Trac .10 следующий фильтр:

from:(<smtp_from>) (("Reporter: <username>" -Changes -Comment) OR "Changes (by <username>)" OR "Comment (by <username>)")

чтобы удалить эти оповещения.

Для Thunderbird нет решения в случае использования IMAP (смотрите http://kb.mozillazine.org/Filters_(Thunderbird)#Filtering_the_message_body).

Лучшее решение - установить значение "false" для параметра "always_notify_updater" в conf/trac.ini. Однако вы всё равно будете получать оповещения о вашем комментарии к задаче, которую вы опубликовали или владельцем которой вы являетесь.

Вы можете попробовать это дополнение: http://trac-hacks.org/wiki/NeverNotifyUpdaterPlugin

Возможные неполадки

Если у вас не получается включить оповещения, сперва убедитесь, что у вас активировано журналирование, проверьте в журнале наличие ошибок. смотрите раздел TracLogging для подробностей о журналировании.

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

Ошибка Доступ запрещён

Пример такой ошибки:

  ...
  File ".../smtplib.py", line 303, in connect
    raise socket.error, msg
  error: (13, 'Permission denied')

Эта ошибка может быть вызвана настройками безопасности на сервере: множество Linux дистрибутивов не позволяют веб-серверу (Apache, …) доставлять сообщения на локальный SMTP сервер.

Многие пользователи сбиваются с толку из-за того, что попытка соединиться с SMTP сервером вручную удаётся:

telnet localhost 25

Проблема в том, что обычный пользователь может соединиться с SMTP сервером, но не веб-сервер:

sudo -u www-data telnet localhost 25

В таком случае вы должны настроить свой сервер таким образом, чтобы веб-сервер имел доступ к отправлению сообщений через SMTP сервер. Настройки отличаются в разных дистрибутивах Linux и зависят от текущих настроек безопасности. Вы можете найти решение в архиве Списка рассылки Trac.

Полезные ветки в списке рассылки:

Для SELinux в Fedora 10:

$ setsebool -P httpd_can_sendmail 1

Нежелательная почта

Некоторые SMTP сервера могут отклонять оповещения, отправленные Trac.

Конфигурация Trac по умолчанию использует кодировку Base64 для отправляемых писем. Всё тело сообщения закодировано, что иногда даёт ложное срабатывание на нежелательную почту у параноидальных серверов электронной почты. В таком случае рекомендуется изменить кодировку на "quoted-printable" в параметре mime_encoding.

Кодировку quoted-printable ремомендуется использовать только с латинскими таблицами символов. Для азиатских таблиц символов рекомендуется использовать кодировку Base64.

Ошибка 501, 5.5.4 Invalid Address

С IIS 6.0 вы можете получить такое собщение в журнале Trac:

Failure sending notification on change to ticket #1: SMTPHeloError: (501, '5.5.4 Invalid Address')

Здесь приводятся инструкции по решению этого.


Так же смотрите: TracTickets, TracIni, TracGuide

Last modified 4 years ago Last modified on Feb 2, 2011 10:39:01 AM