Dovecot: clientes de e-mail e pastas duplicadas

Dovecot: clientes de e-mail e pastas duplicadas

Então, no meu servidor, geralmente enfrento um problema, diferentes clientes de e-mail chamam algumas pastas especiais como Sente Trashnomes diferentes como Sent Itemse Deleted Items.

Minha pergunta é: posso de alguma forma "alias" todos esses nomes e mapeá-los internamente para uma mesma Sentpasta no servidor?

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

mailbox Sent {
    special_use = \Sent
    auto=subscribe
}

mailbox "Sent Messages" {
    special_use = \Sent
}

mailbox "Sent Items" {
    special_use = \Sent
}

Esta é a maneira certa de "consertar" esse problema irritante? Parece funcionar, pelo menos não há duplicação no servidor, mas alguns clientes de e-mail podem escolher todas as pastas duplicadas.

Obrigado.

Responder1

Você pode usar oPlug-in de alias de caixa de correioexigindo 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 ondeEnviadoeLixosã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, copiei uma parteconf.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 este método, você tem duas caixas de envio diferentes. Quando o usuário exclui um deles, o outro permanece inalterado.

Responder2

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

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

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

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

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

Antes de enviar qualquer outro e-mail, adicione um link simbólico à pasta oculta "Sent"de "Sent Messages"(linha longa aqui, se você copiar e colar, faça-o com cuidado):

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

Isso deve estar funcionando bem. Basta repetir o mesmo procedimento se quiser ter a "Sent Items"ou "Mail Sent"qualquer outra pasta vinculada simbolicamente a aquela "Sent", ou se quiser qualquer outra solução com outras pastas apontando para outras pastas e manter os e-mails em apenas uma delas.

Se você precisar fazer o dovecot e o cliente usar "INBOX"como "Sent"pasta, você deve criar o link simbólico da pasta de correio 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 nas /etc/dovecot/conf.d/15-mailboxes.conflinhas:

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 iguais agora, então você pode excluir apenas 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. Passei por esse processo porque queria que meus e-mails enviados estivessem na pasta da caixa de entrada do meu laptop e do meu telefone. O hack do dovecot foi suficiente para o laptop, mas o telefone continuou usando a "Sent Messages"pasta, então tive que usar o truque do link simbólico. Tenha muito cuidado ao selecionar a pasta certa "Sent"ou "Sent Messages"qualquer outra pasta para fazer o link simbólico!

Eu acho que o plugin simplesmente cria um link simbólico, então você está apenas fazendo coisas semelhantes. Com esta técnica você pode mesclar todas as pastas que desejar e manter seus clientes trabalhando sem alterações. :-)

informação relacionada