Instalar e usar
o MBSRS.
Mailbox Backup, Synchronization & Recovery System
Cópia e sincronização de mailboxes cPanel para um destino escolhido pelo administrador, com histórico de alterações e recuperação de transferências interrompidas.
O armazenamento é fornecido por ti: disco local ou servidor SFTP. O MBSRS não inclui espaço cloud gerido pela Mailurity. Não precisas de Protect para usar backups, nem de ligar o agente ao painel para fazer cópias. Os plugins cPanel/WHM continuam em preparação.
Instalação guiada
Um comando no terminal da conta cPanel que contém as mailboxes.
curl -fsSL https://mbsrs.mailurity.com/install.sh | bash
O assistente usa o username da conta cPanel como ORG e pede destino, autenticação, pasta do arquivo e mailboxes a incluir. Guarda a configuração, testa a ligação, inicializa o destino, mostra o plano e pede confirmação para a primeira cópia e verificação SHA256. O cron só é instalado após sucesso.
- Executa na conta de origem. Usa as permissões da própria conta, sem root.
-
Escolhe uma pasta privada. O padrão é
~/mbsrs, fora demail/e de todos os DocumentRoots. - Confirma a identidade SFTP. Compara as fingerprints apresentadas com uma fonte independente do fornecedor.
-
Revê o plano e a primeira cópia. Se houver falha, corrige a causa e
retoma com
~/mbsrs/mbsrs setup.
Escolher outra pasta ou indicar um DocumentRoot personalizado
Descarrega o instalador e passa os caminhos explicitamente.
--document-root pode ser repetido.
curl -fsSL https://mbsrs.mailurity.com/install.sh -o "$HOME/mbsrs-install.sh"
bash "$HOME/mbsrs-install.sh" \
--prefix "$HOME/mbsrs" \
--document-root "$HOME/site.example/public_html"
O instalador rejeita sobreposição com ~/mail e
~/public_html. Os outros DocumentRoots precisam de ser confirmados no
cPanel e indicados pelo administrador. O prefixo deve estar dentro do HOME, sem
espaços, metacaracteres ou symlinks.
Instalar só o código ou automatizar a configuração
bash "$HOME/mbsrs-install.sh" --download-only
~/mbsrs/mbsrs setup
--download-only não liga ao destino nem altera o cron. Para configuração
sem interação, fornece uma configuração própria e credenciais/known_hosts já
preparados:
bash "$HOME/mbsrs-install.sh" \
--config "$HOME/private/mbsrs.conf" \
--non-interactive \
--no-cron
--non-interactive autoriza a primeira cópia e a verificação sem
perguntas. Usa caminhos absolutos para credenciais e known_hosts.
--no-cron permite configurar o agendamento depois.
Ligação opcional e gratuita ao painel
O MBSRS funciona autonomamente. Ligar ao painel permite acompanhar os relatórios das tuas instalações por organização.
A partir de 1.0.12, o assistente pergunta se pretendes ligar a instalação. A resposta predefinida é não. Para ligar, abre a organização correta na portal MBSRS e gera um código de ligação para essa conta.
Copia o código, responde sim no assistente e cola-o quando for pedido. A entrada fica oculta no terminal. Não coloques o código em argumentos de comandos, URLs ou pedidos de suporte. O convite pode ser usado durante 24 horas; a ligação criada continua válida depois desse prazo. Usa um convite diferente por instalação.
Se preferires ligar depois, usa a mesma conta cPanel:
~/mbsrs/mbsrs monitor-enroll
~/mbsrs/mbsrs monitor-status
Para automação e versões anteriores, mantém-se o convite JSON: guarda-o fora de public_html com permissões 0600 e usa monitor-enroll --config /caminho/convite.json. O modo não interativo não pede códigos. O código inclui o destino do painel e um convite temporário; não é uma chave permanente.
O MBSRS envia por HTTPS estados, datas, versão, âmbito, contagens e resultado da verificação. O registo identifica o servidor e a conta. Não envia conteúdo de email, listas de mailboxes ou credenciais SFTP à app. O painel guarda os relatórios e histórico; não executa comandos na conta. Se a comunicação falhar, os relatórios ficam em fila local e a cópia mantém o seu funcionamento independente.
As organizações e os convites de desenvolvimento e produção são separados. Usa um convite do painel onde pretendes consultar a instalação. A ligação ao painel não comprova recuperação; valida o backup e um restauro isolado.
Escolher a raiz e a pasta do arquivo
A raiz SFTP visível e a pasta do arquivo são escolhas separadas.
Se a conta SFTP já entra em /…/mbsrs, usa . como raiz e
escolhe apenas a subpasta desejada:
ORG=cpanel-user
REMOTE_ROOT=.
ARCHIVE_PATH=domain.example
Não é acrescentada outra pasta mbsrs, mailsync ou
ORG. Podes usar uma estrutura como clients/domain.example. O
valor de ORG identifica a origem e não precisa de ser o nome da pasta.
| Campo | Significado |
|---|---|
REMOTE_ROOT=. |
Usa a pasta inicial após login SFTP. |
REMOTE_ROOT=/ |
Usa a raiz visível à conta SFTP, que pode ser um chroot. |
ARCHIVE_PATH=clients/domain.example |
Guarda o arquivo numa subpasta relativa à raiz. |
ARCHIVE_PATH=. |
Usa diretamente a raiz escolhida; deve estar vazia ou identificada para este arquivo. |
ARCHIVE_PATH=auto |
Compatibilidade com a estrutura anterior <root>/<ORG>.
|
Dentro de mail/, preserva-se a hierarquia das mailboxes selecionadas.
history/ e .mbsrs/ fazem parte do formato interno. Para disco
local, o administrador define LOCAL_ROOT, LOCAL_MOUNT e o UUID
real; ARCHIVE_PATH tem o mesmo significado.
Uma pasta privada por instalação
mbsrs/
├── mbsrs # lançador estável
├── config/ # configuração, seleção e credenciais
├── state/ # instalação, updates e backups de cron
├── logs/ # relatórios e logs diários
├── releases/ # versões do código
└── current # referência para a versão ativa
| Opção | Comportamento |
|---|---|
SOURCE=auto |
Lê ~/mail da conta que executa. |
SCOPE=partial |
Inclui os pares domínio/mailbox da lista selecionada. |
SCOPE=full |
Percorre toda a pasta de origem. |
DOVECOT_INDEXES=skip |
Exclui índices reconstruíveis em Maildir reconhecida. include mantém cópia estrita. Instalações existentes sem este campo usam skip. |
AUTH=password |
Password privada em texto simples, modo 600. |
AUTH=key |
Chave provisionada pelo administrador, utilizável pelo cron sem interação. |
Retirar uma mailbox da seleção não remove a sua cópia anterior. Para isolamento entre clientes, usa credenciais SFTP com permissões próprias no servidor; nomes de pastas diferentes não substituem controlo de acesso.
Invoca o lançador ~/mbsrs/mbsrs, em vez de ficheiros dentro de
current/. Mantém-se um lock comum em
~/.local/state/mail-export/export.lock para impedir execuções simultâneas da
mesma conta.
Planear, copiar e verificar
~/mbsrs/mbsrs status
~/mbsrs/mbsrs preflight
~/mbsrs/mbsrs dry-run
~/mbsrs/mbsrs run
~/mbsrs/mbsrs verify
dry-run mostra ficheiros novos, substituídos e desaparecidos sem escrever
no destino. run copia as alterações e guarda versões anteriores no
histórico. verify compara SHA256 dos conteúdos selecionados, lendo a origem
e o destino.
A comparação normal usa tamanho e mtime em segundos. Alterações com ambos iguais exigem
verify. Mailboxes ativas podem mudar durante a verificação; escolhe uma
janela calma e considera o tráfego e I/O envolvidos.
Ativar e confirmar o cron
~/mbsrs/mbsrs cron-install
crontab -l
# Após 10–15 minutos:
tail -n 100 "$HOME/mbsrs/logs/cron/$(date +%F).log"
O cron corre a cada 10 minutos, após uma execução real bem-sucedida com a configuração
atual. Confirma o primeiro [OK] Sync complete. Execuções de cron
sobrepostas são ignoradas; isso não equivale a uma nova cópia concluída.
Deteção automática, instalação manual
~/mbsrs/mbsrs check-update
~/mbsrs/mbsrs update
~/mbsrs/mbsrs version
O MBSRS consulta releases até uma vez por dia durante operação, autenticação, status ou
cron. Uma falha nessa consulta não impede a cópia. Instala uma nova versão apenas quando
executas update.
O update verifica a assinatura RSA/SHA256 e a integridade do pacote, prepara o código separadamente, espera até 120 segundos por uma execução ativa, valida a configuração e troca a versão ativa atomicamente. A sequência de releases é independente da versão pública.
Consulta a versão disponível no manifesto oficial de releases. Usa o lançador existente para atualizar, mantendo configuração, credenciais e histórico.
Rollback do código
~/mbsrs/mbsrs rollback
A versão anterior é conservada. Antes da troca, o MBSRS confirma se aceita a configuração atual. Se houver incompatibilidade, mantém o código ativo. O rollback não desfaz sincronizações nem restaura emails.
Endereço de distribuição
Uma release assinada pode indicar um novo endereço de distribuição. O update aplica-o e comandos posteriores reconciliam o endereço a partir dos metadados assinados. O domínio anterior precisa de permanecer acessível durante a transição, para instalações que ainda não atualizaram.
Recuperar uma transferência e restaurar emails
Transferência interrompida
~/mbsrs/mbsrs recover
~/mbsrs/mbsrs dry-run
~/mbsrs/mbsrs run
recover termina a recuperação de um lote pendente. run também
recupera antes de criar um novo plano. dry-run e
verify recusam transações pendentes. Não apagues manualmente
.mbsrs/transaction/.
| Pasta | Conteúdo |
|---|---|
mail/ |
Cópia atual das mailboxes selecionadas. |
history/replaced/ |
Versões de ficheiros substituídos. |
history/deleted/ |
Ficheiros que desapareceram da origem. |
history/incomplete/ |
Dados de lotes que não chegaram a ser publicados. |
Exportar a cópia atual para um ensaio
Na versão 1.0.18 ou posterior, executa na conta de origem:
~/mbsrs/mbsrs restore-export --destination "$HOME/mbsrs-restore-check"A pasta de destino não pode existir. A pasta superior deve existir e ser privada, fora dos diretórios públicos e das mailboxes. O comando lê o arquivo atual da seleção configurada, exporta para mail/ e compara os bytes por SHA256. Não escreve na origem nem no arquivo. A exportação usa o bloqueio da conta para impedir uma cópia em simultâneo.
Consulta o receipt.json: só verified_export confirma a conclusão da exportação verificada. Os estados failed e incomplete indicam que o processo não terminou com sucesso. Conserva os recibos e o manifest.jsonl em privado. Se precisares de repetir, escolhe outra pasta nova.
Em 1.0.19, a exportação SFTP usa duas ligações de leitura e uma de inventário. Podes reduzir para uma leitura com --connections 1. Confirma os limites do servidor antes de aumentar o paralelismo.
Validar o restauro
O restauro é conduzido pelo administrador. Seleciona a geração necessária, trabalha primeiro numa cópia isolada e valida a importação no ambiente Dovecot antes de repor numa mailbox real. O MBSRS não preserva ownership/permissões da origem nem faz um restauro automático. Depois da importação isolada, verifica por IMAP as mensagens, as pastas e os ficheiros de controlo necessários. Regista o âmbito e o resultado do ensaio; uma amostra não valida toda a conta.
Marcadores .mbsrs-link representam links da origem e não são mensagens. A
publicação é feita por lote, sem um snapshot consistente de toda a árvore. Mensagens
criadas e removidas entre execuções podem nunca ser copiadas.
Resolver problemas frequentes
Uma execução antiga ainda está ativa
Espera que termine e repete o comando. Durante setup, um lock ocupado causa falha de validação; não é aceite como sucesso. Um update espera até 120 segundos e depois pede uma nova tentativa.
Destino não inicializado ou identidade diferente
Num destino novo dedicado, usa init. Se houver identidade diferente ou
dados não geridos, confirma conta, origem, organização e caminho. Não removas a
identidade nem alteres valores apenas para ignorar a proteção.
Desaparecimentos acima dos limites
Confirma a origem, a seleção e as permissões. Apenas para uma alteração grande
intencional e revista, usa run --allow-large-change manualmente. Não
coloques esta exceção no cron.
Índices Dovecot ou emails mudam durante a cópia
Por defeito, DOVECOT_INDEXES=skip exclui apenas
dovecot.index* e dovecot.list.index* diretamente em pastas
Maildir com cur/ e new/. Mensagens, UID mappings, UID validity, keywords e
subscriptions continuam selecionados. Uma mensagem com nome semelhante dentro de cur/
ou new/ mantém-se incluída. Índices em árvores sem Maildir também são incluídos. O
número de ficheiros mostrado refere-se à seleção atual.
Índices antigos já copiados são conservados, mas não entram no plano nem na verificação com esta política. Num restauro, usa mensagens e ficheiros de controlo verificados e deixa o Dovecot reconstruir os índices; não repor esses índices antigos como atuais. Documentação oficial Dovecot.
DOVECOT_INDEXES=include repõe a cópia estrita de índices, com três
tentativas de cópia perante alterações da origem. Mensagens instáveis após três
tentativas continuam a causar falha explícita. Uma janela de menor atividade facilita
cópia e verificação.
O cron falha porque uma mensagem muda durante a leitura
Um cliente IMAP pode mudar flags ou mover mensagens enquanto o backup está a ler. A cópia tem até três tentativas: conserva o lote não publicado como incompleto, mantém o lock e refaz os inventários e o plano. Lotes já publicados são aproveitados. O relatório regista source_retries.
Se o ficheiro continuar a mudar, a execução falha sem publicar o lote inconsistente. O próximo run pode recuperar o trabalho pendente. Limites de desaparecimentos, seleção vazia e erros de permissões continuam aplicados. Um ficheiro reaparecido antes do arquivo ou desaparecido durante o inventário também provoca novo inventário, sem aprovação automática de grandes remoções.
Após atualizar, o cron existente usa a nova versão. Podes testar manualmente com
~/mbsrs/mbsrs run; não é necessário reinstalar cron nem executar setup.
Durante SHA256, alterações de mensagens continuam a causar falha explícita; apenas os
controlos Maildir têm a reparação limitada documentada.
SHA256 passou, mas o cron falhou com um aviso CageFS
O wrapper pode emitir Backup of … previous crontab saved to … no início
ou no fim da listagem. A versão 1.0.9 reconhece esse diagnóstico completo em stdout ou
stderr, preservando os jobs, comentários e variáveis. Outros erros de leitura
continuam a bloquear a instalação.
Se o relatório já terminou com sucesso, usa ~/mbsrs/mbsrs update e depois
~/mbsrs/mbsrs cron-install. A instalação do cron reutiliza o relatório
válido, guarda backup e confirma o conteúdo após escrever. Não repete a cópia nem
SHA256.
Confirma a entrada MBSRS-MANAGED com crontab -l e consulta o primeiro log
em ~/mbsrs/logs/cron/. Repetir cron-install não duplica a entrada gerida.
dovecot-uidlist muda durante a verificação SHA256
O setup integra cópia e SHA256 sob o mesmo lock. Se um ficheiro de controlo de uma Maildir reconhecida mudar ou tiver hash diferente, o anterior é conservado em histórico e apenas esse controlo é recopiado e verificado, até três tentativas por ficheiro. A verificação continua sem reiniciar os hashes das mensagens já verificadas.
Aplica-se a dovecot-uidlist, dovecot-uidvalidity e variantes hexadecimais, dovecot-keywords e subscriptions. Mensagens, controlos ausentes/especiais e erros de permissões continuam a causar falha. Um controlo instável após três tentativas impede sucesso e instalação do cron.
verify isolado continua estrito e sem escritas. Para cópia seguida de
verificação com esta recuperação limitada, usa run --verify-after-run,
também usado pelo setup. O relatório regista verification=sha256 e metadata_repairs
quando termina com sucesso. Não existe um snapshot global de uma origem ativa.
A pasta antiga usa a organização em vez do username
Após update, o próximo setup ou run migra o
antigo default para o username da conta cPanel antes da cópia. Aplica-se quando
ARCHIVE_PATH é auto ou igual a ORG. É feito um rename do diretório inteiro, incluindo
mail/, history/ e .mbsrs/, sem reenviar mensagens. A identidade ORG mantém-se.
A configuração é corrigida após confirmar o novo caminho. Um journal permite retomar se a ligação cair durante a migração. Uma pasta com o novo nome já existente, identidade diferente ou outra cópia ativa bloqueiam a migração. Caminhos personalizados diferentes do antigo default são preservados.
A ligação SSH/SFTP é interrompida durante a cópia
O comando tenta até duas reconexões em falhas transitórias, mantendo o lock da conta. Recupera o lote pendente e refaz o inventário antes de continuar. Erros de autenticação, host key ou permissões exigem correção e não são repetidos automaticamente.
Se a instalação parou, executa ~/mbsrs/mbsrs update e depois
~/mbsrs/mbsrs setup. A configuração e a identidade existentes são
conservadas, mesmo quando ORG difere do username. Os erros incluem o código de saída
SSH e o stderr disponível para diagnóstico.
Autenticação SFTP falha
Revê servidor, porta, utilizador e known_hosts. Para trocar a password, usa
auth --replace; a anterior é guardada num backup privado. Para chave,
confirma ownership, modo 400/600 e funcionamento sem interação.
Destino local não está montado ou UUID difere
Confirma a montagem estável, o UUID e que LOCAL_ROOT pertence ao
mountpoint configurado. O programa não monta discos nem usa o disco do sistema como
alternativa. É necessário findmnt acessível à conta.
Comandos CLI
| Comando | Finalidade |
|---|---|
setup |
Configurar ou retomar a instalação. |
auth [--replace] |
Guardar ou substituir a password SFTP. |
status |
Mostrar configuração e último relatório. |
config-check |
Validar a configuração, sem ligar ao destino. |
preflight |
Diagnosticar origem, ligação, identidade e recursos visíveis. |
init |
Inicializar um destino novo ou validar a mesma identidade. |
dry-run |
Mostrar o plano sem escrever no destino. |
run |
Sincronizar e arquivar versões anteriores. |
verify |
Comparar SHA256 da seleção em origem e destino. |
recover |
Recuperar uma transação pendente. |
cron-install |
Instalar o agendamento após uma execução bem-sucedida. |
check-update / update |
Consultar ou instalar uma release. |
rollback |
Ativar o código anterior se aceitar a configuração. |
restore-export --destination PASTA | Exportar a cópia atual para uma pasta privada nova e verificar os bytes; não importa mensagens. |
monitor-enroll / monitor-status | Ligar a instalação ao painel ou consultar o estado dessa ligação. |
version / help |
Consultar versão ou ajuda. |
selftest |
Escrever fixtures no destino configurado; executar apenas intencionalmente. |