Dovecot: entrega a resposta na mesma pasta que a mensagem respondida

2

UPDATE (2 de setembro de 2014, 13:01): Só para esclarecer, estou interessado em lidar com uma resposta recebida de outra pessoa, entrando via SMTP. Se for uma resposta a um e-mail que já está em alguma pasta de e-mail, ele também deverá estar armazenado nessa pasta.

Eu tenho uma configuração de Postfix (SMTP) + Dovecot (IMAP), com meu diretório / home / sybren / Maildir armazenando meu email. Eu tenho um filtro de peneira para garantir que o meu email de trabalho acabe na pasta IMAP "work". Minha estrutura de pastas IMAP é bastante extensa, com várias subpastas, digamos work/research/subject1 , work/research/subject2 , work/education/subject3 , etc.

Como exemplo, digamos que eu envie um email para meus colegas com o assunto "AAAAAA". Depois de enviá-lo, movo-o para a pasta work/research/subject1 . Agora eu gostaria que suas respostas "Re: AAAAAA" fossem armazenadas em work/research/subject1 também, por Dovecot.

O e-mail é passado do Postfix para o Dovecot usando essa configuração no main.cf (tudo em uma linha)

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

Meu arquivo main.sieve agora contém regras simples como:

require ["fileinto"];

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

UPDATE 2 (2 de setembro de 2014, 15:16): Este é o "fluxo" que gostaria de ver para um email recebido:

  1. O postfix recebe o email via SMTP.
  2. O Postfix executa a verificação de spam / vírus.
  3. O postfix entrega o e-mail ao Dovecot para entrega.
  4. O Dovecot inspeciona algum banco de dados de ID de mensagem para mapeamentos de pastas de correio.
  5. Se o ID da mensagem In-Reply-To for encontrado, entregue na pasta de correspondência correspondente.
  6. Se não, use o script do Sieve para determinar o local apropriado.

É claro que as duas últimas etapas poderiam, teoricamente, fazer parte do mesmo script do Sieve.

Espero que alguém possa me ajudar!

Felicidades,

Sybren

    
por dr. Sybren 01.09.2014 / 11:02

3 respostas

1

Existe uma funcionalidade especial IMAP-threads destinada exatamente para essa finalidade. link Os modernos servidores IMAP, incluindo o dovecot, já o possuem. Quando a caixa de correio está no formato maildir , é construído um índice especial que conta com o ID da mensagem. Quando você responde na mensagem, o ID original é armazenado nos cabeçalhos In-Reply-To: e References: . Assim, o servidor IMAP pode recuperar facilmente todas as mensagens no encadeamento e exibi-las sequencialmente, apesar da localização real.

Portanto, você só precisa garantir que seu MUA esteja configurado para usar o encadeamento.

Alguns MUAs como o RoundCube podem ativar / desativar o encadeamento para cada pasta maildir separadamente. Alguns outros simplesmente ligam / desligam globalmente.

    
por 01.09.2014 / 11:42
1

Seu servidor IMAP (ou seja, Dovecot) não é responsável por decidir onde armazenar um email. Seu cliente de e-mail (que pode ser webmail ou software para desktop / celular) copia o e-mail para uma pasta de sua escolha. É improvável que a peneira esteja envolvida.

Para email do MTA, o MTA geralmente passa o email para a peneira, que então o coloca na pasta imap apropriada (provavelmente por meio do script de entrega do postfix, embora não através da interface imap). Quando o e-mail chega via IMAP, ele geralmente é armazenado, não passado para o Sieve.

Os plugins Dovecot podem interceptar eventos IMAP e reagir a eles. Em teoria, um plug-in dovecot pode rastrear quando você move mensagens para uma pasta diferente e mantém informações sobre elas que podem ser usadas durante a entrega de emails. Não tenho conhecimento de nenhum projeto desse tipo.

Eu suspeito que a semântica do que deveria acontecer em tal sistema pode se tornar complexa e ambígua o suficiente para causar perda de e-mails e confusão do usuário. Seria bom ter um sistema inteligente sugerindo onde eu gostaria de enviar um e-mail para que seja mais fácil de fazer, mas acho que não quero que isso aconteça automaticamente.

A coisa mais próxima que eu posso pensar que é realmente implementada é que eu ouvi falar de um filtro bayesiano sendo treinado para selecionar uma caixa de correio para arquivar novas mensagens com base em exemplos de treinamento do usuário. Parece legal, mas, novamente, espero que a confusão de até mesmo uma pequena proporção de e-mail mal colocado não valha a pena. Eu esqueço o nome da ferramenta.

É mais plausível que o software MUA tenha um recurso em que suas respostas sejam arquivadas na mesma pasta da mensagem à qual você está respondendo. Por exemplo. esta é uma opção no Thunderbird. A semântica é muito mais clara neste caso.

    
por 01.09.2014 / 13:07
0

Eu não acho que você pode server-side.

Normalmente, o armazenamento de uma cópia das mensagens enviadas é feito pelo programa cliente de e-mail. Alguns clientes têm uma opção "salvar respostas com a mensagem original" ou similar em vez de armazenar todas as respostas em uma única pasta "Itens Enviados".

Na maioria dos casos, o comportamento padrão do cliente será usar a conexão IMAP para colocar a sua cópia da resposta diretamente nos "Itens Enviados" ou em outra pasta IMAP selecionada para essa finalidade. Isso significa que essas respostas não passam pelo Dovecot Local Delivery Agent nem por qualquer regra de filtragem que os emails normalmente transmitam quando chegam via SMTP.

Às vezes, seu cliente de e-mail terá a opção de sempre enviar um "Bcc:" para enviar uma cópia da mensagem para sua própria caixa de correio, em vez de armazená-la no IMAP. Nesse caso, sua resposta virá através do Dovecot LDA e dos filtros de mensagens que você configurou, embora isso possa exigir a alteração de suas regras, porque, por exemplo, em vez de corresponder ao remetente, você precisaria filtrar o destinatário.

A maioria dos clientes mais avançados simplesmente não se importa em qual pasta seus itens enviados estão realmente armazenados e simplesmente tentará gerar uma visualização com o segmento de conversação completo.

    
por 01.09.2014 / 12:38