Inline-CID org 로고 (SVG->PNG) 그래서 그것은 Gmail에 렌더링; 메시지 내용을 제거; 에서 도메인 케이스 보존
- FIX (security) : 알림 이메일은 메시지 본문을 수행하지 않습니다. - 제거 messagePreview from Template vars, ledger, 샘플 및 설정 toggle. - FIX (logo) : org 로고는 SVG이며, Gmail/most 클라이언트가 렌더...
엠에디터 플러그 인 참조:Editor Sample variables for missed-message
MISSED CHAT MESSAGE 및 SUPPORT TICKET REPLY incl의 미리보기 샘플 html-escaped sender/title 변형은 canonical 몸에 의해 사용됩니다.
Microsoft 365 메일을 통해 Microsoft Graph 앱 전용 (zero per-mailbox 설정)
Microsoft 365 메일 이제 Microsoft Graph 앱 전용을 통해 / 종료 (메일.ReadWrite/메일. IMAP 대신 신청 허가를 보내세요 — 앱 credential 덮개 모든 현재와 미래 mailboxes tenant-wide, 그래서 추가하십시오 Kamo의 사서함은...
MailCredentials Redis 캐시를 깨진 xoauth2 getter를 직렬화
MailCredentials는 Redis (GenericJackson2Json)에서 캐시됩니다. 추가 `isXoauth2()` boolean getter는 "xoauth2"로 일련되었지만 필드가 없습니다. 다시, 그래서 모든 캐시 인식 읽기 threw 인식되지 않음PropertyExce...
OAuth2 (XOAUTH2)와 IMAP / SMTP를 통해 모든 클라우드 제공 업체의 메일 경로
클라우드 제공업체 (Microsoft 365, Exchange Online, Google Workspace, Zoho, IceWarp) 상속 읽기 / 종료 ****************하지만 해결자는 결코 그(것)들을 위한 대중화된 IMAP/SMTP credentials, 그래서 각 폴...
Server-side "display 외부 이미지" 동의
외부 이미지 선택의 기억하는 client-local (localStorage)를 대체합니다. 튼튼한 per-member 기록으로. 새로운 RemoteImageConsentService (파일 소프트 읽기 그래서 메시지 fetch는 여전히 테이블이 존재하기 전에 작동합니다) + POST ...
Scope KamoMail mailbox/domain listing to the org's own domain (크로스텐트 누출)
보안: **************** ran ' 가상 users'에서 직접 이메일 (그리고 *********** 'SELECT name from virtual domains') with no org scoping, so mailbox/domain sync import EVERY org'...
콜백에 OAuth 공급자를 선택하여 KamoMail으로 돌아갑니다
Microsoft 365 (또는 Google Workspace / Zoho)에 org를 전환하지 못했습니다. OAuth 콜백은 토큰을 저장하고 사전 승인 공급자 행에 만 담긴 상태 만 허용되지 않습니다. 공급자 type 및 no-op'ing을 완전히 작성하지 않았습니다. 읽는 경로는 하...
Org 테마 호스트의 환영 이메일 로고를 해결, apex하지
시스템 이메일 (welcome/verification)에 있는 우두머리/footer 로고는 건축되었습니다 *********** — Kamo에서만 존재하는 apex 경로 마케팅 사이트, 그래서 고객 orgs (e.g. optionone.com) 모두 이미지 404 및 이메일은 로고가 없습...
일정한 내부auth 비밀 비교 (timing oracle)
MessageDigest.isEqual로 String.equals를 대체하십시오 그래서 응답 대기시간은 할 수 없습니다 X-Internal-Auth 공유 비밀 바이트-by-byte를 누출하십시오. Fleet-wide 청소의 copy-pasted InternalAuthFilter (sam...
Meeting-summary 템플릿 미리보기에 대한 샘플 vars
새 모임-summary 템플릿에 대한 sampleVariables 케이스를 추가하므로 스튜어드 미리보기 UI는 현실적인 콘텐츠를 렌더링합니다.
내부 엔드포인트는 회원의 캘린더 이벤트를 만들 수 있습니다
POST /api/internal/calendar/events (X-Internal-Auth gated)는 회원을 해결합니다 -> user -> 1차 캘린더(기본값을 선택하면) 및 이벤트를 생성합니다. SecurityService가 회원 캘린더에 미러 리드 콜백에 사용됩니다.
고정 공개 리디렉션 + Gateway-forwarded 콜백
플랫폼 이메일 OAuth (Microsoft 365 / Google / Zoho)는 유효 공개가 없습니다. 리디렉션 URI : 리디렉션은 요청 호스트에서 파생되었습니다. 클러스터 내부 서비스 주소이며, 콜백 핸들러는 POST 전용. 모두에 사용되는 단일 고정, publicly-reach...
Google/Microsoft/Zoho OAuth 클라이언트는 플랫폼 OAuth 레지스트리 (+ env에서 시동); @Value 클라이언트 ID/secret + 플랫폼 enc-key env를 제거
와이어 mlos-internal-auth (INTERNAL AUTH SECRET) 배포 [skip ci]
이메일서비스의 InternalAuthFilter 가드 /api/email/templates/send + /seed-org 에 내부.auth.secret, 이는 설정되지 않은 (503). 자주 묻는 질문 생산 값 (mlos-internal-auth) 그래서 SecurityService의 ...
반환 422 (500) 회원이 사서함이없는 경우
listFolders 및 기타 읽기 엔드 포인트 threw IllegalStateException from MailContext.toMailCredentials() 회원이 IMAP 자격 증명이 없을 때 컨트롤러의 catch-all이 500으로 바뀌는 것을 규정했습니다. 기타 제품 Mai...
거래 NoReply를 저장하지 마십시오
NoReply는 mailbox가없는 send-only 주소이지만, 모든 거래 여전히 IMAP append를 Sent 폴더에 보내면 noisy를 생성 각 전송에 AUTHENTICATIONFAILED 경고. saveToSent 플래그 추가 EmailSmtpService.send (실제 ma...
앱 DB (drift recovery)의 셀프 치유 사서함 계정
앱 DB는 사서함이 존재하는 진실의 근원입니다; KamoMail 메일 서버의 virtual users에서 라이브 계정. 메일 DB가 데이터를 잃는 경우, mailboxes는 app 기록이 남아있는 동안 공급자에 누락됩니다. - MailboxSelfHealService : 시작 + 매일...
Mailbox 목록 API 반환 UI 모양 ****************
GET /api/email/mailboxes는 raw entity (providerStatus, lastSyncedAt를 반환합니다. 회원 수 없음. 설정 UI는 ***********를 읽습니다. 상태는 항상 정의되지 않았고 모든 mailbox는 "pending"으로 렌더링되었습니다. ...
Read + send-as에 대한 권한 기반 mailbox 액세스 권한을 부여
resolveForMailbox는 직접 MemberMailbox 할당을 통해만 액세스 권한을 부여합니다. 이렇게 mailboxes는 ***********를 통해서 지상에 놓았습니다 권리 threw NoSuchElementException -> "메시지로드" -********** 자주하...
K1m1 (clone+registry+kubeconfig from k1m1, 드롭 k2m1, 간단한 kubectl install)에 마이그레이션
Kamo-shared-library 업데이트에 대한 재건 (esign signer 이메일 템플릿)
새로운 canonical 템플릿 esign.signer verification +를 선택합니다. esign.signer invite 그래서 SeedForOrg는 첫 번째 전송에 씨앗을 수 있습니다.
모든 클라우드 공급자를위한 Wire DomainManager 및 MailboxProvisioner
UnsupportedOperationException stubs를 모든 클라우드 공급자와 교체하십시오. 각 백엔드의 관리자 API에 대한 실제 HTTP 호출: - Microsoft 365 → Microsoft Graph (/users, /domains, /verify, ...) 사용 ...
IMAP/SMTP 백업, 폴더 및 클라우드 스텁에 대한 검색
AbstractImapBackedCloudProvider로 IMAP/SMTP 위임 패턴을 추출 Zoho, IceWarp, Exchange, Google Workspace 및 Microsoft 365 확장 그것은. 기본 클래스는 MailSender, MailReader, FolderMan...
IMAP-backed MailReader 클라우드 프로바이더 스텁
Zoho, IceWarp, Exchange, Google Workspace 및 Microsoft 365 모든 노출 IMAP, 그래서 각 클라우드 프로바이더 스텁의 MailReader 메소드를 통해 EmailImapService UnsupportedOperationException을 던지...
Serve 인라인 이미지 MIME 부품 및 표면 내용 ID 메타데이터
렌더링 <img src="cid:..."> inline 부품의 폭발로 메시지 UI에서 HTML 몸 참조. - AttachmentInfo는 contentId (각 부류 없이)와 인라인 깃발을 얻습니다. - parseMultipart 및 getAttachment 공유 단일 isAttach...
첨부 파일 다운로드에 원본 파일명 및 내용 유형 보존
*********** endpoints (개인의 것 and shared-mailbox controllers)는 Content-Disposition를 방출하고 있었습니다: 부착 filename 매개 변수와 Content-Type: application/octet-stream, 브라우저가 ...
작업, 쿠버네티스 배치를 구축하기 위한 범위
Workflow-level concurrency serialized 전체 파이프라인 (포함 kubectl 롤아웃). 그룹을 빌드 작업으로 이동하여 다른 작업을 배치하십시오. 실행은 오버랩 할 수 있습니다. KlusterServices infra 워크플로우는 작업 흐름을 떨어뜨립니다. 평...
Sync member.email when primary mailbox는 할당, 변경, 또는 제거
Mailbox가 KAMO MAIL org의 회원으로 할당되었을 때, member.email 이메일CredentialService가 IMAP을 해결하지 못하는 경우 결코 업데이트되지 않았습니다. 그 회원의 자격.
Mark-as-read for shared and member mailboxes
EmailController.setFlags now accepts an optional mailboxId query param and routes through resolveProviderWithMailbox so member-mailbox flags are set against the...
ClassCastException을 방지하기 위해 getMessage에서 IMAPInputStream 처리
JavaMail 대신 IMAPInputStream을 반환할 수 있습니다. part.getContent() 메시지 내용이 예쁘지 않은 경우. 더 보기 직접 (String)는 parseMultipart () threw ClassCastException에 캐스팅 영향을받는 메시지, fetch...
사용 getHasAttachments() Boolean 래퍼 유형 일치
***********는 Boolean (wrapper), 그래서 Lombok입니다 getHasAttachments()를 생성합니다. 후자의 만 primitive boolean에 대한 존재. 안전하게 취급하기 위하여 Boolean.TRUE.equals ()를 사용하십시오 null의 경우.
Reset stale hasAttachments on sync and accumulate correctly
- Reset has_attachments=false at start of bulk sync so stale true values from old false-positive MIME detection are cleared before re-indexing - Accumulate ha...
Send에 지원 fromAddress override
Adds FromAddressRequest to EmailSendRequest 그래서 프론트엔드를 지정할 수 있습니다. alias/shared/mailbox 주소로 전송합니다. SmtpOnlyProvider 지금 헤더의 주소는 현재가 떨어지면 공급자 설정하지 않을 때 이메일.