27.7. Introdução ao mailsync

O mailsync é principalmente adequado para as três tarefas a seguir:

27.7.1. Configuração e uso

O mailsync faz a distinção entre a própria caixa de correio (o armazenamento) e a conexão entre duas caixas de correio (o canal). As definições de armazenamentos e canais estão em ~/.mailsync. Os parágrafos a seguir explicam alguns exemplos de armazenamento.

Uma simples definição pode ser exibida como a seguir:


store saved-messages { 
   pat Mail/saved-messages
prefix  Mail/
}

O Mail/ é um subdiretório do diretório pessoal do usuário que contém pastas de e-mail, incluindo a pasta saved-messages. Se o mailsync for iniciado com mailsync -m saved-messages, ele listará um índice de todas as mensagens em saved-messages. Se a definição a seguir for feita


store localdir { 
pat     Mail/* 
prefix  Mail/ 
} 

o comando mailsync -m localdir listará todas as mensagens armazenadas em Mail/. Em contraste, o comando mailsync localdir relaciona os nomes de pastas. As especificações de um armazenamento em um servidor IMAP são exibidas como a seguir:


store imapinbox {
server {mail.edu.harvard.com/user=gulliver}
ref    {mail.edu.harvard.com}
pat    INBOX 
}

O exemplo acima se refere simplesmente à pasta principal do servidor IMAP. Um armazenamento das subpastas seria exibido da seguinte forma:


store imapdir {
server {mail.edu.harvard.com/user=gulliver}
ref {mail.edu.harvard.com}
pat INBOX.*
prefix  INBOX.
}

Se o servidor IMAP suportar conexões criptografadas, as especificações do servidor devem mudar para


server {mail.edu.harvard.com/ssl/user=gulliver}

ou, se o certificado do servidor não for conhecido, para


server {mail.edu.harvard.com/ssl/novalidate-cert/user=gulliver}

O prefixo será explicado posteriormente.

Agora, as pastas em Mail/ devem ser conectadas aos subdiretórios do servidor IMAP.


channel folder localdir imapdir {
msinfo .mailsync.info
} 

O mailsync usa o arquivo msinfo para manter o rastreamento de mensagens que já tenham sido sincronizadas.

O comando mailsync folder faz o seguinte:

  • Expande a caixa de correio padrão em ambos os lados.

  • Remove o prefixo dos nomes de pasta resultantes.

  • Sincroniza as pastas em pares (ou os cria, caso não existam).

Dessa maneira, a pasta INBOX.sent-mail do servidor IMPA é sincronizada com a pasta local Mail/sent-mail (desde que as definições explicadas acima existam). A sincronização entre a pasta específica é realizada como a seguir:

  • Se uma mensagem já existir em ambos os lados, nada acontecerá.

  • Se a mensagem estiver ausente em um dos lados e for nova (não listada no arquivo msinfo), ela será transmitida aqui.

  • Se a mensagem simplesmente existir em um dos lados e for antiga (já listada no arquivo msinfo), ela será apagada (pois a mensagem que obviamente existia do outro lado foi apagada).

Para saber com antecedência quais mensagens serão transmitidas e quais serão apagadas durante uma sincronização, inicie o mailsync com um canal e um armazenamento com mailsync folder localdir. Esse comando produz uma lista de todas as mensagens novas nos hosts locais, bem como uma lista de todas as mensagens que seriam apagadas no lado do IMAP durante uma sincronização. Da mesma forma, o comando mailsync folder imapdir produz uma lista de todas as mensagens novas no lado do IMAP e uma lista de todas as mensagens que devem ser apagadas do host local durante uma sincronização.

27.7.2. Problemas possíveis

No caso de perda de dados, o método mais seguro é apagar o arquivo de registro do canal relevante msinfo. Conseqüentemente, todas as mensagens que existam somente em um lado serão vistas como novas e, portanto, transmitidas durante a próxima sincronização.

Somente mensagens com um ID são incluídas na sincronização. Mensagens sem ID são simplesmente ignoradas, o que significa que não são transmitidas nem apagadas. Um ID de mensagem ausente normalmente é causado por programas com falhas no envio ou na gravação de uma mensagem.

Em certos servidores IMAP, a pasta principal é chamada de INBOX e as subpastas são chamadas de um nome selecionado ao acaso (em contraste com INBOX e INBOX.name). Portanto, não é possível especificar um padrão exclusivamente para as subpastas dos servidores IMAP.

Depois da transmissão bem-sucedida de mensagens para um servidor IMAP, os drivers da caixa de correio (c-client) usados pelo mailsync definem um flag de status especial. Por essa razão, alguns programas de e-mail, como mutt, não são capazes de reconhecer essas mensagens como novas. Desabilite a configuração desse flag de status especial com a opção -n.

27.7.3. Mais informações

O README in /usr/share/doc/packages/mailsync/, incluído em mailsync, fornece informações adicionais. Nesse contexto, o RFC 2076 “Common Internet Message Headers” é de especial interesse.