= Оповещение обновлений в задачах по электронной почте = [[TracGuideToc]] [[PageOutline]] [[TranslatedPages(revision=0)]] Trac поддерживает оповещения о изменениях в задачах по электронной почте. Оповещения по электронной почте помогают держать пользователей в курсе изменений задач или интересующих их вопросов, а так же предоставляют удобный способ отправления всех обновлений задач на внешний список рассылок. К примеру, этим способом организован список рассылок [http://lists.edgewall.com/archive/trac-tickets/ Trac-tickets]. Оповещене отключено по умолчанию, но его можно включить и настроить в [wiki:TracIni trac.ini]. == Получение писем оповещений == Во время создания новой задачи или добавления комментария к любой задаче, введите корректный адрес вашего ящика электропочты или ваше имя пользователя в поле ''от кого'', ''владелец'' или ''cc''. Trac будет автоматически присылать вам электрописьма о совершённых изменениях в задаче (зависит от того, как настроена система оповещения). Это помогает быть в курсе всех изменений в интересующих вас вопросах или запросах улучшений. === Использование вашего имени пользователя для получения уведомлений === Для получения уведомлений вы можете использовать полный адрес электроящика или ваше имя пользователя. Чтобы использовать ваше имя пользователя для получений уведомлений, вам нужно указать корректный адрес электропочты на странице ''Настройки''. Так же, имя домена по умолчанию ('''`smtp_default_domain`''') может быть установлено в файле TracIni (смотрите [#ПараметрыНастроек Параметры настроек] ниже). В этом случае, доменное имя, используемое по умолчанию может быть добавлено к имени пользователя, это может быть полезно при использовании в "Интранет". == Настройка оповещений по SMTP == '''Важно:''' Для корректной работы TracNotification параметр `[trac] base_url` должен быть установлен в [wiki:TracIni 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'') Разрешить отправление оповещений по адресам, у которых отуствует домен (например оканчивается не ''@''). Этот параметр может пригодиться для Интранет, где 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'') [http://genshi.edgewall.org/wiki/Documentation/text-templates.html Текстовый шаблон 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 сервер с использованием [http://en.wikipedia.org/wiki/Transport_Layer_Security 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` , который содержит [http://genshi.edgewall.org/wiki/Documentation/text-templates.html Текстовый шаблон Genshi]. Значение по умолчанию: {{{ $prefix #$ticket.id: $summary }}} Следующие переменные можно использовать в шаблоне: * `env`: Окружение проекта (смотрите [trac:source:/trunk/trac/env.py env.py]). * `prefix`: Префикс, описанный в `smtp_subject_prefix`. * `summary`: Описание задачи, прежнее описание в том случае, если в описание задачи были внесены изменения. * `ticket`: Объект "задача" (смотрите [trac:source:/trunk/trac/ticket/model.py 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: My Project }}} == Использование 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`.[[br]] Не используйте `smtp_port = 465`. Это не будет работать и система оповещений может остановиться. 465 порт зарезервирован под протоколом SMTPS, который не поддерживается Trac. Смотрите [comment:ticket:7107:2 #7107] для более подробных деталей. == Фильтр оповещений собственных изменений == В Gmail используйте следующий фильтр: {{{ from:() (("Reporter: " -Changes) OR "Changes (by )") }}} В случае Trac .10 следующий фильтр: {{{ from:() (("Reporter: " -Changes -Comment) OR "Changes (by )" OR "Comment (by )") }}} чтобы удалить эти оповещения. Для 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:MailingList Списка рассылки] Trac. Полезные ветки в списке рассылки: * SELinux: http://article.gmane.org/gmane.comp.version-control.subversion.trac.general/7518 Для 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') }}} [http://support.microsoft.com/kb/291828 Здесь] приводятся инструкции по решению этого. ---- Так же смотрите: TracTickets, TracIni, TracGuide