RusRedmineReceivingEmails » History » Version 8
Михаил Галац, 2016-11-27 22:40
1 | 2 | Denis Savitskiy | [RusRedmineReceivingEmails[Получение писем]] |
---|---|---|---|
2 | 1 | Denis Savitskiy | |
3 | {{>toc}} |
||
4 | |||
5 | Начиная с версии 0.8.0, Redmine можно настроить на создание и комментирование задач с помощью email. |
||
6 | |||
7 | h2. Настройка |
||
8 | |||
9 | Вы можете настроить Redmine для получения электронной почты одним из следующих способов: |
||
10 | |||
11 | * Пересылка электронных писем с вашего почтового сервера: |
||
12 | |||
13 | * Плюсы: работает с удаленнми почтовыми серверами, письма обрабатываются мгновенно, быстро (никакой перезагрузки окружения) |
||
14 | * Минусы: требует некоторых настроек агента передачи почты (например: Postfix, Sendmail...) |
||
15 | |||
16 | * Сбор почты с IMAP или POP3-сервера: |
||
17 | |||
18 | * Плюсы: простота установки, не нужно сконфигурировать MTA, работает с удаленного почтового сервера |
||
19 | 3 | Denis Savitskiy | * Минусы: письма не обрабатываются мгновенно (должны быть добавлены cron-задания для регулярного получения электронной почты) |
20 | 1 | Denis Savitskiy | |
21 | 3 | Denis Savitskiy | * Чтение электронных писем из стандартного потока ввода: |
22 | 1 | Denis Savitskiy | |
23 | * Плюсы: удобно для тестирования |
||
24 | 3 | Denis Savitskiy | * Минусы: низкая скорость работы (происходит перезагрузка окружения каждый раз, когда открывается письмо), нуждается в некоторой конфигурации вашего MTA |
25 | 1 | Denis Savitskiy | |
26 | h3. Отправление писем с сервера |
||
27 | |||
28 | Отдельный скрипт можно использовать для переадресации входящих электронных писем с вашего почтового сервера. |
||
29 | Этот скрипт читает необработанные письма со стандартного ввода и направляет их в Redmine через HTTP-запрос. |
||
30 | 3 | Denis Savitskiy | Он находится в каталоге redmine: @extra/mail_handler/rdm-mailhandler.rb@. |
31 | 1 | Denis Savitskiy | |
32 | 3 | Denis Savitskiy | Чтобы его использовать, необходимо включить API для получения сообщений электронной почты: |
33 | Зайдите в _Настройки_ -> _Приём сообщений_, поставьте флажок на *Включить веб-сервис для входящих сообщений* и введите (или сгенерируйте) API ключ. |
||
34 | 1 | Denis Savitskiy | |
35 | 3 | Denis Savitskiy | Скопируйте @rdm-mailhandler.rb@ на ваш почтовый сервер и убедитесь в том, что он является исполненяемым, затем настройте MTA. |
36 | 1 | Denis Savitskiy | |
37 | Использование: |
||
38 | |||
39 | <pre> |
||
40 | rdm-mailhandler [options] --url=<Redmine URL> --key=<API ключ> |
||
41 | |||
42 | Обязательные: |
||
43 | -u, --url URL сервера Redmine |
||
44 | -k, --key Redmine API ключ |
||
45 | |||
46 | Общие: |
||
47 | -h, --help помощь |
||
48 | -v, --verbose экстра информация |
||
49 | -V, --version информация о версии |
||
50 | |||
51 | Опции управления атрибутами задачи: |
||
52 | -p, --project=PROJECT идентификатор проекта |
||
53 | -t, --tracker=TRACKER трекер задачи |
||
54 | --category=CATEGORY категория задачи |
||
55 | --priority=PRIORITY приоритет задачи |
||
56 | -o, --allow-override=ATTRS разрешить содержимому письма переопределять |
||
57 | атрибуты, определённые ранее, |
||
58 | ATTRS - список атрибутов, разделённых запятой |
||
59 | </pre> |
||
60 | |||
61 | Примеры: |
||
62 | |||
63 | <pre> |
||
64 | # Нет определённого проекта. Письма ДОЛЖНЫ содержать ключ 'Project': |
||
65 | rdm-mailhandler --url http://redmine.domain.foo --key secret |
||
66 | |||
67 | # Проект и стандартный трекер определены, но письма могут переопределять |
||
68 | # оба атрибута: |
||
69 | rdm-mailhandler --url https://domain.foo/redmine --key secret \\ |
||
70 | --project foo \\ |
||
71 | --tracker bug \\ |
||
72 | --allow-override tracker,priority |
||
73 | </pre> |
||
74 | |||
75 | 2 | Denis Savitskiy | Пример Postfix алиаса (обычно задаётся в @/etc/aliases@): |
76 | 1 | Denis Savitskiy | |
77 | <pre> |
||
78 | foo: "|/путь/к/rdm-mailhandler.rb --url http://redmine.domain --key secret --project foo" |
||
79 | 2 | Denis Savitskiy | </pre> |
80 | 1 | Denis Savitskiy | |
81 | Если ваш домен настроен как виртуальный почтовик (то есть вы используете /etc/postfix/virtual_mailbox_maps для распределения в форме @ user@example.com /path/example.com/user@), вам следует: |
||
82 | |||
83 | * создать маппер в @ /etc/virtual@ как: @ foo@example.org foo@ |
||
84 | 2 | Denis Savitskiy | * изменить @/etc/postfix/main.cf@ для использования транспортного файла: @transport_maps = hash:/etc/postfix/transport@ |
85 | * внутри транспорта добавить строчку такого вида: @ foo@example.org local:@ |
||
86 | 1 | Denis Savitskiy | |
87 | 3 | Denis Savitskiy | *Объяснение:* - Когда вы определяете маршруты виртуального почтовика для домена, как стандартные, что значит - указали алиса в @/etc/postfix/virtual@ даст сбой (сославшись на "unknown user"). Чтобы это решить,нужно переписать стандатрный транспорт, определив внутренний траспорт в запросе к письму(?). |
88 | 1 | Denis Savitskiy | |
89 | 2 | Denis Savitskiy | Front-end для rdm-mailhandler.rb был написан чтобы разрешить указание проектов через часть адреса (name+project@example.com). Смотри [[MailhandlerSubAddress]] |
90 | 1 | Denis Savitskiy | |
91 | 3 | Denis Savitskiy | h3. Получение писем с IMAP сервера |
92 | 1 | Denis Savitskiy | |
93 | 3 | Denis Savitskiy | Rake задача (@redmine:email:receive_imap@) используется для получения входящих сообщений с IMAP сервера. Когда вы запускаете rake команду из cron'а, вы должны добавить ключ @-f /путь/к/директории/redmine/Rakefile@ rake команде, иначе она не будет найдена. Вот пример строки cron файла, которая задаёт получение писем каждые 30 минут: |
94 | 1 | Denis Savitskiy | |
95 | 6 | Denis Savitskiy | <pre> |
96 | 1 | Denis Savitskiy | */30 * * * * redmineuser rake -f /path/to/redmine/appdir/Rakefile redmine:email:receive_imap RAILS_ENV="production" host=imap.foo.bar username=redmine@somenet.foo password=xxx |
97 | 6 | Denis Savitskiy | </pre> |
98 | 1 | Denis Savitskiy | |
99 | 3 | Denis Savitskiy | Если ваши установки работают, но вы также получаете вывод cron daemon'a, вы можете удалить вывод из rake команды добавив ключ "--silent". Это предотвратит отправку сообщений cron'ом при каждом запуске команды. |
100 | 1 | Denis Savitskiy | |
101 | 6 | Denis Savitskiy | <pre> |
102 | 1 | Denis Savitskiy | */30 * * * * redmineuser rake -f /path/to/redmine/appdir/Rakefile --silent redmine:email:receive_imap RAILS_ENV="production" host=imap.foo.bar username=redmine@somenet.foo password=xxx |
103 | 6 | Denis Savitskiy | </pre> |
104 | 1 | Denis Savitskiy | |
105 | The command has to go on a single line in your cronfile. Also see the other examples below, which only show the rake commands without the @-f@ option and without the cron part. |
||
106 | |||
107 | For Windows as server "pycron":http://www.kalab.com/freeware/pycron/pycron.htm can be used to schedule a fetch task. |
||
108 | |||
109 | It can be necessary that you open the firewall on the machine for outgoing TCP connections to IMAP port 143. |
||
110 | |||
111 | Available IMAP options: |
||
112 | <pre> |
||
113 | host=HOST IMAP server host (default: 127.0.0.1) |
||
114 | port=PORT IMAP server port (default: 143) |
||
115 | ssl=SSL Use SSL? (default: false) |
||
116 | username=USERNAME IMAP account |
||
117 | password=PASSWORD IMAP password |
||
118 | folder=FOLDER IMAP folder to read (default: INBOX) |
||
119 | move_on_success=MAILBOX move emails that were successfully received |
||
120 | to MAILBOX instead of deleting them |
||
121 | move_on_failure=MAILBOX move emails that were ignored to MAILBOX |
||
122 | </pre> |
||
123 | |||
124 | Issue attributes control options: |
||
125 | <pre> |
||
126 | project=PROJECT identifier of the target project |
||
127 | tracker=TRACKER name of the target tracker |
||
128 | category=CATEGORY name of the target category |
||
129 | priority=PRIORITY name of the target priority |
||
130 | allow_override=ATTRS allow email content to override attributes |
||
131 | specified by previous options |
||
132 | ATTRS is a comma separated list of attributes |
||
133 | </pre> |
||
134 | |||
135 | Примеры для rake команды: |
||
136 | |||
137 | <pre> |
||
138 | # No project specified. Emails MUST contain the 'Project' keyword: |
||
139 | |||
140 | rake redmine:email:receive_imap RAILS_ENV="production" \\ |
||
141 | host=imap.foo.bar username=redmine@somenet.foo password=xxx |
||
142 | |||
143 | |||
144 | # Fixed project and default tracker specified, but emails can override |
||
145 | # both tracker and priority attributes: |
||
146 | |||
147 | rake redmine:email:receive_imap RAILS_ENV="production" \\ |
||
148 | host=imap.foo.bar username=redmine@somenet.foo password=xxx ssl=1 \\ |
||
149 | project=foo \\ |
||
150 | tracker=bug \\ |
||
151 | allow_override=tracker,priority |
||
152 | |||
153 | # Move successful emails to the 'read' mailbox and failed emails to |
||
154 | # the 'failed' mailbox |
||
155 | |||
156 | rake redmine:email:receive_imap RAILS_ENV="production" \\ |
||
157 | host=imap.foo.bar username=redmine@somenet.foo password=xxx \\ |
||
158 | move_on_success=read move_on_failure=failed |
||
159 | |||
160 | </pre> |
||
161 | |||
162 | |||
163 | Ignored emails are marked as 'Seen' but are not deleted from the IMAP server--these include unknown user, unknown project and emails from the redmine emission account. |
||
164 | |||
165 | The option _allow_override_ is not only for overriding default values given to rake, but for every attribute in a mail. If you want to override the tracker in your mail you have to add _allow_override=tracker_ as parameter. |
||
166 | |||
167 | 4 | Alex Madyarov | h3. Получение писем с POP3 сервера |
168 | 1 | Denis Savitskiy | |
169 | _Only available in trunk and future 1.0._ |
||
170 | |||
171 | A rake task (@redmine:email:receive_pop3@) can be used to fetch incoming emails from a POP3 server. |
||
172 | |||
173 | Доступные опции POP3: |
||
174 | <pre> |
||
175 | host=HOST POP3 server host (default: 127.0.0.1) |
||
176 | port=PORT POP3 server port (default: 110) |
||
177 | username=USERNAME POP3 account |
||
178 | password=PASSWORD POP3 password |
||
179 | apop=1 use APOP authentication (default: false) |
||
180 | delete_unprocessed=1 delete messages that could not be processed |
||
181 | successfully from the server (default |
||
182 | behaviour is to leave them on the server) |
||
183 | </pre> |
||
184 | |||
185 | See the IMAP rake task above for issue attributes control options. |
||
186 | |||
187 | h3. Чтение писем со стандартного ввода |
||
188 | |||
189 | A rake task (@redmine:email:receive@) can be used to read a single raw email from the standard input. |
||
190 | |||
191 | <pre> |
||
192 | Issue attributes control options: |
||
193 | project=PROJECT identifier of the target project |
||
194 | tracker=TRACKER name of the target tracker |
||
195 | category=CATEGORY name of the target category |
||
196 | priority=PRIORITY name of the target priority |
||
197 | allow_override=ATTRS allow email content to override attributes |
||
198 | specified by previous options |
||
199 | ATTRS is a comma separated list of attributes |
||
200 | </pre> |
||
201 | |||
202 | Примеры: |
||
203 | |||
204 | <pre> |
||
205 | # No project specified. Emails MUST contain the 'Project' keyword: |
||
206 | rake redmine:email:read RAILS_ENV="production" < raw_email |
||
207 | |||
208 | # Fixed project and default tracker specified, but emails can override |
||
209 | # both tracker and priority attributes: |
||
210 | rake redmine:email:read RAILS_ENV="production" \\ |
||
211 | project=foo \\ |
||
212 | tracker=bug \\ |
||
213 | allow_override=tracker,priority < raw_email |
||
214 | </pre> |
||
215 | |||
216 | The option _allow_override_ is not only for overriding default values given to rake, but for every attribute in a mail. If you want to override the tracker in your mail you have to add _allow_override=tracker_ as parameter. |
||
217 | |||
218 | h3. Разрешение анонимным пользоваателям создавать задачи с помощью email |
||
219 | |||
220 | In order to enable this option, extra parameters have to be included. |
||
221 | |||
222 | <pre> |
||
223 | unknown_user=ACTION how to handle emails from an unknown user ACTION can be one of the following values: |
||
224 | ignore: email is ignored (default) |
||
225 | accept: accept as anonymous user |
||
226 | create: create a user account |
||
227 | |||
228 | no_permission_check=1 disable permission checking when receiving the email |
||
229 | </pre> |
||
230 | |||
231 | Since version 0.9 project doesn't have to be public, but authentication required in Administration-> Settings->Authentication tab has to be unchecked. |
||
232 | |||
233 | h2. Как это работает |
||
234 | |||
235 | When receiving an email, Redmine uses the From address of the email to find the corresponding user. Emails received from unknown or locked users are ignored. |
||
236 | |||
237 | If the email subject contains something like "Re: *[xxxxxxx !#123]*", the email is processed as a reply and a note is added to issue !#123. Otherwise, a new issue is created. |
||
238 | |||
239 | h3. Target project |
||
240 | |||
241 | The target project can be specified using the @project@ option when receiving emails. This should be the identifier of the project and *not* the name. You can easily find the identifier in the url. |
||
242 | |||
243 | If you don't use this option, users have to specify in the email body which project the issue should be added to. This can be done by inserting a line in the email body like this: @"Project: foo"@. |
||
244 | |||
245 | Пример (тело письма): |
||
246 | |||
247 | <pre> |
||
248 | This is a new issue that will be added to project foo. |
||
249 | Here we have the issue description |
||
250 | [...] |
||
251 | |||
252 | Project: foo |
||
253 | </pre> |
||
254 | |||
255 | You can set a default project using the @project@ option and let users override this default project by using the @allow-override@ option when receiving emails. |
||
256 | Example: |
||
257 | |||
258 | <pre> |
||
259 | # Create issues on project foo by default |
||
260 | rake redmine:email:receive_imap [...] project=foo allow_override=project |
||
261 | </pre> |
||
262 | |||
263 | Of course, user permissions are checked and this email would be ignored if the user who sent this email is not allowed to add issues to project foo. |
||
264 | Make sure that the target project doesn't use *required* custom fields with no default value for its issues, otherwise the creation of the issue will fail. |
||
265 | |||
266 | h3. Параметры задачи |
||
267 | |||
268 | 5 | Alex Madyarov | В зависимости от параметров, которые вы указали при получении почты (see @allow-override@ option), пользователи могут переопределять некоторые атрибуты задачи при обновлении. |
269 | 4 | Alex Madyarov | Это можно сделать использую следующие ключевые слова в теле письма (just like @Project@): @Tracker@, @Category@, @Priority@, @Status@. |
270 | 1 | Denis Savitskiy | |
271 | Пример (тело письма): |
||
272 | |||
273 | <pre> |
||
274 | This is a new issue that overrides a few attributes |
||
275 | [...] |
||
276 | |||
277 | Project: foo |
||
278 | Tracker: Bug |
||
279 | Priority: Urgent |
||
280 | Status: Resolved |
||
281 | </pre> |
||
282 | 4 | Alex Madyarov | |
283 | Корректные значения атрибутов, которые могут быть использованы в параметре allow_override: project, tracker, status, priority, category, assigned_to, fixed_version (aka. Target version), start_date, due_date, estimated_hours, done_ratio. |
||
284 | 1 | Denis Savitskiy | |
285 | h3. Наблюдатели |
||
286 | |||
287 | 3 | Denis Savitskiy | Если пользователь, посылающий сообщение, имеет право на 'Добавление наблюдателей', то пользователи, указанные в полях "Кому" и "Копия" письма, автоматически станут наблюдателями созданной задачи. |
288 | 1 | Denis Savitskiy | |
289 | h3. Формат письма и вложения |
||
290 | |||
291 | 3 | Denis Savitskiy | Redmine пытается использовать текстовую часть письма, чтобы заполнить описание задачи. |
292 | Если получено письмо в формате HTML, то HTML тэги удаляются. |
||
293 | 1 | Denis Savitskiy | |
294 | 7 | Михаил Галац | Вложения автоматически добавляются к задаче, но только если их размер соответствует [[RusRedmineSettings#Максимальный-размер-вложения|максимальному размеру вложения]], который определён в настройках приложения и разрешено расширение файла в настройках. Рекомендуется прописывать разрешенные расширения. |