Dovecot: clientes de email e pastas duplicadas

2

Portanto, no meu servidor, geralmente estou indo contra um problema, diferentes clientes de e-mail chamam algumas pastas especiais como Sent e Trash nomes diferentes como Sent Items e Deleted Items .

A minha pergunta é, posso de alguma forma "alias" todos esses nomes e mapeá-los internamente para uma mesma pasta Sent no servidor?

Consegui alterar minhas dovecot.conf de seções de inclusão como:

mailbox Sent {
    special_use = \Sent
    auto=subscribe
}

mailbox "Sent Messages" {
    special_use = \Sent
}

mailbox "Sent Items" {
    special_use = \Sent
}

Este é o caminho certo para "consertar" este problema chato? Parece funcionar, pelo menos não há realmente duplicação no servidor, mas alguns clientes de e-mails podem escolher todas as pastas duplicadas.

Obrigado.

    
por TCB13 22.02.2015 / 21:08

2 respostas

2

Você pode usar o plug-in de alias de caixa de correio que exige o Dovecot 2.1.10+ que cria links simbólicos no nível do sistema de arquivos para fornecer um diretório com mais de um nome. Os dois diretórios têm o mesmo conteúdo.

Exemplo de configuração onde Enviado e Lixeira são as caixas de correio reais para os aliases "Itens Enviados" e "Itens Excluídos":

mail_plugins = $mail_plugins mailbox_alias
plugin {
  mailbox_alias_old = Trash
  mailbox_alias_new = Deleted Items
  mailbox_alias_old2 = Sent
  mailbox_alias_new2 = Sent Items
}

Não se esqueça de criar as caixas de correio:

namespace inbox {
  mailbox Sent {
    auto = create # or subscribe
    special_use = \Sent
  }
  mailbox Trash {
    auto = create
    special_use = \Trash
  }
}

A outra possibilidade é criar duas caixas de correio diferentes, como você mencionou, eu copiei uma parte do conf.d/15-mailboxes.conf

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
}

Usando esse método, você tem duas caixas enviadas. Quando o usuário exclui um deles, o outro ainda permanece inalterado.

    
por 22.02.2015 / 21:51
2

Não há necessidade de usar o plugin. Vá para o seu diretório de vmail, por exemplo:

cd /var/vmail/example.com/exampleUser/ 

então, se você quiser, por exemplo, que todas as mensagens armazenadas na pasta "Sent Messages" sejam armazenadas na pasta "Sent" , basta mover os arquivos de "Sent Messages" para "Sent" através de seu cliente como primeiro passo .

Em seguida, na pasta /var/vmail/example.com/exampleUser/mail , remova a pasta "Sent Messages" oculta:

rm -r /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

Antes de enviar qualquer outro email, continue adicionando um link simbólico para a pasta oculta "Sent" de "Sent Messages" (linha longa aqui, se você copiar e colar faça com cuidado):

ln -s /var/vmail/example.com/exampleUser/mail/.Sent /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

Isso deve estar funcionando bem. Apenas repita o mesmo procedimento se você quiser que o "Sent Items" ou "Mail Sent" ou qualquer outra pasta tenha links simbólicos para o "Sent" , ou se você quiser qualquer outra solução com outras pastas apontando para outras pastas e mantenha os e-mails apenas um deles.

Se você precisar tornar o dovecot e o cliente usarem "INBOX" como a pasta "Sent" , você deverá criar o link simbólico da pasta de e-mail com o nome de usuário (linha longa novamente):

ln -s /var/vmail/example.com/exampleUser/mail/ /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

a menos que você não tenha mudado. Em seguida, edite no /etc/dovecot/conf.d/15-mailboxes.conf as linhas:

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
}

ou outro equivalente para torná-los:

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox INBOX {
    special_use = \Sent
  }
  mailbox INBOX {
    special_use = \Sent
  }
}

Como você pode notar, dois são os mesmos agora, então você pode simplesmente deletar um:

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.

  mailbox INBOX {
    special_use = \Sent
  }
}

Então deve funcionar bem. Eu passei por este processo porque queria que meus e-mails enviados estivessem na minha caixa de entrada, tanto do meu laptop quanto do meu telefone. O hack dovecot foi suficiente para o laptop, mas o telefone continuou usando a pasta "Sent Messages" , então eu tive que usar o truque do symlink. Tenha muito cuidado ao selecionar o% correto"Sent" ou "Sent Messages" ou qualquer pasta para fazer o link simbólico de e para!

Eu acho que o plugin simplesmente faz um link simbólico em si, então você está apenas fazendo coisas parecidas. Com essa técnica, você pode mesclar todas as pastas desejadas e manter seus clientes funcionando sem alterações. : -)

    
por 15.06.2015 / 06:48