ネイティブSQLで ":" キャストを操作するHibernateを停止する
Hibernate のネイティブ・クエリ・パーサーは、エスケープされたコロンとして ":" を扱い、 お問い合わせ CockroachDBの受信 ************ アレイ[:text[]), ' ' そして、: の ":": 構文エラー の前後に ":" の . ステートメントは有効なSQLです -- 手で...
デプロイ後のインデックスの耐久性のあるNATSコンシューマーを再試行する
転がりはポッドをオーバーラップし、外出先は耐久性を保持します 消費者は「メール・メタデータ・インディケーター」にマッチするPodの結合が失敗する [SUB-90012] 消費者は既にサブスクリプションに拘束されます。 start() から一度走った @PostConstruct はエラーをログにし、諦めていたので、 イ...
メタデータのインデックスを配列型カラムに適応
会話/search index をマップする kamo-shared-library 変更に従う 配列の列を String[]/UUID[] ではなく List<T> とすると、停止したカラム すべてのインデックスメッセージは、すべてで書かれています。 null になるカラムを読み込む explicit: toSet...
バルクフォルダのインデックスをバウンドし、構造上の失敗を阻止
並行セッションから出入りしないと、ツリーがきれいになります。 一括インデックスは、整数にセットされた総ページでページを歩く。 MAX VALUE と いいえ 天井なので、メッセージングの誤ったフォルダは永遠に歩くでしょう。 今は止まる ページの固定数の後、ページのサイズをキャップし、十分な数を一度に 成功なしの連続失...
自社のアドレスに対するリードにマッチしない
電子メールがnoreply@kamocrm.comに設定されたリードは、すべてのメッセージに一致する アドレスが送信されました。1つのリードレコードは、同社のアウトバウンド全体に直面しました メールストリーム(生産における6つのリードを含む126の関連付け)。 2つの欠陥、両方はここに閉鎖しました。 決議者は、メー...
ウィンドウが覆われるまでリードスイープページ
メールボックスが複数件を取られたら、単一の固定ページが無事にメールを失いました pageSize のメッセージは、ニュースレターのバースト、忙しい共有受信トレイ、または アクティブなメールボックスの最初の掃引 — 永続的に失われたので、 max-pages なので、大きめのメールボックスが一目瞭然ではない。 その境界...
アドレスは、Response-To で応答し、SMTP 例外を UI に漏洩しないようにします
KamoCRM通知への迅速な返信は、{"error":"無効なアドレス"}"で失敗しました 応答ボックスに、レンダリングされた動詞。 その文字列は、ジャカルタメールの独自の言葉遣いです SMTPTransport.rcptの特長 に; Podのログは、それが隠れていたものを示しています: 550 5.1.1 <NoR...
マルチパート/関連HTMLのルートを添付ファイルとして分類するのを止める
弊社がインラインされた org ロゴをお送りするすべての取引メールは、当社に届きました。 /messagesビューアは正しい被写体と完全に空のボディを持つ。 isAttachmentPart() は、Content-ID を添付ファイルとして運ぶ任意の部分を処理しました。 ザ・オブ・ザ・ 複数の部分/関連のテキスト/...
共有MFAリポジトリをスキャンする
MfaEnrollmentService は、kamo-shared-library の @Service なので、ワイルドカード @ComponentScan("com.kamo") このアプリケーションでは、このかどうかを構成します。 サービスには、MFAで何をすべきか、そのコンストラクタのニーズ UserMfaE...
クラッシュループされた電子メールサービスが重複するカモキーをマージ
16e8a05 — 22 以降、新しいメールサービス pod は CrashLoopBackOff に入っています。 はじめに。 ヘビヤml は、繰り返されたトップレベルの DuplicateKeyException を上げます キーと、2番目の `kamo:` ブロックを1つにすると、送信者アバターキルスイッチのブロ...
Kubectlのダウンロードをフラッキ・エグレッシにハードン [skip ci]
dl.k8s.io オーバー ランナーのエグレッション 断続的にミッドトランスファーをドロップ: curl: (56) OpenSSL SSL read: 復号化が失敗したか、悪いレコードマック それ以外の緑のビルドでデプロイが失敗する。 繰り返し観察 kamo-signer-monorepoとkamo-transla...
/api/email/campaigns の REST エンドポイントが不足しているキャンペーンController REST エンドポイントを追加
一括メールワークスペース/editor GET/POST /api/email/campaigns などを呼び出すが、 キャンペーンサービス(@Service)が作成されました。 そのため、404'd と /marketing/email ページに "Not Found" インラインをレンダリングします。 キャンペー...
起動をクラッシュした巨大なunsubscribe RequestMatcherを削除
メールサービスには2つのサプレット(MVC DispatcherServlet + Spring-WS)をマウント MessageDispatcherServlet at /services/*) なので、ベアストリングリクエストMatchers() "/api/email/unsubscribe/**") は、曖昧な...
MailCredentials Redisキャッシュを破った計算されたxoauth2ゲッターのシリアライズを停止する
MailCredentials は Redis (GenericJackson2Json) でキャッシュされます。 追加された `isXoauth2()` boolean getter は "xoauth2" プロパティとしてシリアライズされましたが、フィールドは読みません に戻って、すべてのキャッシュされた cred...
スコープカモメールのメールボックス/ドメインは、org のドメイン (クロステナントリーク) にリストします
セキュリティー:******************************************************************** 'sELECT name From virtual domains' は org のスキャッピングを行わないため、 mailbox/domain は、Every or...
Persist はコールバックで OAuth プロバイダーを選択しているため、KamoMail への変換を停止します
Microsoft 365 (またはGoogle Workspace / Zoho) に org を切り替えることは決して立ち往生しません。 OAuth コールバックはトークンを保存し、既存のプロバイダーの行にのみ、 org が行っていないとき、provider type と no-op'ing を完全に書きません。 ...
Apexではなく、orgテーマホストから歓迎メールロゴを解決する
システムメール(welcome/verification)のヘッダ/フッターロゴは、 **************** — カモにのみ存在する apex パス マーケティングサイト, そのため、顧客 orgs (例:optionone.com) 両方の画像 404 と メールはロゴレスをレンダリングします。 resol...
常時内部の秘密の比較(タイミングのoracle)
文字列.equals を MessageDigest.isEqual に置換するので、応答レイテンシーは変更できません。 X-Internal-Auth 共有シークレットバイト単位をリークします。 艦隊ワイドスイープの copy-pasted 内部AuthFilter (same は eClose に既に出荷され、 ラ...
会員がメールボックスがないときに422(500)を返す
listFolders と 読み終点 threw IllegalStateException から MailContext.toMailCredentials() 会員がIMAPの認証を受けていない場合 コントローラのキャッチオールを500に変えたプロビジョニング。 追加する MailboxNotConfiguredE...
トランザクション NoReply を Sent フォルダーに保存しないでください
NoReply はメールボックス無しの送信専用アドレスですが、全てのトランザクション IMAP を Sent フォルダーに追加し、 ノイズを生成 AUTHENTICATIONFAILEDの警告を各送信に送信します。 saveToSent フラグを追加する emailSmtpService.send (実際のメールボック...
メールボックス リスト API は UI 字型 **************** を返します
GET /api/email/mailboxes は、生体 (providerStatus, lastSyncedAt) を返す 会員数なし 設定 UIが読み込まれる**************** ステータスは常に未定義で、すべてのメールボックスが "pending" としてレンダリングされました。 サイトマップ l...
特権ベースのメールボックスへのアクセスを許可する + 送信する
resolveForMailbox は、直接の MemberMailbox の代入によってのみアクセスを許可しました。 so mailboxes は、 ************************************************************************************...
元のファイル名とコンテンツタイプを添付ダウンロードに保存する
メニュー と共有メールボックスコントローラ) は、Content-Disposition: 添付ファイルから送信されました filename パラメータと Content-Type なし: application/octet-stream, ブラウザを強制して、URL の末尾のインデックスセグメントにフォールバック 保...
プライマリメールボックスが割り当てられ、変更、または削除されたときに、メンバーを同期します
メールボックスがKAMO MAIL orgのメンバーに割り当てられた場合、members.email 決して更新されず、EmailCredentialService が 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...
クラスCastException を防ぐため getMessage で IMAPInputStream を扱います
JavaMail は、デコードされた文字列の代わりに IMAPInputStream を返すことができます。 session.getContent() メッセージ内容があらかじめ取得されていない場合 ザ・オブ・ザ・ 直接(String)はparseMultipart()のthrew ClassCastException...
GetHasAttachments() を使用して、Boolean のラッパータイプにマッチします
****************は、ボオラン(ワラッパー)なので、ロボク isHasAttachments() ではなく getHasAttachments() を生成します。 後者のみ プリミティブボオランに存在します。 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...
送信先のアドレスオーバーライドのサポート
FromAddressRequest を emailSendRequest に追加して、フロントエンドを指定できます alias/shared/mailbox アドレスから送信する。 SmtpOnlyProvider リリース 現在、ヘッダのアドレスを継承し、 設定されていないときにプロバイダの設定メール.
Fix attachment parsing and hasAttachment false positives
Three fixes to EmailImapService: 1. toEnvelope: narrow multipart check to multipart/mixed only — plain HTML+text emails (multipart/alternative) no longer sh...
Add com.kamo.z.shared.commerce to EnableJpaRepositories scan
**************** (required by **************** in the shared library) lives under com.kamo.z.shared.commerce but was not included in the JPA repository scan, ca...
Correct field name and type in getFromAddresses response
Backend was sending 'email' key but frontend expected 'address', and sent type 'shared_mailbox' when frontend expected 'shared'. Also fixes hasMailboxes flag wh...
Email provider domains のデフォルトセットがない場合、org domains にフォールバック
KamoMailDomainValidatorは403のorgsのハード フェイリングで、 org domains の DNS-verified ドメインがメールに追加されていない プロバイダードメインレジストリ。 最初のアクティブを使用するフォールバックを追加します。 DNS 検証、トップレベルの org domai...
ステータスフィルタと自動シード必須テンプレートをリストにワイヤーアップ
- EメールTemplateController.list() は ?status= パラメータとフィルタを受け付けます。 既存のfindByOrgIdAndStatus リポジトリクエリを使用する - 初期のシーディングを見逃したorgsのオートシードに必要なテンプレート (seedForOrgIfMissing チ...
Preview uses same auto-vars as sendToUser (org logo + name)
The preview endpoint now injects logoUrl, logoSimpleUrl, and orgName from the org's domain before applying sample content variables, matching the exact variable...
Update EMAIL_VERIFICATION sample vars to match current template
Use expiryText instead of expiryMinutes (renamed variable), and update verifyLink to point to the register subdomain (correct send path).
Preserve DB domain case in NoReply from address
Removed toLowerCase() — the domain already comes from resolvePrimaryDomain which reads org_domains from the database, so case is canonical from DB.
Resolve root domain for NoReply from-address instead of bare subdomain
resolvePrimaryDomain() was returning the first domain entry (e.g. "www") which produced NoReply@www. Now prefers root domains (parent == null) so transactional ...
Add internal.auth.secret to EmailService configmap
InternalAuthFilter was rejecting all service-to-service calls (send, seed-org) with 503 because internal.auth.secret was unconfigured. Matches the same INTERNAL...
Allow transactional send on port-25 relay and auto-seed missing templates
Port-25 SMTP (postfix) requires no auth — transactionalCredentials() was throwing ProviderUnavailableException when user/pass were unconfigured, blocking all ve...
Add dao.repositories to JPA scan so EmailTemplateRepository is found
Same pattern as KamoInitializerService — explicit basePackages overrides default scanning and must include every package that has repositories.
MailboxId→id と ProviderStatus→status をメールボックスリストの応答で名前変更する
メンバーのメールボックスのリストに対するフロントエンドの期待を持つフィールド名を一直線化します.
Support mailbox switching by resolving IMAP credentials per mailboxId
Added getMailCredentialsByEmail to look up virtual_users by email directly, resolveForMailbox to MailProviderResolver with access verification, and optional mai...
Rename DomainService to EmailDomainService to resolve bean name conflict
The shared library's DomainService and EmailService's local DomainService both registered as 'domainService' bean, causing CrashLoopBackOff on deploy.
Correct method signatures in DomainController and MailboxController
- Fix getMemberMailboxes -> getMailboxesForMember in MailboxController - Add missing memberId parameter to getVerificationRecords and verifyDomain in DomainCont...
Extract BCC recipients from IMAP messages
BCC header is retained on sent folder copies. Now extracted alongside To and CC so the frontend can display it in sent item previews.
Provider GET returns both type and providerType, PUT accepts both
GET /api/email/provider now includes both 'type' and 'providerType' fields in the response for frontend compatibility. PUT now accepts 'type' as a fallback when...
