KernelNewbiesRU:

Конфигурация почты

При наличии должной настройки, МойнМойн предоставляет два сервиса, связанных с электронной почтой: посылка почтовых сообщений и их приём. Обе возможности освещены на данной странице.

Отправка почтовых сообщений

Зачастую конфигурирование почты требуется именно для рассылки сообщений, что может использоваться в следующих случаях:

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

Пользователи могут подписываться на изменения страниц, путём вызова соответствующего действия (используя значок и ссылку «Subscribe» на панели действий) или отредактировав список регулярных выражений страниц на странице «Notification» настроек (подробнее см. ПомощьПоПодписке). После этого, при изменении страницы, подписавшимся на неё пользователям будут высылаться почтовые оповещения с информацией об автора, ссылкой на страницу и информацией об изменениях (diff). Автор не оповещается о изменениях, сделанных им самим.

Для настройки отправки сообщений необходимо задать следующие параметры конфигурации в wikiconfig.py (в комментарии на данной странице также присутствует сгенерированная информация о переменных конфигурации, которая может оказаться более актуальной):

Имя параметра

Значение по умолчанию

Описание

mail_from

None

Значение SMTP-заголовка From:, указываемое в рассылаемых письмах, например mail_from = u'Подсистема уведомлений вики <noreply@example.com>'. [строка Юникод]

mail_login

None

Строка SMTP-авторизации вида «пользователь пароль», если необходимо использовать SMTP AUTH

mail_smarthost

None

Адрес IPv4 или имя сервера SMTP (с суффиксом :порт, если необходимо, значение по умолчанию — 25). Возможности МойнМойн по работе с почтой активируются только в случае, если данный параметр задан.

mail_sendmail

None

Если в значении данного параметра указан путь к MTA, например '/usr/sbin/sendmail -t -i', то данная команда используется для отправки почты. По умолчанию отправка почты выполняется средствами МойнМойн по протоколу SMTP.

Для включения поддержки отправки сообщений, необходимо указать значение поля From: в параметре «mail_from». Кроме того, необходимо указать транспорт: или по SMTP (при этом необходимо указать значение параметра «mail_smarthost») или при помощи Sendmail (в этом случае необходимо задать значение параметра «mail_sendmail»). Если используется «mail_smarthost» и сервер запрашивает авторизацию, то необходимо также корректно задать значение параметра «mail_login».

mail_from

Данный параметр конфигурации используется для заголовков «From:» и «To:» в отправляемых почтовых сообщениях (для поля «To:» данное значение используется используется в целях безопасности — почтовые сообщения посылаются не по этому адресу, оно предназначено для сокрытия адресов получателей). Данный адрес также указывается как отправитель письма, посему он должен быть валиден, дабы почтовые сообщения от вики не блокировались спам-фильтрами.

mail_login

Данный параметр необходим только при использовании mail_smarthost и при запросе SMTP_AUTH со стороны сервера для отправки почты; в этом случае, в качестве значения данного параметра необходимо указать имя пользователя и пароль, разделённые пробелом, например, mail_login = "имя пароль".

mail_smarthost

В случае использования внешнего FOLDOC:SMTP-сервера в данном параметре указывается его IP или доменное имя; на машинах с UNIX-подобными ОС обычно можно попробовать указать localhost (ввиду частого наличия настроенного SMTP-сервера на оных); на компьютере под управлением Windows это обычно машина в локальной сети или у провайдера.

mail_sendmail

Локальная команда для отправки сообщения. Например, если указать в качестве значения данного параметра «/usr/sbin/sendmail -t -i», то для отправки почтовых сообщений будет использоваться Sendmail. Данная возможность обычно используется на машинах с установленным MTA.

Получение почты

МойнМойн может обрабатывать входящие почтовые сообщения. Для отправки сообщения вики достаточно знать её почтовой адрес. При указании имени страницы в поле To: перед почтовым адресом (например, указав «СтраницаВики <wiki@example.com>»), содержимое письма будет сохранено на вики с данным именем.

Для получения возможности импортирования почтовых сообщений в вики под управлением МойнМойн, то есть, для возможности получения и сохранения почтовых сообщений в вики, необходимо произвести ряд настроек.

Сначала необходимо указать почтовому серверу (или программе, обрабатывающей входящую почту, например, procmail), что он должен перенаправлять каждое новое входящее письмо в МойнМойн. Команда для импорта сообщения — moin xmlrpc mailimport. Также, возможно, потребуется указать параметр --config /путь/к/файлам/конфигурации для указания месторасположения каталога с конфигурацией необходимого экземпляра вики. Также в данный каталог необходимо поместить файл mailimportconf.py.

Далее, необходимо должным образом сконфигурировать экземпляр вики. Для этого предназначены следующие параметры конфигурации:

Имя параметра

Значение по умолчанию

Описание

mail_import_wiki_addrs

[]

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

mail_import_pagename_envelope

u"%s"

Описание см. ниже.

mail_import_subpage_template

u"$from-$date-$subject"

Используемый при импорте в вики шаблон имени страницы, куда будет помещено содержимое письма.

mail_import_pagename_search

['subject', 'to', ]

Какие поля и в каком порядке просматриваются для поиска имени импортируемой страницы.

mail_import_pagename_regex

r'\[\[([^"]*)\]\]'

Описание см. ниже.

secrets или secrets["xmlrpc/ProcessMail"]

""

Ключевая фраза, должна совпадать с фразой, указанной в mailimportconf.py.

mail_impot_wiki_addrs

Список почтовых адресов получателей, письма для которых должны импортироваться на вики. МойнМойн ищет эти адреса при определении имени импортируемой страницы, и они должны совпадать с адресом, известному почтовому серверу. Если в процессе доставки писем используется механизм пересылки («forwarding»), то рекомендуется помещать почтовый адрес, который пользователи используют для отправки писем на вики, первым в списке пересылки и все остальные адреса после него.

mail_import_pagename_envelope

Указывает формат результирующего имени страницы, полученного из письма. Значение по умолчанию, «u"%s"», указывает использовать имя страницы как есть. Если указать в качестве значения, например, «u"+ %s/"», то перед тем именем страницы, что было извлечено из письма, будут добавлены плюс и пробел, а после — косая черта. Это позволяет не указывать пользователям сии символы, в случае, если необходимо, чтобы вызывалось поведение, с ними связанное.

mail_import_subpage_template
Шаблон для генерации имени импортируемой страницы. См. ниже список возможных для использования переменных.
mail_import_pagename_search

Какие заголовки (и в каком порядке) пришедшего письма просматривать в поисках имени страницы. При использовании значения по умолчанию — ['subject', 'to'] — поиск совершается сначала в теме письма, и, если там ничего не найдено, продолжается в именах получателей письма.

mail_import_pagename_regex

Шаблон (регулярное выражение), в соответствии с которым осуществляется поиск целевого имени страницы в заголовках пришедшего письма. Значение по умолчанию, r'\[\[([^"]*)\]\]', осуществляет поиск строки, ограниченной двумя парами квадратных скобок, например, [[ИмяСтраницы]] (по аналогии с синтаксисом свободных ссылок).

mail_import_secret

Ключевая строка, которая должна совпадать в конфигурации вики и файле mailimportconf.py. Необходима для аутентификации скрипта экземпляром вики.

mail_import_url

Ссылка на интерфейс XML RPC экземпляра вики для импорта почтовых сообщений. Адрес состоит из адреса вики и параметра запроса ?action=xmlrpc2. Пример (также см. демонстрационную конфигурацию в каталоге wiki/config дистрибутива МойнМойн):

   1 # Ключевая строка, известная вики-серверу
   2 mail_import_secret = u"не_следует_выбирать_слишком_короткую_ключевую_строку_так_как_в_этом_случае_работать_не_будет"
   3 
   4 # Адрес для импортирования почтовых сообщений
   5 mail_import_url = u"http://localhost:81/?action=xmlrpc2"

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

Поле «From:»

Проверяется, указан ли в поле «From:» корректный пользователь вики. Естественно, это не обеспечивает какую-либо надёжность, но лучше, чем ничего.

При создании таблицы анализа сообщения, часть поля «From:» с почтовым адресом используется для поиска учётной записи пользователя вики, которому данный адрес принадлежит. В случае, если таковой находится, его домашняя страница связывается с колонкой «From:» таблицы. Если же подходящей учётной записи не находится, используется часть поля «From:» с именем отправителя.

Поля «To:», «Cc:»

Поле «To:» обычно состоит из двух частей, вида «Шаблон <wiki@example.org>». Часть поля с именем получателя используется для формирования шаблона целевого имени страницы (оно может содержать специальные, проблельные символы, и др.) и часть с адресом для доставки до нужной цели. Простейшая форма шаблона имени страницы — просто имя, например, ВикиПесочница.

See the example for the 2 different modes of operation.
When we create a mail overview table, we process To: and Cc: for the To: column in the same way we do it for the From: column (see above). We do not include the address of the wiki server (and if we only have the wiki server email, we just display "-").
Subject
The page name template can also be extracted (and also removed) from the first occurance of mail_import_pagename_regex within the subject.

Examples:

Subj: [[TargetPageName]] will work if you put it either at the beginning or the end of the subject.
Subject: bla bla bla [[PageName/$date]]

The text of mails with such subject will be added to the pages

TargetPageName
or
PageName/2006-07-20T14:48:27

The full subject will also be used to build the change comment, prefixed with "Mail: "; variables are not replaced there.

Mail body

The new page content is made from old page content (if any) plus the content of the email appended at the end. Page content will never get overwritten. Mails that are sent as alternative are shown with their HTML body on the page which is processed by a HTML parser.

E-Mail attachments will get put into page attachments under the page where the content will be put. Attachments will never get overwritten. The attachments will be linked from the content page (e.g. from a list of attachments at the end).
Generated content

If requested by a leading +-sign (e.g. + PageName/), Moin adds a table item to the parent page listing details about the e-mail.

Pagename generation

The placeholders $from (containing the name of the sender), $date (the date) and $subject (subject line) are supported.

The pagename is generated like explained below:
  1. Check if one of the mail target addresses (to, cc, ...) is in mail_import_wiki_addrs
  2. Process TO/SUBJECT in order as given by mail_import_pagename_search until we have found a pagename or have to give up:
    • Try to get the pagename template from the target addrs, or
    • Try to extract the pagename from the subject (explained above).
  3. If we didn't find a pagename, use mail_import_subpage_template as last resort.
  4. Apply mail_import_pagename_envelope to (optionally) extend the pagename.
  5. If the pagename ends with a slash, append the configuration setting email_subpage_template (see above) to the pagename.

  6. Expand the pagename template to get the actual pagename.