Оповещение обновлений в задачах по электронной почте
Table of Contents
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