3つのIMAPフラグをすべて記録し、インデックスがまだリストに機能しない理由を言う
Migration が実行されているので、is answered が存在し、SearchIndexService は書き込み is read と is starred と一緒です。 インデックスは3つのうち2つを記録しました 全体の存在のフラグ。ここからは3つすべてを記録します。 インデックスが返されたリストはオフに...
カラムが存在する前に is answered を読み込み、書きません
フィールドをアンマッピングする共有ライブラリの変更に従ってください。 デプロイされていない パスは、カモ初期化がまだ作成されていない列に触れます。 インデックスが返されたリストは、他のすべてのフィールドを維持し、無効に滞在します。 回答を報告する=すべての行の虚偽は、彼らが決して持っていなかったメンバーに伝えます 返...
すべてのブラウザでIMAP IDLE接続を解除停止
IDLEスレッドの中断はIDLEを終了できません:ブロック中に駐車されます ソケットは、読み込まれたフラグだけを、読み戻すと、最大値まで表示します。 Dovecotのアイドルタイムアウト後。 その登録は同期的に解除されました とにかく、次のサブスクリプションは、まだライブの横にある第二の接続を開きます 最初は、後から出...
ソースの半分 1b3553f, そのテストだけをコミット
1b3553f は 2 つの新しいテスト ファイルと他に何もステージを置きました、従ってそれを割り当てました nullable フォルダーManager.set まだ存在しなかったフラグとその上でコンパイルできない お問い合わせ このテストは、これらのテストが反する変更です.
未名の IMAP フラグが上書きされるのを止める
IMAP フラグは独立していますので、「この読み込みをマーク」は星について何も言わなければなりません。 emailImapService.setFlags は、常に nullable Booleans をとり、スキップしました。 nulls, しかし、フォルダーManager は 3 つのプリミティブと上記のすべての発...
共有されたクレデンシャルを config のデフォルトとして出荷停止
プラットフォームの共有パスワードは、DB PASSWORDのフォールバックとして焼き上げられました。 MINIO ROOT PASSWORD は、このリポジトリとビルドされたイメージに住んでいました。 クラスターマニフェストで。 生産は、DBのデフォルトを使用しないこと — *** 供給 envFrom による DB...
クエリ文字列からではなく、セッションから発信者を取る
GET /api/calendar/calendars はリクエストパラメーターとして userId を取ったので、変更 URL内の数字は、誰のカレンダーを読みます。カレンダーが運ばれるからです。 すべてのテナントで組織がいない。 ワース、変異チェックなし 何でも: POST は UserCalendar 全体にバイン...
MKCOLは、実際に保存できる本を作成する
mkCol は、組織や所有者をも持ち運ぶコンタクトブックを構築しました CardDAV からアドレス帳を作成して 201 を返す クライアントは毎回フラッシュで失敗しました: ORGANIZATION IDはNULLではなく、 オーナーレスブックは OWNER ID が NULL または IS ORG DEFAULT ...
PostgreSQL が拒否する、CockroachDB-only SQL
PostgreSQL と YugabyteDB が TEXT を使用するテキストタイプをストリングする。 ネイティブクエリ全体で 25 個のキャストが CAST(x AS STRING) を生成し、 ::「タイプ文字列が存在しない」と失敗する文字列。 それが壊れたものです /messages -- SendableMa...
会員のスロープアドレス帳
組織単独で連絡先がスコープ付けられました。 listBooks(orgId) は findByOrganizationId(orgId)と、連絡先リストのクエリが開きます WHERE c.contactBook.organization.id = :orgId 所有者の述語なし すべてのメンバーが見た — 一括削除、移...
行の ids を文字列として公開 — 新しい本 404'd を選択した瞬間
CockroachDBユニーク rowid() は 64 ビットの ID を生成します。 contact books から 1 つは 1200081912680906758; JavaScriptのJSON.parseは、過去のものを丸く 番号。 MAX SAFE INTEGER なので、ブラウザは 120008191...
ゼロを書く代わりにメッセージサイズを記録
SearchIndexService は sizeBytes = 0 を記述しました。 "envelopeから利用できない"コメントの下 利用可能だった — フェッチ プロファイルは、単にそれを尋ねることはありません。 email metadata.search index の各行は 製造中の0バイトなので、メールボッ...
ファイルを復元 2b23346 ドロップし、413 で特大送信に応答
2b23346は、HEADから見たことがないプライベートなインデックスによってコミットされました。 そのため、ツリーはそれを段階的にした3つのファイルのみを保持し、コミットは削除しました その他 231. 作業ツリーは触れず、ツリーを復元し、 同じマルチパートの修正を運びます。 また、MultipartLimitAd...
1MB で送信されるすべての送信を止めて下さい、従って貼られたイメージは実際に出ることができます
過去の画像に「メール送信に失敗しました」と表示が失敗しました。 ザ・オブ・ザ・ 作曲家は、貼り付けを本体のHTMLにベース64データURIとしてインライン化し、 複数の "email" JSON 部分では、Tomcat は 1MB でその部分を拒否しました。 FileSizeLimitExceedException:...
ネイティブ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 チ...