Com TLS_MODE=acme o certificado e emitido por este servico, nao vigiado em disco, portanto nao ha watcher para estar saudavel. O painel reportava false e mostrava "indisponivel" em permanencia, ao lado de um certificado perfeitamente valido. Passa a ser null, e a pagina nao mostra veredito nenhum. O README ganha uma seccao sobre os dois modos de certificado. O modo traefik falha de duas maneiras silenciosas -- sem router para o PRIMARY_MAIL_HOST o nome nunca chega ao acme.json, e o acme.json fica em 600 do root, ilegivel para o utilizador nao-root do contentor. Nos dois casos o HTTPS continua a funcionar porque quem o serve e o proxy, enquanto as portas de correio caem no autoassinado e sao recusadas por qualquer cliente que verifique. Foi exactamente o que aconteceu nesta instalacao. Actualizado tambem o que ja nao esta por acabar: a resposta de ausencia, a assinatura e as regras Sieve sao consumidas, e a reconciliacao de DNS conduz o estado em vez de o relatar. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
432 lines
17 KiB
JSON
432 lines
17 KiB
JSON
{
|
|
"admin": {
|
|
"addAlias": "Add alias",
|
|
"aliasTarget": "Destination address",
|
|
"aliasesTitle": "Aliases",
|
|
"auditLog": "Audit log",
|
|
"backToWebmail": "Webmail",
|
|
"cancelJob": "Cancel",
|
|
"certificateState": "Certificate",
|
|
"checksPassed": "{passed} of {total} passed",
|
|
"createAccount": "Create account",
|
|
"createAlias": "Create a routing alias",
|
|
"csvImportFailed": "The CSV import failed",
|
|
"csvImported": "Imported {count} mailboxes.",
|
|
"csvIntro": "Paste CSV to provision several accounts with their RFC 6154 folders. Columns: email, role, quota_mb.",
|
|
"csvPreview": "Preview",
|
|
"csvRun": "Run import",
|
|
"csvTitle": "Bulk mailbox import (CSV)",
|
|
"dashboardSubtitle": "Live figures read from the database.",
|
|
"dashboardTitle": "Overview",
|
|
"dkimAlgorithm": "Key type",
|
|
"dkimOverlap": "Both keys sign outbound mail for {days} days so nothing fails while DNS propagates.",
|
|
"dkimPublishRecord": "Publish this record in DNS:",
|
|
"dkimRotate": "Generate a new key",
|
|
"dkimSelector": "Selector",
|
|
"dkimTitle": "DKIM key rotation",
|
|
"dmarcSubtitle": "Breakdown of the aggregate XML reports that have been ingested.",
|
|
"dmarcTitle": "DMARC reports",
|
|
"dnsRecordsFor": "DNS records for {domain}",
|
|
"dnsStatusDrift": "Drift",
|
|
"dnsStatusPartial": "Partial",
|
|
"dnsStatusVerified": "Verified",
|
|
"domainName": "Domain name",
|
|
"domainsTitle": "Domains",
|
|
"expiresInDays": "Expires in {days} days",
|
|
"freezeDomain": "Freeze domain",
|
|
"greylistScore": "Greylist score",
|
|
"headerScore": "Header-tagging score",
|
|
"jobCancelled": "Job {id} was cancelled.",
|
|
"jobRetried": "Job {id} was queued for another attempt.",
|
|
"lastChecked": "Last checked: {when}",
|
|
"lastReload": "Last reload",
|
|
"lockAccount": "Lock",
|
|
"mailHost": "Mail host",
|
|
"mailboxCount": "{count} mailboxes",
|
|
"mailboxesSubtitle": "Accounts, aliases, CSV import and the second-factor policy.",
|
|
"mailboxesTitle": "Users",
|
|
"mfaAdmins": "Required for admins",
|
|
"mfaEveryone": "Required for everyone",
|
|
"mfaOptional": "Optional",
|
|
"mfaPolicyIntro": "Choose how strictly this domain requires a second factor.",
|
|
"mfaPolicyTitle": "Second-factor requirement",
|
|
"noCertificate": "No certificate is loaded for this host.",
|
|
"noChecks": "No checks reported.",
|
|
"noDomains": "No domains have been onboarded yet.",
|
|
"notPublished": "Not published",
|
|
"onboardIntro": "Creates the domain and its standard RFC 2142 aliases, pointed at your address.",
|
|
"onboardTitle": "Add a domain",
|
|
"openAdmin": "Admin console",
|
|
"preflightTitle": "Readiness checks",
|
|
"presentProxied": "Present (proxied)",
|
|
"queueEmpty": "The outbound queue is empty.",
|
|
"queueSubtitle": "Inspect the outbound queue, retry a job, or cancel one.",
|
|
"queueTitle": "Outbound queue",
|
|
"quotaMb": "Quota (MB)",
|
|
"readinessIntro": "Checks the server reports about itself before it carries production mail.",
|
|
"reconcileDns": "Reconcile DNS",
|
|
"rejectScore": "Reject score",
|
|
"retryJob": "Retry",
|
|
"rspamdIntro": "Scores that trigger greylisting, header tagging and rejection.",
|
|
"rspamdSaved": "Thresholds saved.",
|
|
"saveThresholds": "Save thresholds",
|
|
"securitySubtitle": "Readiness checks, TLS state, spam thresholds and the audit trail.",
|
|
"securityTitle": "Security",
|
|
"tabAccounts": "Accounts",
|
|
"tabAliases": "Aliases",
|
|
"tabAudit": "Audit trail",
|
|
"tabCsv": "Bulk import",
|
|
"tabReadiness": "Readiness",
|
|
"tabRspamd": "Spam thresholds",
|
|
"tabTls": "TLS",
|
|
"tlsMode": "TLS mode",
|
|
"tlsTitle": "Certificate and transport",
|
|
"traceNoResults": "No trace found for that queue ID.",
|
|
"tracePlaceholder": "Queue ID",
|
|
"traceResultFor": "Trace for {id}",
|
|
"traceStep": "Step {n}",
|
|
"traceTitle": "Trace a message",
|
|
"unknownSni": "Unknown SNI requests",
|
|
"unlockAccount": "Unlock",
|
|
"verifyIntro": "Resolves every expected record against public resolvers and reports each one.",
|
|
"watcherHealthy": "Certificate watcher",
|
|
"openAdminShort": "Admin",
|
|
"reconcileSummary": "{created} created, {updated} corrected, {unchanged} already right.",
|
|
"reconcileConflicts": "Left untouched — another value is already published:",
|
|
"reconcileErrors": "The provider refused these:",
|
|
"selectDomain": "Select",
|
|
"domainSelected": "Selected",
|
|
"tlsSelfSigned": "This certificate is self-signed (issuer: {issuer}). Clients that verify certificates will refuse the connection on the mail ports. Set TRAEFIK_ACME_DIR or STATIC_CERT_PATH to serve an issued certificate.",
|
|
"aliasesForUser": "Aliases delivering to this mailbox",
|
|
"noAliasesForUser": "No alias delivers to this mailbox.",
|
|
"testsTitle": "Tests",
|
|
"testsSubtitle": "Checks you can run at any time. They all read state; none sends mail or changes a setting.",
|
|
"serverChecks": "Server",
|
|
"userChecks": "User",
|
|
"runChecks": "Run",
|
|
"checksRun": "{count} checks",
|
|
"pickADomain": "Pick a domain.",
|
|
"aliasSource": "Alias address",
|
|
"setPassword": "Set password",
|
|
"atLeast12": "At least 12 characters",
|
|
"passwordReset": "Password changed. This user's sessions were signed out.",
|
|
"passwordResetWarning": "Signs out every session this user holds, including one open right now.",
|
|
"removeTotp": "Remove second factor",
|
|
"totpRemoved": "Second factor removed, with its recovery codes."
|
|
},
|
|
"auth": {
|
|
"adminLoginTitle": "Admin console",
|
|
"adminStepUpNote": "The admin console asks for your second factor again, even though you are already signed in to webmail.",
|
|
"authFailed": "Authentication failed",
|
|
"cantScanQr": "Cannot scan? Enter this key manually:",
|
|
"emailLabel": "Email address",
|
|
"enrolmentFailed": "Could not start the second-factor setup",
|
|
"enrolmentIntro": "The admin console requires a second factor. Set one up now to continue.",
|
|
"genericError": "Something went wrong",
|
|
"invalidCredentials": "Invalid email or password",
|
|
"mfaRequired": "Enter the six-digit code from your authenticator app.",
|
|
"orRecoveryCode": "Lost your phone? A recovery code works here too.",
|
|
"passwordLabel": "Password",
|
|
"qrCodeAlt": "QR code for two-factor setup",
|
|
"scanQr": "Scan this code with Google Authenticator, Aegis, Authy or 1Password.",
|
|
"signInButton": "Sign in",
|
|
"signOutOfAdmin": "Leave admin",
|
|
"stepUpIntro": "You are already signed in, so only your second factor is needed. Your password is not asked for again.",
|
|
"stepUpSignedInAs": "Signed in as {email}",
|
|
"stepUpTitle": "Open the admin console",
|
|
"totpCodeLabel": "Authentication code",
|
|
"userLoginTitle": "Sign in to your mailbox",
|
|
"verificationFailed": "Verification failed",
|
|
"verifyCodeButton": "Verify code"
|
|
},
|
|
"common": {
|
|
"actions": "Actions",
|
|
"add": "Add",
|
|
"adminPortal": "Admin",
|
|
"appName": "LambdaMail",
|
|
"back": "Back",
|
|
"cancel": "Cancel",
|
|
"confirm": "Confirm",
|
|
"continue": "Continue",
|
|
"copied": "Copied",
|
|
"copy": "Copy",
|
|
"delete": "Delete",
|
|
"loading": "Loading...",
|
|
"logout": "Sign out",
|
|
"never": "Never",
|
|
"none": "None",
|
|
"refresh": "Refresh",
|
|
"retry": "Retry",
|
|
"save": "Save",
|
|
"search": "Search",
|
|
"status": "Status",
|
|
"unavailable": "Unavailable",
|
|
"userPortal": "Webmail",
|
|
"notApplicable": "Not applicable"
|
|
},
|
|
"errors": {
|
|
"forbidden": "You do not have access to this",
|
|
"loadFailed": "Could not load the data",
|
|
"serverError": "Something went wrong on the server",
|
|
"unauthorized": "Please sign in again"
|
|
},
|
|
"mail": {
|
|
"addFiles": "Add files...",
|
|
"allMessages": "All",
|
|
"archive": "Archive",
|
|
"attachments": "Attachments ({count})",
|
|
"attachmentsFilter": "With attachments",
|
|
"attachmentsUnsupported": "Attachments are listed by name only; file upload is not wired up yet.",
|
|
"backToList": "Back to the message list",
|
|
"bold": "Bold",
|
|
"bulletList": "Bulleted list",
|
|
"compose": "Compose",
|
|
"discard": "Discard",
|
|
"draftSaveFailed": "Draft could not be saved",
|
|
"draftSaved": "Draft saved automatically",
|
|
"draftSaving": "Saving draft...",
|
|
"drafts": "Drafts",
|
|
"deleteForever": "Delete permanently",
|
|
"continueDraft": "Continue writing",
|
|
"emptyBody": "This message has no text body.",
|
|
"forward": "Forward",
|
|
"imagesEnabled": "Images loaded",
|
|
"hideCcBcc": "- Hide Cc/Bcc",
|
|
"inbox": "Inbox",
|
|
"insertLink": "Insert link",
|
|
"insertUrl": "Enter the URL:",
|
|
"italic": "Italic",
|
|
"junk": "Spam",
|
|
"reports": "Reports",
|
|
"loadImages": "Load images",
|
|
"markRead": "Mark as read",
|
|
"markUnread": "Mark as unread",
|
|
"messagesInFolder": "{count} messages",
|
|
"noMatches": "Nothing matched that search",
|
|
"noMessages": "No messages",
|
|
"noSubject": "(No subject)",
|
|
"numberedList": "Numbered list",
|
|
"remoteContentBlocked": "Remote images were blocked so this message cannot track you.",
|
|
"reply": "Reply",
|
|
"searchMatches": "{count} found",
|
|
"searchPlaceholder": "Search (from:, subject:)...",
|
|
"selectAMessage": "Select a message to read it",
|
|
"sendMessage": "Send message",
|
|
"sending": "Sending...",
|
|
"sent": "Sent",
|
|
"showCcBcc": "+ Add Cc/Bcc",
|
|
"strikethrough": "Strikethrough",
|
|
"trash": "Trash",
|
|
"underline": "Underline",
|
|
"undoSend": "Sending in {seconds}s",
|
|
"undoSendAction": "Undo",
|
|
"unreadCount": "{count} unread",
|
|
"unreadFilter": "Unread",
|
|
"ccLabel": "Cc",
|
|
"bccLabel": "Bcc",
|
|
"hideImages": "Hide images",
|
|
"alwaysFromSender": "Always from this sender",
|
|
"forgetSender": "Stop trusting sender",
|
|
"moveTo": "Move to"
|
|
},
|
|
"settings": {
|
|
"actionDiscard": "Discard",
|
|
"actionFlag": "Flag message",
|
|
"actionMove": "Move to Archive",
|
|
"addRule": "Add rule",
|
|
"appPasswordPlaceholder": "Thunderbird / Outlook Mobile",
|
|
"appPasswords": "App passwords",
|
|
"autoReplySaveFailed": "Could not save the auto-reply",
|
|
"enableMfa": "Enable two-factor",
|
|
"fieldFrom": "From",
|
|
"fieldHeader": "Header",
|
|
"fieldSubject": "Subject",
|
|
"generateAppPassword": "Generate",
|
|
"langEn": "English",
|
|
"langEs": "Español",
|
|
"langPtBR": "Português (Brasil)",
|
|
"language": "Language",
|
|
"matchContains": "contains",
|
|
"matchEquals": "is exactly",
|
|
"matchRegex": "matches regex",
|
|
"mfaDisabled": "Disabled",
|
|
"mfaEnabled": "Enabled",
|
|
"mfaStatus": "Two-factor status",
|
|
"recoveryCodesTitle": "Recovery codes",
|
|
"ruleIf": "IF",
|
|
"ruleThen": "THEN",
|
|
"saveAutoReply": "Save auto-reply",
|
|
"saveRecoveryCodes": "Save these somewhere safe. Each one works once, and they are shown only now.",
|
|
"security": "Security",
|
|
"sessions": "Sessions",
|
|
"settingsSaved": "Settings saved.",
|
|
"sieveIntro": "Rules that sort incoming mail automatically.",
|
|
"sieveTitle": "Filters (Sieve)",
|
|
"signOut": "Sign out",
|
|
"signatureIntro": "Appended automatically to the messages you compose.",
|
|
"signaturePlaceholder": "Kind regards,\nYour name\nYour role",
|
|
"signatureSaveFailed": "Could not save the signature",
|
|
"signatureSaved": "Signature saved.",
|
|
"signatureTitle": "Email signature",
|
|
"sixDigitCode": "Six-digit code",
|
|
"startOverMfa": "Lost the entry? Start over with a new key",
|
|
"subtitle": "Two-factor authentication, filters, auto-reply and your signature.",
|
|
"title": "Settings",
|
|
"twoFactorIntro": "Protect your account with Google Authenticator, Aegis, Authy or 1Password.",
|
|
"vacationBodyLabel": "Reply message",
|
|
"vacationDefaultBody": "Thank you for your message. I am currently away and will reply when I return.",
|
|
"vacationDefaultSubject": "Out of office",
|
|
"vacationIntro": "Reply automatically to incoming mail while you are away.",
|
|
"vacationSubjectLabel": "Reply subject",
|
|
"vacationTitle": "Out-of-office auto-reply",
|
|
"valuePlaceholder": "Value to match...",
|
|
"ruleField": "Field",
|
|
"ruleCondition": "Condition",
|
|
"ruleValue": "Value",
|
|
"ruleValuePlaceholder": "e.g. invoice",
|
|
"fieldTo": "To",
|
|
"fieldCc": "Cc",
|
|
"condContains": "Contains",
|
|
"condIs": "Is exactly",
|
|
"condStartsWith": "Starts with",
|
|
"condEndsWith": "Ends with",
|
|
"condNotContains": "Does not contain",
|
|
"actionMarkRead": "Mark as read",
|
|
"ruleMoveUp": "Move up",
|
|
"ruleMoveDown": "Move down",
|
|
"ruleOrderNote": "Rules are applied in order, and the first one that files a message decides where it goes.",
|
|
"foreignScriptTitle": "Rules written elsewhere",
|
|
"foreignScriptIntro": "These rules were written by hand or by a desktop client and use features this screen cannot show. They are still applied to your mail. Editing them here would change what they do, so they are shown as they are."
|
|
},
|
|
"ui": {
|
|
"accountLocked": "Locked",
|
|
"accountStatus": "Account status",
|
|
"actions": "Actions",
|
|
"active": "Active",
|
|
"activeSessions": "Active sessions",
|
|
"actor": "Actor",
|
|
"actualRecord": "Actual value",
|
|
"allChecksPassed": "All checks passed",
|
|
"appPasswordGenerated": "App password generated",
|
|
"appPasswordsSection": "App passwords",
|
|
"attempts": "Attempts",
|
|
"bounceRate": "Bounce rate",
|
|
"ccRecipients": "Cc",
|
|
"changePassword": "Change password",
|
|
"clientIp": "Client IP",
|
|
"copyPasswordNow": "Copy it now. It is not shown again.",
|
|
"coreInfra": "Core services",
|
|
"currentPassword": "Current password",
|
|
"currentSession": "This device",
|
|
"daneVerified": "DANE verified",
|
|
"destination": "Destination",
|
|
"diskUsed": "Storage used",
|
|
"dkimAlignment": "DKIM alignment",
|
|
"dkimResult": "DKIM",
|
|
"dmarcEnforcement": "DMARC policy",
|
|
"domainVerification": "Domain verification",
|
|
"domainsVerified": "Domains verified",
|
|
"emailAddress": "Email address",
|
|
"eventAction": "Action",
|
|
"expectedValue": "Expected value",
|
|
"healthy": "Healthy",
|
|
"imapEngine": "IMAP service",
|
|
"inboundVolume": "Received (24h)",
|
|
"jobId": "Job",
|
|
"lastError": "Last error",
|
|
"liveMetrics": "Live metrics",
|
|
"localDisk": "Local disk",
|
|
"mailboxesActive": "Active mailboxes",
|
|
"messageBody": "Message",
|
|
"messageVolume": "Messages",
|
|
"mfaActive": "TOTP active",
|
|
"mfaNone": "No second factor",
|
|
"newPassword": "New password",
|
|
"noAppPasswords": "No app passwords yet.",
|
|
"noData": "No data yet",
|
|
"online": "Online",
|
|
"outboundDelivered": "Sent (24h)",
|
|
"passwordChanged": "Password changed.",
|
|
"postgresRunner": "Postgres-backed queue",
|
|
"preflightTitle": "Readiness",
|
|
"provisionMailbox": "Create mailbox",
|
|
"queueDepth": "Queue depth",
|
|
"recipient": "Recipient",
|
|
"recordName": "Record",
|
|
"reportingOrg": "Reporting organisation",
|
|
"role": "Role",
|
|
"scanners": "Spam and virus scanning",
|
|
"sender": "Sender",
|
|
"signOutOthers": "Sign out other devices",
|
|
"smtpListener": "SMTP service",
|
|
"sourceIp": "Source IP",
|
|
"spfRatio": "SPF pass rate",
|
|
"spfResult": "SPF",
|
|
"storageQuota": "Storage quota",
|
|
"subject": "Subject",
|
|
"targetObject": "Target",
|
|
"timestamp": "Time",
|
|
"toRecipients": "To",
|
|
"toggleMenu": "Toggle menu",
|
|
"totalEvaluated": "Messages evaluated",
|
|
"twoFactorSection": "Two-factor authentication",
|
|
"watching": "Watching",
|
|
"bold": "Bold",
|
|
"italic": "Italic",
|
|
"underline": "Underline",
|
|
"insertLink": "Link",
|
|
"insertImage": "Image",
|
|
"showingRange": "Showing {from} to {to} of {total}",
|
|
"noResults": "No results",
|
|
"previousPage": "Previous page",
|
|
"nextPage": "Next page",
|
|
"searchPlaceholder": "Search...",
|
|
"all": "All",
|
|
"filters": "Filters",
|
|
"editUser": "Edit user",
|
|
"quotaMb": "Quota (MB)",
|
|
"selectUser": "Select a user"
|
|
},
|
|
"folders": {
|
|
"new": "New folder",
|
|
"newPlaceholder": "New folder…",
|
|
"delete": "Delete {name}",
|
|
"deleteConfirm": "Delete the folder \"{name}\" and every message in it? This cannot be undone from the interface."
|
|
},
|
|
"checks": {
|
|
"userActive": "The account is enabled",
|
|
"userDisabled": "The account is disabled",
|
|
"userLockedOut": "Locked out after failed sign-ins",
|
|
"userNotLockedOut": "No active lockout",
|
|
"userHasPassword": "Has a password set",
|
|
"userHasNoPassword": "Has no password set",
|
|
"quotaFull": "The quota is full",
|
|
"quotaNearlyFull": "The quota is nearly full",
|
|
"quotaHealthy": "The quota has headroom",
|
|
"quotaUnlimited": "No quota limit",
|
|
"mfaEnrolled": "Second factor enrolled",
|
|
"mfaNotEnrolled": "No second factor",
|
|
"aliasesDelivering": "Aliases delivering to this mailbox",
|
|
"sieveScriptPresent": "Has filing rules",
|
|
"vacationActive": "Autoresponder is on",
|
|
"vacationWindowPast": "Autoresponder is on, but its window has passed",
|
|
"vacationWindowFuture": "Autoresponder is on, its window has not started",
|
|
"dnsVerified": "DNS records verified",
|
|
"dnsNotVerified": "DNS records not verified",
|
|
"noDomains": "No domains configured",
|
|
"dkimMissing": "No DKIM key: the domain signs nothing",
|
|
"queueHasBounces": "Bounced messages in the queue",
|
|
"queueNoBounces": "No bounces in the queue",
|
|
"queueHasDeferred": "Deferred messages in the queue",
|
|
"queueNoDeferred": "No deferred messages",
|
|
"queueHasFrozen": "Frozen messages in the queue",
|
|
"usersOverQuota": "Users over their quota",
|
|
"noUsersOverQuota": "No user is over quota"
|
|
},
|
|
"roles": {
|
|
"user": "User",
|
|
"domainAdmin": "Domain admin",
|
|
"superAdmin": "Super admin"
|
|
}
|
|
}
|