Назад | Перейти на главную страницу

Dovecot: доставить ответ в ту же папку, что и ответное сообщение

ОБНОВИТЬ (2 сентября 2014 г., 13:01): Чтобы уточнить, я заинтересован в обработке входящий ответ от кого-то еще, так что пришел через SMTP. Если это ответ на электронное письмо, которое уже находится в какой-либо почтовой папке, его также следует сохранить в этой папке.

У меня есть установка Postfix (SMTP) + Dovecot (IMAP), в моем каталоге / home / sybren / Maildir хранится моя почта. У меня есть фильтр Sieve, чтобы моя рабочая электронная почта попала в «рабочую» папку IMAP. Моя структура папок IMAP довольно обширна, с несколькими подпапками, скажем, work/research/subject1, work/research/subject2, work/education/subject3, и т.д.

В качестве примера предположим, что я отправляю своим коллегам электронное письмо с темой «AAAAAA». После отправки перемещаю в папку work/research/subject1. Теперь я бы хотел, чтобы их ответы "Re: AAAAAA" хранились в work/research/subject1 тоже от Dovecot.

Электронная почта передается из Postfix в Dovecot с использованием этого параметра в main.cf (все в одной строке)

mailbox_command = /usr/lib/dovecot/deliver -c 
                        /etc/dovecot/dovecot.conf -m "${EXTENSION}"

Мой файл main.sieve теперь содержит простые правила, например:

require ["fileinto"];

if header :contains ["To", "Cc", "Bcc", "From"] "@work.nl" {
    fileinto "work";
}

ОБНОВЛЕНИЕ 2 (2 сентября 2014 г., 15:16): Это «поток», который я хотел бы видеть для входящего электронного письма:

  1. Postfix получает электронное письмо через SMTP.
  2. Postfix выполняет сканирование на спам / вирусы.
  3. Postfix передает почту Dovecot для доставки.
  4. Dovecot проверяет некоторую базу данных идентификаторов сообщений для сопоставления почтовых папок.
  5. Если ID сообщения In-Reply-To найден, доставьте его в соответствующую почтовую папку.
  6. Если нет, используйте сценарий Sieve для определения подходящего местоположения.

Конечно, теоретически последние два шага могут быть частью одного и того же скрипта Sieve.

Я надеюсь, что кто-нибудь сможет мне помочь!

Привет,

Sybren

Есть особый функционал IMAP-threads предназначено именно для этой цели. http://tools.ietf.org/html/rfc5256 Современные серверы IMAP, включая dovecot, уже имеют его. Когда почтовый ящик находится в maildir format создается специальный индекс, который рассчитывает на идентификатор сообщения. Когда вы отвечаете на сообщение, исходный идентификатор сохраняется в заголовках. In-Reply-To: и References:. Таким образом, IMAP-сервер может легко получать все сообщения в цепочке и отображать их последовательно независимо от фактического местоположения.

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

Некоторые MUA, такие как RoundCube, могут включать / выключать потоки для каждой папки maildir отдельно. Некоторые другие просто включают / выключают его глобально.

Ваш IMAP-сервер (т.е. Dovecot) не несет ответственности за решение, где хранить электронную почту. Ваш почтовый клиент (который может быть веб-почтой или настольным / мобильным программным обеспечением) копирует электронное письмо в папку по своему выбору. Сито вряд ли будет задействовано.

Для почты от MTA MTA обычно передает почту на сито, которое затем помещает ее в соответствующую папку imap (возможно, через сценарий доставки postfix, но не через интерфейс imap). Когда почта приходит через IMAP, она обычно просто сохраняется, а не передается в Sieve.

Плагины Dovecot могут перехватывать события IMAP и реагировать на них. Теоретически плагин dovecot может отслеживать, когда вы перемещаете сообщения в другую папку, и сохранять информацию о них, которую можно использовать во время доставки электронной почты. Я не знаю ни одного такого проекта.

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

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

Для программного обеспечения MUA более правдоподобно иметь функцию, при которой ваши ответы помещаются в ту же папку, что и сообщение, на которое вы отвечаете. Например. это вариант в Thunderbird. В этом случае семантика намного яснее.

Я не думаю, что вы можете делать это на стороне сервера.

Обычно копии отправленных сообщений сохраняются программой-клиентом электронной почты. У некоторых клиентов есть возможность "сохранить ответы с исходным сообщением" или что-то подобное вместо того, чтобы хранить все ответы в одной папке «Отправленные».

В большинстве случаев поведение клиента по умолчанию будет заключаться в использовании IMAP-соединения для помещения вашей копии ответа непосредственно в «Отправленные» или другую папку IMAP, выбранную вами для этой цели. Это означает, что эти ответы не проходят ни через Dovecot Local Delivery Agent, ни через какие-либо правила фильтрации, которые обычно проходят через электронную почту, когда они приходят по SMTP.

Иногда в вашем почтовом клиенте есть возможность всегда отправляйте "Скрытую копию:" чтобы отправить копию сообщения в свой почтовый ящик, вместо того, чтобы хранить эту копию по IMAP. В этом случае ваш ответ будет поступать через Dovecot LDA и фильтры сообщений, которые вы настроили, хотя для этого может потребоваться изменение ваших правил, потому что, например, вместо сопоставления отправителя вам нужно будет фильтровать получателя.

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