| 1 | = Оповещение обновлений в задачах по электронной почте = |
| 2 | [[TracGuideToc]] |
| 3 | |
| 4 | [[PageOutline]] |
| 5 | |
| 6 | Trac поддерживает оповещения о изменениях в задачах по электронной почте. |
| 7 | |
| 8 | Оповещения по электронной почте помогают держать пользователей в курсе изменений задач или интересующих их вопросов, а так же предоставляют удобный способ отправления всех обновлений задач на внешний список рассылок. К примеру, этим способом организован список рассылок [http://lists.edgewall.com/archive/trac-tickets/ Trac-tickets]. |
| 9 | |
| 10 | Оповещене отключено по умолчанию, но его можно включить и настроить в [wiki:TracIni trac.ini]. |
| 11 | |
| 12 | == Получение писем оповещений == |
| 13 | Во время создания новой задачи или добавления комментария к любой задаче, введите корректный адрес вашего ящика электропочты или ваше имя пользователя в поле ''от кого'', ''владелец'' или ''cc''. Trac будет автоматически присылать вам электрописьма о совершённых изменениях в задаче (зависит от того, как настроена система оповещения). |
| 14 | |
| 15 | Это помогает быть в курсе всех изменений в интересующих вас вопросах или запросах улучшений. |
| 16 | |
| 17 | === Использование вашего имени пользователя для получения уведомлений === |
| 18 | |
| 19 | Для получения уведомлений вы можете использовать полный адрес электроящика или ваше имя пользователя. Чтобы использовать ваше имя пользователя для получений уведомлений, вам нужно указать корректный адрес электропочты на странице ''Настройки''. |
| 20 | |
| 21 | Так же, имя домена по умолчанию ('''`smtp_default_domain`''') может быть установлено в файле TracIni (смотрите [#ПараметрыНастроек Параметры настроек] ниже). В этом случае, доменное имя, используемое по умолчанию может быть добавлено к имени пользователя, это может быть полезно при использовании в "Интранет". |
| 22 | |
| 23 | == Настройка оповещений по SMTP == |
| 24 | |
| 25 | '''Важно:''' Для корректной работы TracNotification параметр `[trac] base_url` должен быть установлен в [wiki:TracIni trac.ini]. |
| 26 | |
| 27 | === Параметры Настроек === |
| 28 | Это возможные параметры секции `[notification]` в trac.ini. |
| 29 | |
| 30 | * '''`smtp_enabled`''': Включить оповещение по электронной почте. |
| 31 | * '''`smtp_from`''': Адрес ''Отправителя'' в заголовке электронных писем оповещений. |
| 32 | * '''`smtp_from_name`''': Имя ''Отправителя'' в заголовке электронных писем оповещений. |
| 33 | * '''`smtp_replyto`''': ''Обратный адрес'' в заголовке электронных писем оповещений. |
| 34 | * '''`smtp_default_domain`''': (''с выпуска 0.10'') Добавляет этот домен к адресам, не содержащим домена. Fully qualified адреса это не затрагивает. Домен по умолчанию добавляется ко всем именам пользователей, у которых не определён адрес электропочты в пользовательских настройках. |
| 35 | * '''`smtp_always_cc`''': Список адресатов, на которые всегда требуется отсылать изменения. ''Обычно используется для отправления всех обновлений задач на внешний список рассылок.'' |
| 36 | * '''`smtp_always_bcc`''': (''с выпуска 0.10'') Скрытый от всех получателей список адресатов, на которые всегда требуется отсылать изменения. |
| 37 | * '''`smtp_subject_prefix`''': (''с выпуска 0.10.1'') Произвольный текст, который будет вставлен в начале темы сообщения. По умолчанию установлен "!__default!__". |
| 38 | * '''`always_notify_reporter`''': Всегда оповещать всех адресатов в поле создавшего задачу (по умолчанию отключено: false). |
| 39 | * '''`always_notify_owner`''': (''с выпуска 0.9'') Всегда оповещать владельца задачи (по умолчанию отключено: false). |
| 40 | * '''`always_notify_updater`''': (''с выпуска 0.10'') Всегда оповещать сделавшего обновление задачи (по умолчанию включено: true). |
| 41 | * '''`use_public_cc`''': (''с выпуска 0.10'') Адреса в поле получателей: (создавший задачу, владелец задачи) и Cc: список получателей виден всем получателям (по умолчанию ''Bcc:'' - скрытая копия). |
| 42 | * '''`use_short_addr`''': (''с выпуска 0.10'') Разрешить отправление оповещений по адресам, у которых отуствует домен (например оканчивается не ''@<domain.com>''). Этот параметр может пригодиться для Интранет, где SMTP сервер может обрабатывать локальные адреса и доставлять письма с такими адресами. Так же смотрите `smtp_default_domain`. Не используйте этот параметр с публичным SMTP сервером. |
| 43 | * '''`mime_encoding`''': (''с выпуска 0.10'') Оповещения посылаются в представлении 7-bit. С помощью этого параметра можно выбрать тип MIME кодировки. Возможные значения: |
| 44 | * `base64`: значение по умолчанию работает с любым содержимым. Может создавать проблемы с анти-спам/анти-вирус системами. |
| 45 | * `qp` или `quoted-printable`: лучше для европейских языков (компактней, чем base64), не рекомендуется для текста, отличного от ASCII (объёмней, чем base64) |
| 46 | * `none`: без кодировки. Используйте только с английским (ASCII). Письма с символами, отличными от ASCII не будут доставлены. |
| 47 | * '''`ticket_subject_template`''': (''с выпуска 0.11'') [http://genshi.edgewall.org/wiki/Documentation/text-templates.html Текстовый шаблон Genshi] для изменения темы письма оповещения. |
| 48 | * '''`email_sender`''': (''с выпуска 0.12'') Компонент, исполняющий функцию `IEmailSender`. Этот компонент используется системой оповещений для отправки электронных писем. Trac поддерживает следующие компоненты: |
| 49 | * `SmtpEmailSender`: соединяется с SMTP сервером (по умолчанию). |
| 50 | * `SendmailEmailSender`: исполняется внешнее приложение, совместимое с `sendmail`. |
| 51 | |
| 52 | Либо '''`smtp_from`''', либо '''`smtp_replyto`''' (или оба) ''должны'' быть определены, иначе Trac не будет отправлять оповещения. |
| 53 | |
| 54 | Следующие параметры относятся только к доставке оповещений через SMTP. |
| 55 | * '''`smtp_server`''': Адрес SMTP сервера для доставки оповещений. |
| 56 | * '''`smtp_port`''': (''с выпуска 0.9'') Порт, используемый для соединения с SMTP сервером. |
| 57 | * '''`smtp_user`''': (''с выпуска 0.9'') Имя пользователя для аутентификации аккаунта на SMTP сервере. |
| 58 | * '''`smtp_password`''': (''с выпуска 0.9'') Пароль для аутентификации аккаунта на SMTP сервере. |
| 59 | * '''`use_tls`''': (''с выпуска 0.10'') Включите для отправления оповещений через SMTP сервер с использованием [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS], например как GMail. |
| 60 | |
| 61 | Следующие параметры относятся только к доставке оповещений через внешнее приложение, совместимое с `sendmail`. |
| 62 | * '''`sendmail_path`''': (''с выпуска 0.12'') Путь к исполняемому файлу sendmail. Программа sendmail должна поддерживать командные параметры `-i` и `-f`. |
| 63 | |
| 64 | === Пример настройки (SMTP) === |
| 65 | {{{ |
| 66 | [notification] |
| 67 | smtp_enabled = true |
| 68 | smtp_server = mail.example.com |
| 69 | smtp_from = notifier@example.com |
| 70 | smtp_replyto = myproj@projects.example.com |
| 71 | smtp_always_cc = ticketmaster@example.com, theboss+myproj@example.com |
| 72 | }}} |
| 73 | |
| 74 | === Пример настройки (`sendmail`) === |
| 75 | {{{ |
| 76 | [notification] |
| 77 | smtp_enabled = true |
| 78 | email_sender = SendmailEmailSender |
| 79 | sendmail_path = /usr/sbin/sendmail |
| 80 | smtp_from = notifier@example.com |
| 81 | smtp_replyto = myproj@projects.example.com |
| 82 | smtp_always_cc = ticketmaster@example.com, theboss+myproj@example.com |
| 83 | }}} |
| 84 | |
| 85 | === Изменение темы сообщения === |
| 86 | Тема сообщения может быть изменена с помощью параметра `ticket_subject_template` , который содержит [http://genshi.edgewall.org/wiki/Documentation/text-templates.html Текстовый шаблон Genshi]. Значение по умолчанию: |
| 87 | {{{ |
| 88 | $prefix #$ticket.id: $summary |
| 89 | }}} |
| 90 | Следующие переменные можно использовать в шаблоне: |
| 91 | |
| 92 | * `env`: Окружение проекта (смотрите [trac:source:/trunk/trac/env.py env.py]). |
| 93 | * `prefix`: Префикс, описанный в `smtp_subject_prefix`. |
| 94 | * `summary`: Описание задачи, прежнее описание в том случае, если в описание задачи были внесены изменения. |
| 95 | * `ticket`: Объект "задача" (смотрите [trac:source:/trunk/trac/ticket/model.py model.py]). Определённые поля в задаче могут быть использованы добавлением имени поля через точку, например `$ticket.milestone`. |
| 96 | |
| 97 | === Изменение содержимого оповещений === |
| 98 | |
| 99 | Содержание контента оповещений генерируется на основе `ticket_notify_email.txt` в `trac/ticket/templates`. По умолчанию содержимое файла: |
| 100 | |
| 101 | {{{ |
| 102 | $ticket_body_hdr |
| 103 | $ticket_props |
| 104 | #choose ticket.new |
| 105 | #when True |
| 106 | $ticket.description |
| 107 | #end |
| 108 | #otherwise |
| 109 | #if changes_body |
| 110 | Changes (by $change.author): |
| 111 | |
| 112 | $changes_body |
| 113 | #end |
| 114 | #if changes_descr |
| 115 | #if not changes_body and not change.comment and change.author |
| 116 | Description changed by $change.author: |
| 117 | #end |
| 118 | $changes_descr |
| 119 | -- |
| 120 | #end |
| 121 | #if change.comment |
| 122 | |
| 123 | Comment${not changes_body and '(by %s)' % change.author or ''}: |
| 124 | |
| 125 | $change.comment |
| 126 | #end |
| 127 | #end |
| 128 | #end |
| 129 | |
| 130 | -- |
| 131 | Ticket URL: <$ticket.link> |
| 132 | $project.name <${project.url or abs_href()}> |
| 133 | $project.descr |
| 134 | }}} |
| 135 | == Пример оповещения == |
| 136 | {{{ |
| 137 | #42: testing |
| 138 | ---------------------------+------------------------------------------------ |
| 139 | Id: 42 | Status: assigned |
| 140 | Component: report system | Modified: Fri Apr 9 00:04:31 2004 |
| 141 | Severity: major | Milestone: 0.9 |
| 142 | Priority: lowest | Version: 0.6 |
| 143 | Owner: anonymous | Reporter: jonas@example.com |
| 144 | ---------------------------+------------------------------------------------ |
| 145 | Changes: |
| 146 | * component: changset view => search system |
| 147 | * priority: low => highest |
| 148 | * owner: jonas => anonymous |
| 149 | * cc: daniel@example.com => |
| 150 | daniel@example.com, jonas@example.com |
| 151 | * status: new => assigned |
| 152 | |
| 153 | Comment: |
| 154 | I'm interested too! |
| 155 | |
| 156 | -- |
| 157 | Ticket URL: <http://example.com/trac/ticket/42> |
| 158 | My Project <http://myproj.example.com/> |
| 159 | }}} |
| 160 | |
| 161 | == Использование Gmail в качестве SMTP сервера == |
| 162 | |
| 163 | Используйте следующий пример конфигурации: |
| 164 | {{{ |
| 165 | [notification] |
| 166 | smtp_enabled = true |
| 167 | use_tls = true |
| 168 | mime_encoding = base64 |
| 169 | smtp_server = smtp.gmail.com |
| 170 | smtp_port = 587 |
| 171 | smtp_user = user |
| 172 | smtp_password = password |
| 173 | }}} |
| 174 | |
| 175 | где ''user'' и ''password'' соответствуют существующему аккаунту в Gmail, то есть тому, что вы вводите для входа в [http://gmail.com] |
| 176 | |
| 177 | Так же можно использовать `smtp_port = 25`.[[br]] |
| 178 | Не используйте `smtp_port = 465`. Это не будет работать и система оповещений может остановиться. 465 порт зарезервирован под протоколом SMTPS, который не поддерживается Trac. Смотрите [comment:ticket:7107:2 #7107] для более подробных деталей. |
| 179 | |
| 180 | == Фильтр оповещений собственных изменений == |
| 181 | В Gmail используйте следующий фильтр: |
| 182 | |
| 183 | {{{ |
| 184 | from:(<smtp_from>) (("Reporter: <username>" -Changes) OR "Changes (by <username>)") |
| 185 | }}} |
| 186 | |
| 187 | В случае Trac .10 следующий фильтр: |
| 188 | {{{ |
| 189 | from:(<smtp_from>) (("Reporter: <username>" -Changes -Comment) OR "Changes (by <username>)" OR "Comment (by <username>)") |
| 190 | }}} |
| 191 | |
| 192 | чтобы удалить эти оповещения. |
| 193 | |
| 194 | Для Thunderbird нет решения в случае использования IMAP |
| 195 | (смотрите http://kb.mozillazine.org/Filters_(Thunderbird)#Filtering_the_message_body). |
| 196 | |
| 197 | Лучшее решение - установить значение "false" для параметра "always_notify_updater" в conf/trac.ini. |
| 198 | Однако вы всё равно будете получать оповещения о вашем комментарии к задаче, которую вы опубликовали или владельцем которой вы являетесь. |
| 199 | |
| 200 | Вы можете попробовать это дополнение: |
| 201 | http://trac-hacks.org/wiki/NeverNotifyUpdaterPlugin |
| 202 | |
| 203 | == Возможные неполадки == |
| 204 | |
| 205 | Если у вас не получается включить оповещения, сперва убедитесь, что у вас активировано журналирование, проверьте в журнале наличие ошибок. смотрите раздел TracLogging для подробностей о журналировании. |
| 206 | |
| 207 | Ошибки оповещений не сообщаются в веб-интерфейсе, поэтому пользователь, опубликовавший изменение в задаче или новую задачу не будет уведомлен о невозможности оповещения или сбое системы оповещений. Администратор Trac может посмотреть журнал и найти сообщение об ошибке. |
| 208 | |
| 209 | === Ошибка ''Доступ запрещён'' === |
| 210 | |
| 211 | Пример такой ошибки: |
| 212 | {{{ |
| 213 | ... |
| 214 | File ".../smtplib.py", line 303, in connect |
| 215 | raise socket.error, msg |
| 216 | error: (13, 'Permission denied') |
| 217 | }}} |
| 218 | |
| 219 | Эта ошибка может быть вызвана настройками безопасности на сервере: множество Linux дистрибутивов не позволяют веб-серверу (Apache, ...) доставлять сообщения на локальный SMTP сервер. |
| 220 | |
| 221 | Многие пользователи сбиваются с толку из-за того, что попытка соединиться с SMTP сервером вручную удаётся: |
| 222 | {{{ |
| 223 | telnet localhost 25 |
| 224 | }}} |
| 225 | Проблема в том, что обычный пользователь может соединиться с SMTP сервером, но не веб-сервер: |
| 226 | {{{ |
| 227 | sudo -u www-data telnet localhost 25 |
| 228 | }}} |
| 229 | |
| 230 | В таком случае вы должны настроить свой сервер таким образом, чтобы веб-сервер имел доступ к отправлению сообщений через SMTP сервер. Настройки отличаются в разных дистрибутивах Linux и зависят от текущих настроек безопасности. Вы можете найти решение в архиве [trac:MailingList Списка рассылки] Trac. |
| 231 | |
| 232 | Полезные ветки в списке рассылки: |
| 233 | * SELinux: http://article.gmane.org/gmane.comp.version-control.subversion.trac.general/7518 |
| 234 | |
| 235 | Для SELinux в Fedora 10: |
| 236 | {{{ |
| 237 | $ setsebool -P httpd_can_sendmail 1 |
| 238 | }}} |
| 239 | === ''Нежелательная почта'' === |
| 240 | |
| 241 | Некоторые SMTP сервера могут отклонять оповещения, отправленные Trac. |
| 242 | |
| 243 | Конфигурация Trac по умолчанию использует кодировку Base64 для отправляемых писем. Всё тело сообщения закодировано, что иногда даёт ''ложное срабатывание'' на нежелательную почту у параноидальных серверов электронной почты. В таком случае рекомендуется изменить кодировку на "quoted-printable" в параметре `mime_encoding`. |
| 244 | |
| 245 | Кодировку quoted-printable ремомендуется использовать только с латинскими таблицами символов. Для азиатских таблиц символов рекомендуется использовать кодировку Base64. |
| 246 | |
| 247 | === Ошибка ''501, 5.5.4 Invalid Address'' === |
| 248 | |
| 249 | С IIS 6.0 вы можете получить такое собщение в журнале Trac: |
| 250 | {{{ |
| 251 | Failure sending notification on change to ticket #1: SMTPHeloError: (501, '5.5.4 Invalid Address') |
| 252 | }}} |
| 253 | [http://support.microsoft.com/kb/291828 Здесь] приводятся инструкции по решению этого. |
| 254 | |
| 255 | |
| 256 | ---- |
| 257 | Так же смотрите: TracTickets, TracIni, TracGuide |