Duas coisas apanhadas ao correr o reconcile contra a zona real depois de a
rota passar a funcionar.
1) Nao era idempotente: 0 criados, 4 corrigidos, 11 iguais -- e outra vez 4
corrigidos na passagem seguinte, para sempre, com o temporizador a fazer o
mesmo em ciclo. Os 4 eram os SRV. A Cloudflare devolve o content de um SRV
SEM a prioridade ("1 993 host" para um registo guardado como "0 1 993
host") e guarda-a em data. O adaptador so recorria a data quando o content
vinha vazio, portanto lia sempre um valor diferente do da spec.
Para SRV e TLSA a data passa a ser a autoridade.
2) A spec de cada dominio incluia o A e o AAAA do mail host. Um segundo
dominio servido pelo mesmo servidor aponta o MX para um host que nao lhe
pertence, por isso reconciliar o cienciaembarcada.com.br tentava escrever
mail.lucasrguerra.dev.br -- zona alheia. A Cloudflare respondia "an
identical record already exists" e a consola mostrava dois erros para um
dominio que estava correcto. O mesmo valia para o TLSA, que tambem tem o
nome do mail host.
Os registos de endereco passam a ser publicados so pela zona que contem o
host; o MX e os SRV, que apontam para ele, continuam a ser de cada dominio.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
369 lines
16 KiB
JSON
369 lines
16 KiB
JSON
{
|
|
"admin": {
|
|
"addAlias": "Adicionar apelido",
|
|
"aliasTarget": "Endereço de destino",
|
|
"aliasesTitle": "Apelidos",
|
|
"auditLog": "Trilha de auditoria",
|
|
"backToWebmail": "Webmail",
|
|
"cancelJob": "Cancelar",
|
|
"certificateState": "Certificado",
|
|
"checksPassed": "{passed} de {total} aprovadas",
|
|
"createAccount": "Criar conta",
|
|
"createAlias": "Criar um apelido de roteamento",
|
|
"csvImportFailed": "A importação do CSV falhou",
|
|
"csvImported": "{count} caixas importadas.",
|
|
"csvIntro": "Cole o CSV para criar várias contas com as pastas da RFC 6154. Colunas: email, papel, cota_mb.",
|
|
"csvPreview": "Pré-visualizar",
|
|
"csvRun": "Executar importação",
|
|
"csvTitle": "Importar caixas em massa (CSV)",
|
|
"dashboardSubtitle": "Números ao vivo lidos do banco de dados.",
|
|
"dashboardTitle": "Visão geral",
|
|
"dkimAlgorithm": "Tipo de chave",
|
|
"dkimOverlap": "As duas chaves assinam as mensagens enviadas por {days} dias, para nada falhar enquanto o DNS propaga.",
|
|
"dkimPublishRecord": "Publique este registro no DNS:",
|
|
"dkimRotate": "Gerar uma nova chave",
|
|
"dkimSelector": "Seletor",
|
|
"dkimTitle": "Rotação de chave DKIM",
|
|
"dmarcSubtitle": "Detalhamento dos relatórios XML agregados que foram processados.",
|
|
"dmarcTitle": "Relatórios DMARC",
|
|
"dnsRecordsFor": "Registros DNS de {domain}",
|
|
"dnsStatusDrift": "Divergente",
|
|
"dnsStatusPartial": "Parcial",
|
|
"dnsStatusVerified": "Verificado",
|
|
"domainName": "Nome do domínio",
|
|
"domainsTitle": "Domínios",
|
|
"expiresInDays": "Expira em {days} dias",
|
|
"freezeDomain": "Congelar domínio",
|
|
"greylistScore": "Pontuação de greylist",
|
|
"headerScore": "Pontuação de marcação de cabeçalho",
|
|
"jobCancelled": "O trabalho {id} foi cancelado.",
|
|
"jobRetried": "O trabalho {id} foi recolocado na fila para nova tentativa.",
|
|
"lastChecked": "Última verificação: {when}",
|
|
"lastReload": "Última recarga",
|
|
"lockAccount": "Bloquear",
|
|
"mailHost": "Host de e-mail",
|
|
"mailboxCount": "{count} caixas de e-mail",
|
|
"mailboxesSubtitle": "Contas, apelidos, importação CSV e a política de segundo fator.",
|
|
"mailboxesTitle": "Caixas de e-mail",
|
|
"mfaAdmins": "Obrigatório para administradores",
|
|
"mfaEveryone": "Obrigatório para todos",
|
|
"mfaOptional": "Opcional",
|
|
"mfaPolicyIntro": "Escolha com que rigor este domínio exige um segundo fator.",
|
|
"mfaPolicyTitle": "Exigência de segundo fator",
|
|
"noCertificate": "Nenhum certificado carregado para este host.",
|
|
"noChecks": "Nenhuma verificação relatada.",
|
|
"noDomains": "Nenhum domínio foi cadastrado ainda.",
|
|
"notPublished": "Não publicado",
|
|
"onboardIntro": "Cria o domínio e os apelidos padrão da RFC 2142, apontados para o seu endereço.",
|
|
"onboardTitle": "Adicionar um domínio",
|
|
"openAdmin": "Console de administração",
|
|
"preflightTitle": "Verificações de prontidão",
|
|
"presentProxied": "Presente (com proxy)",
|
|
"queueEmpty": "A fila de saída está vazia.",
|
|
"queueSubtitle": "Inspecione a fila de saída, tente reenviar um trabalho ou cancele um.",
|
|
"queueTitle": "Fila de saída",
|
|
"quotaMb": "Cota (MB)",
|
|
"readinessIntro": "Verificações que o servidor relata sobre si mesmo antes de transportar mensagens em produção.",
|
|
"reconcileDns": "Reconciliar DNS",
|
|
"rejectScore": "Pontuação de rejeição",
|
|
"retryJob": "Tentar novamente",
|
|
"rspamdIntro": "Pontuações que acionam greylisting, marcação de cabeçalho e rejeição.",
|
|
"rspamdSaved": "Limites salvos.",
|
|
"saveThresholds": "Salvar limites",
|
|
"securitySubtitle": "Verificações de prontidão, estado do TLS, limites de spam e a trilha de auditoria.",
|
|
"securityTitle": "Segurança",
|
|
"tabAccounts": "Contas",
|
|
"tabAliases": "Apelidos",
|
|
"tabAudit": "Trilha de auditoria",
|
|
"tabCsv": "Importação em massa",
|
|
"tabReadiness": "Prontidão",
|
|
"tabRspamd": "Limites de spam",
|
|
"tabTls": "TLS",
|
|
"tlsMode": "Modo TLS",
|
|
"tlsTitle": "Certificado e transporte",
|
|
"traceNoResults": "Nenhum rastro encontrado para esse ID de fila.",
|
|
"tracePlaceholder": "ID da fila",
|
|
"traceResultFor": "Rastreamento de {id}",
|
|
"traceStep": "Etapa {n}",
|
|
"traceTitle": "Rastrear uma mensagem",
|
|
"unknownSni": "Requisições SNI desconhecidas",
|
|
"unlockAccount": "Desbloquear",
|
|
"verifyIntro": "Resolve cada registro esperado em servidores DNS públicos e relata um a um.",
|
|
"watcherHealthy": "Monitor de certificado",
|
|
"openAdminShort": "Admin",
|
|
"reconcileSummary": "{created} criados, {updated} corrigidos, {unchanged} já corretos.",
|
|
"reconcileConflicts": "Não alterados — já existe outro valor publicado:",
|
|
"reconcileErrors": "O provedor recusou estes:",
|
|
"selectDomain": "Selecionar",
|
|
"domainSelected": "Selecionado"
|
|
},
|
|
"auth": {
|
|
"adminLoginTitle": "Console de administração",
|
|
"adminStepUpNote": "O console de administração pede o segundo fator novamente, mesmo você já estando conectado ao webmail.",
|
|
"authFailed": "Falha na autenticação",
|
|
"cantScanQr": "Não consegue escanear? Digite esta chave manualmente:",
|
|
"emailLabel": "Endereço de e-mail",
|
|
"enrolmentFailed": "Não foi possível iniciar a configuração do segundo fator",
|
|
"enrolmentIntro": "O console de administração exige um segundo fator. Configure um agora para continuar.",
|
|
"genericError": "Algo deu errado",
|
|
"invalidCredentials": "E-mail ou senha inválidos",
|
|
"mfaRequired": "Digite o código de seis dígitos do seu aplicativo autenticador.",
|
|
"orRecoveryCode": "Perdeu o celular? Um código de recuperação também funciona aqui.",
|
|
"passwordLabel": "Senha",
|
|
"qrCodeAlt": "Código QR para configurar a verificação em duas etapas",
|
|
"scanQr": "Escaneie este código com o Google Authenticator, Aegis, Authy ou 1Password.",
|
|
"signInButton": "Entrar",
|
|
"signOutOfAdmin": "Sair da administração",
|
|
"stepUpIntro": "Você já está autenticado, então basta o segundo fator. A senha não é pedida de novo.",
|
|
"stepUpSignedInAs": "Autenticado como {email}",
|
|
"stepUpTitle": "Abrir o console administrativo",
|
|
"totpCodeLabel": "Código de autenticação",
|
|
"userLoginTitle": "Entre na sua caixa de e-mail",
|
|
"verificationFailed": "Falha na verificação",
|
|
"verifyCodeButton": "Verificar código"
|
|
},
|
|
"common": {
|
|
"actions": "Ações",
|
|
"add": "Adicionar",
|
|
"adminPortal": "Administração",
|
|
"appName": "LambdaMail",
|
|
"back": "Voltar",
|
|
"cancel": "Cancelar",
|
|
"confirm": "Confirmar",
|
|
"continue": "Continuar",
|
|
"copied": "Copiado",
|
|
"copy": "Copiar",
|
|
"delete": "Excluir",
|
|
"loading": "Carregando...",
|
|
"logout": "Sair",
|
|
"never": "Nunca",
|
|
"none": "Nenhum",
|
|
"refresh": "Atualizar",
|
|
"retry": "Tentar novamente",
|
|
"save": "Salvar",
|
|
"search": "Buscar",
|
|
"status": "Status",
|
|
"unavailable": "Indisponível",
|
|
"userPortal": "Webmail"
|
|
},
|
|
"errors": {
|
|
"forbidden": "Você não tem acesso a isto",
|
|
"loadFailed": "Não foi possível carregar os dados",
|
|
"serverError": "Algo deu errado no servidor",
|
|
"unauthorized": "Entre novamente"
|
|
},
|
|
"mail": {
|
|
"addFiles": "Adicionar arquivos...",
|
|
"allMessages": "Todas",
|
|
"archive": "Arquivo",
|
|
"attachments": "Anexos ({count})",
|
|
"attachmentsFilter": "Com anexos",
|
|
"attachmentsUnsupported": "Anexos são listados apenas pelo nome; o envio de arquivos ainda não está implementado.",
|
|
"backToList": "Voltar para a lista de mensagens",
|
|
"bold": "Negrito",
|
|
"bulletList": "Lista com marcadores",
|
|
"compose": "Escrever",
|
|
"discard": "Descartar",
|
|
"draftSaveFailed": "Não foi possível salvar o rascunho",
|
|
"draftSaved": "Rascunho salvo automaticamente",
|
|
"draftSaving": "Salvando rascunho...",
|
|
"drafts": "Rascunhos",
|
|
"deleteForever": "Excluir definitivamente",
|
|
"continueDraft": "Continuar escrevendo",
|
|
"emptyBody": "Esta mensagem não tem corpo de texto.",
|
|
"forward": "Encaminhar",
|
|
"imagesEnabled": "Imagens carregadas",
|
|
"hideCcBcc": "- Ocultar Cc/Cco",
|
|
"inbox": "Caixa de entrada",
|
|
"insertLink": "Inserir link",
|
|
"insertUrl": "Digite a URL:",
|
|
"italic": "Itálico",
|
|
"junk": "Spam",
|
|
"reports": "Relatórios",
|
|
"loadImages": "Carregar imagens",
|
|
"markRead": "Marcar como lida",
|
|
"markUnread": "Marcar como não lida",
|
|
"messagesInFolder": "{count} mensagens",
|
|
"noMatches": "Nada corresponde a essa busca",
|
|
"noMessages": "Nenhuma mensagem",
|
|
"noSubject": "(Sem assunto)",
|
|
"numberedList": "Lista numerada",
|
|
"remoteContentBlocked": "As imagens remotas foram bloqueadas para que esta mensagem não possa rastrear você.",
|
|
"reply": "Responder",
|
|
"searchMatches": "{count} encontradas",
|
|
"searchPlaceholder": "Buscar (from:, subject:)...",
|
|
"selectAMessage": "Selecione uma mensagem para ler",
|
|
"sendMessage": "Enviar mensagem",
|
|
"sending": "Enviando...",
|
|
"sent": "Enviados",
|
|
"showCcBcc": "+ Adicionar Cc/Cco",
|
|
"strikethrough": "Tachado",
|
|
"trash": "Lixeira",
|
|
"underline": "Sublinhado",
|
|
"undoSend": "Enviando em {seconds}s",
|
|
"undoSendAction": "Desfazer",
|
|
"unreadCount": "{count} não lidas",
|
|
"unreadFilter": "Não lidas",
|
|
"ccLabel": "Cc",
|
|
"bccLabel": "Cco",
|
|
"hideImages": "Ocultar imagens",
|
|
"alwaysFromSender": "Sempre deste remetente",
|
|
"forgetSender": "Deixar de confiar",
|
|
"moveTo": "Mover para"
|
|
},
|
|
"settings": {
|
|
"actionDiscard": "Descartar",
|
|
"actionFlag": "Marcar mensagem",
|
|
"actionMove": "Mover para o Arquivo",
|
|
"addRule": "Adicionar regra",
|
|
"appPasswordPlaceholder": "Thunderbird / Outlook Mobile",
|
|
"appPasswords": "Senhas de aplicativo",
|
|
"autoReplySaveFailed": "Não foi possível salvar a resposta automática",
|
|
"enableMfa": "Ativar verificação em duas etapas",
|
|
"fieldFrom": "De",
|
|
"fieldHeader": "Cabeçalho",
|
|
"fieldSubject": "Assunto",
|
|
"generateAppPassword": "Gerar",
|
|
"langEn": "English",
|
|
"langEs": "Español",
|
|
"langPtBR": "Português (Brasil)",
|
|
"language": "Idioma",
|
|
"matchContains": "contém",
|
|
"matchEquals": "é exatamente",
|
|
"matchRegex": "corresponde à regex",
|
|
"mfaDisabled": "Desativada",
|
|
"mfaEnabled": "Ativada",
|
|
"mfaStatus": "Status da verificação em duas etapas",
|
|
"recoveryCodesTitle": "Códigos de recuperação",
|
|
"ruleIf": "SE",
|
|
"ruleThen": "ENTÃO",
|
|
"saveAutoReply": "Salvar resposta automática",
|
|
"saveRecoveryCodes": "Guarde-os em local seguro. Cada um funciona uma única vez e eles só aparecem agora.",
|
|
"security": "Segurança",
|
|
"sessions": "Sessões",
|
|
"settingsSaved": "Configurações salvas.",
|
|
"sieveIntro": "Regras que organizam as mensagens recebidas automaticamente.",
|
|
"sieveTitle": "Filtros (Sieve)",
|
|
"signOut": "Sair",
|
|
"signatureIntro": "Anexada automaticamente às mensagens que você escreve.",
|
|
"signaturePlaceholder": "Atenciosamente,\nSeu nome\nSeu cargo",
|
|
"signatureSaveFailed": "Não foi possível salvar a assinatura",
|
|
"signatureSaved": "Assinatura salva.",
|
|
"signatureTitle": "Assinatura de e-mail",
|
|
"sixDigitCode": "Código de seis dígitos",
|
|
"startOverMfa": "Perdeu o registro? Recomece com uma nova chave",
|
|
"subtitle": "Verificação em duas etapas, filtros, resposta automática e sua assinatura.",
|
|
"title": "Configurações",
|
|
"twoFactorIntro": "Proteja sua conta com o Google Authenticator, Aegis, Authy ou 1Password.",
|
|
"vacationBodyLabel": "Mensagem da resposta",
|
|
"vacationDefaultBody": "Obrigado pela sua mensagem. Estou ausente no momento e responderei assim que retornar.",
|
|
"vacationDefaultSubject": "Fora do escritório",
|
|
"vacationIntro": "Responde automaticamente às mensagens recebidas enquanto você estiver ausente.",
|
|
"vacationSubjectLabel": "Assunto da resposta",
|
|
"vacationTitle": "Resposta automática de ausência",
|
|
"valuePlaceholder": "Valor a corresponder...",
|
|
"ruleField": "Campo",
|
|
"ruleCondition": "Condição",
|
|
"ruleValue": "Valor",
|
|
"ruleValuePlaceholder": "ex.: fatura",
|
|
"fieldTo": "Para",
|
|
"fieldCc": "Cc",
|
|
"condContains": "Contém",
|
|
"condIs": "É exatamente",
|
|
"condStartsWith": "Começa com",
|
|
"condEndsWith": "Termina com",
|
|
"condNotContains": "Não contém",
|
|
"actionMarkRead": "Marcar como lida",
|
|
"ruleMoveUp": "Mover para cima",
|
|
"ruleMoveDown": "Mover para baixo",
|
|
"ruleOrderNote": "As regras são aplicadas em ordem, e a primeira que arquiva uma mensagem decide onde ela fica.",
|
|
"foreignScriptTitle": "Regras escritas noutro sítio",
|
|
"foreignScriptIntro": "Estas regras foram escritas à mão ou por um cliente de e-mail e usam recursos que esta tela não consegue mostrar. Continuam a ser aplicadas ao seu correio. Editá-las aqui mudaria o que fazem, por isso são mostradas como estão."
|
|
},
|
|
"ui": {
|
|
"accountLocked": "Bloqueada",
|
|
"accountStatus": "Status da conta",
|
|
"actions": "Ações",
|
|
"active": "Ativo",
|
|
"activeSessions": "Sessões ativas",
|
|
"actor": "Autor",
|
|
"actualRecord": "Valor atual",
|
|
"allChecksPassed": "Todas as verificações passaram",
|
|
"appPasswordGenerated": "Senha de aplicativo gerada",
|
|
"appPasswordsSection": "Senhas de aplicativo",
|
|
"attempts": "Tentativas",
|
|
"bounceRate": "Taxa de devolução",
|
|
"ccRecipients": "Cc",
|
|
"changePassword": "Alterar senha",
|
|
"clientIp": "IP do cliente",
|
|
"copyPasswordNow": "Copie agora. Ela não será exibida novamente.",
|
|
"coreInfra": "Serviços principais",
|
|
"currentPassword": "Senha atual",
|
|
"currentSession": "Este dispositivo",
|
|
"daneVerified": "DANE verificado",
|
|
"destination": "Destino",
|
|
"diskUsed": "Armazenamento usado",
|
|
"dkimAlignment": "Alinhamento DKIM",
|
|
"dkimResult": "DKIM",
|
|
"dmarcEnforcement": "Política DMARC",
|
|
"domainVerification": "Verificação de domínio",
|
|
"domainsVerified": "Domínios verificados",
|
|
"emailAddress": "Endereço de e-mail",
|
|
"eventAction": "Ação",
|
|
"expectedValue": "Valor esperado",
|
|
"healthy": "Saudável",
|
|
"imapEngine": "Serviço IMAP",
|
|
"inboundVolume": "Recebidas (24h)",
|
|
"jobId": "Trabalho",
|
|
"lastError": "Último erro",
|
|
"liveMetrics": "Métricas ao vivo",
|
|
"localDisk": "Disco local",
|
|
"mailboxesActive": "Caixas ativas",
|
|
"messageBody": "Mensagem",
|
|
"messageVolume": "Mensagens",
|
|
"mfaActive": "TOTP ativo",
|
|
"mfaNone": "Sem segundo fator",
|
|
"newPassword": "Nova senha",
|
|
"noAppPasswords": "Nenhuma senha de aplicativo ainda.",
|
|
"noData": "Ainda sem dados",
|
|
"online": "Online",
|
|
"outboundDelivered": "Enviadas (24h)",
|
|
"passwordChanged": "Senha alterada.",
|
|
"postgresRunner": "Fila baseada em Postgres",
|
|
"preflightTitle": "Prontidão",
|
|
"provisionMailbox": "Criar caixa de e-mail",
|
|
"queueDepth": "Tamanho da fila",
|
|
"recipient": "Destinatário",
|
|
"recordName": "Registro",
|
|
"reportingOrg": "Organização que reportou",
|
|
"role": "Papel",
|
|
"scanners": "Análise de spam e vírus",
|
|
"sender": "Remetente",
|
|
"signOutOthers": "Sair dos outros dispositivos",
|
|
"smtpListener": "Serviço SMTP",
|
|
"sourceIp": "IP de origem",
|
|
"spfRatio": "Taxa de aprovação SPF",
|
|
"spfResult": "SPF",
|
|
"storageQuota": "Cota de armazenamento",
|
|
"subject": "Assunto",
|
|
"targetObject": "Alvo",
|
|
"timestamp": "Horário",
|
|
"toRecipients": "Para",
|
|
"toggleMenu": "Alternar menu",
|
|
"totalEvaluated": "Mensagens avaliadas",
|
|
"twoFactorSection": "Verificação em duas etapas",
|
|
"watching": "Monitorando",
|
|
"bold": "Negrito",
|
|
"italic": "Itálico",
|
|
"underline": "Sublinhado",
|
|
"insertLink": "Link",
|
|
"insertImage": "Imagem"
|
|
},
|
|
"folders": {
|
|
"new": "Nova pasta",
|
|
"newPlaceholder": "Nova pasta…",
|
|
"delete": "Apagar {name}",
|
|
"deleteConfirm": "Apagar a pasta \"{name}\" e todas as mensagens nela? Isto não pode ser desfeito pela interface."
|
|
}
|
|
}
|