Guias de produtoSite Mailurity
MailurityDocs
MAILURITY / DOCUMENTAÇÃO MBSRS

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.

Python + OpenSSHSFTP ou disco localOrigem apenas em leitura

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.

Terminal · instalação
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.

  1. Executa na conta de origem. Usa as permissões da própria conta, sem root.
  2. Escolhe uma pasta privada. O padrão é ~/mbsrs, fora de mail/ e de todos os DocumentRoots.
  3. Confirma a identidade SFTP. Compara as fingerprints apresentadas com uma fonte independente do fornecedor.
  4. 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.

Terminal · caminhos personalizados
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
Terminal · apenas código
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:

Terminal · configuração sem interação
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:

mbsrs.conf · exemplo ilustrativo
ORG=cpanel-user
REMOTE_ROOT=.
ARCHIVE_PATH=domain.example
PASTA INICIAL SFTP/…/mbsrs
PASTA ESCOLHIDAdomain.example/mail/ · history/ · .mbsrs/

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.

Como escolher os caminhos
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

Estrutura local · ~/mbsrs
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
Escolhas principais
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

Terminal · sequência manual
~/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

Terminal · agendamento
~/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

Terminal · releases
~/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

Terminal · voltar ao código anterior
~/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

Terminal · transação pendente
~/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/.

Onde encontrar cada geração
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:

Terminal · exportação para uma pasta nova
~/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

Usa sempre o lançador ~/mbsrs/mbsrs
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 PASTAExportar a cópia atual para uma pasta privada nova e verificar os bytes; não importa mensagens.
monitor-enroll / monitor-statusLigar 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.