別のカレンダーインテグレーションにアクセスし、クレデンシャルを渡すエンドポイントを停止します
/settings/integrations/memberのエンドポイントの2つの欠陥、両方 署名されたメンバーが到達可能 id はアクセス制御のみでした。 すべての /member/{id} エンドポイントが取得 インテグレーション id はパスから直接、他に何も聞かれないので、メンバーは 別のメンバーの行を更新し...
親の下にサブフォルダを作成します。, その名の点ではなく、
createFolder は、"." をハードコードした新しいフォルダーの名前に親を結合しました。 お問い合わせ 階層を "/" と分離する Gmail は、トップレベルのフォルダーを生成する 文字通り「クライアント」と呼ばれます。 「Clients」の横に座った「Acme」 内部。 分離器は店から来ます、他のどこでも...
クエリからフォルダを取り込むので、Gmailフォルダはすべてのアドレスにすることができます
フォルダはパスセグメントとして移動し、Gmailは階層を分離します。 "/" — その Sent フォルダーは `[Gmail]/Sent Mail` です。 それを置く方法はありません セグメント: * 一度にエンコードされ、%2F は、Tomcat と Spring Security によって再び拒否されます。 ...
フォルダ区切りや特殊な役割を報告するので、Gmailのフォルダは再現可能
Googleワークスペースのメンバーは、「My」にリストされているすべてのフォルダーを見た "[Gmail]/Sent Mail", "[Gmail]/Spam" ラベルの生パスでフォルダー" — そして、彼らがクリックできる「送信」は、存在しないフォルダでした。 クライアントは、それ自体の事実を動作させることはでき...
プロバイダーのコンフィグを別のフォームのフィールドを破棄しないようにする
各コンフィグパネルは、所有するフィールドだけを投稿します。 プロバイダータイプ -- Googleワークスペースパネルは何も送信しませんが、 サービスアカウントジェイソン。 PUT /api/email/provider は、これらの残りを収集し、 WHOLE config blob として書き込むので、メールボックス...
トランザクション送信をサイレントにキル化し、Yugabyte の読み込みの再起動を停止する
EmailTemplateService.sendToUserは、すべてのサービスからサービスまでのエンドポイントです。 プラットフォーム上のトランザクションメール、および3つの読み取り値の @Transactional でした。 findById(org), テンプレートの検索, その後、org'sの遅延初期化 re...
古いポッドが何をやっていたか、ロールアウトフィニッシュしてみましょう
デプロイは、各サービスの唯一のPodを、リクエストをキャッチするために何も交換しました フライト 車両全体に適用される3つの設定: - プロセスがSIGTERMを見る前に、プレストップスリープ10秒。 Kubernetesは、そのPodからPodを削除します EndpointSlice と信号を同時に、Traefik...
メールボックスではなく、メッセージを開きます
アプリは、毎のルート(フォルダ、uid)を持っています。 郵便について伝え、着陸 それが通知を行う小さな誤りの一種であるためにハントするリストに 壊れているので、ディープリンクがメッセージに名前を付けるようになりました。 出版社がUIDを持っていなかったとき、受信トレイに戻って落ちる - Podとは何か 古いコードを...
システムメールは認証しないドメインとして送信してはならない
トランザクションメールは、NoReply@{org プライマリドメイン} を経由して常に発信 私達の自身のリレー。 これは、Kamo が org のメールをホストしているときにのみ安全です。 ドメインのSPFとDKIMを制御する。 メールボックスをGoogleに移動するorg ワークスペース、マイクロソフト 365 ま...
個人的なメールボックスは OAuth レジストリを読み込み、デッドコンフィグではなく
個人的なGmailまたはOutlookのメールボックスを接続することは、その同意を構築しています client id= で URL を空にし、すべての試みはプロバイダーによって拒否されました。 メニュー クライアント-{id,secret}. プラットフォームレジストリが出荷したときに、 PLATFORM OAUTH...
トランザクションを復元して、アタッチメントのオーバーロードが残っている
baf3c88 は、全身を動かすことで sendToUser への添付パラメーターを追加しました。 新たな6面の積み過ぎに。 @Transactionalは5つの引数に滞在しました シグネチャ, それから委任のみで — と POST /api/email/templates/send, プラットフォーム上のすべてのトラ...
IMAP接続を保持する添付ファイルを停止します
ジャカルタメールのレイジーIMAPInputStreamをそのまま返した添付ファイル 店をプールに置いた店はすぐに埋め戻します。 それから続く2つのこと。 応答ボディは接続を引っ張りました 別のリクエストは、他の場所でSELECTを借りて、フォルダは必要だった 可能に保つために開いたままにしてください。1つのIMAP接...
壊れた画像ではなく、貼り付けられたスクリーンショットを表示
ジャカルタメールハンドは、MIME ヘッダーを正確に到着、折り目、すべて戻します。 RFC 5322 では、CRLF で区切って複数の行を上回るメールヘッダを実行できます。 続いて空白で、getContentType() はそうしない。 HTTP が存在しない 折るので、応答ヘッダーのCRまたはLFは応答分割として読み...
DEBUG ではなく、WARN で失敗した関連付けを報告する
リードアソシエーションは、目的の失敗を飲み込む - 問題は、 メッセージはメールボックスを読んだスイープを決して破らなくてはなりません。 行は、これまで発生した障害を証拠する唯一のものです。 DEBUGではなかった。 2026-08-21 から 2026-09-02 まで続く DATE CREATED の発生方法は次...
インサートされた写真の後でタイプされた単語を保ちます
同じ報告されたメッセージは、その写真の下にあるサインオフでした。 ではなかった いずれかに到着 — 読書ペインは、添付ファイルの上に空のボディを示した。 ここには1つのタイプのボディスロットがあり、読者は最初からそれを満たしました テキスト部分が満たされ、後で1つずつ落とされます。 それは正しいルールです 複数の部分...
電話から添付した写真を開いたら
会員は、外部のアカウントから、添付ファイルでメッセージを送信しました。 メッセージが到着しました。ファイルがどこにもなかったため、プレビュー、ダウンロードリンクはありません。 そしてそれを明らかにする制御の提供無し。 添付リストは「インライン」フラグと読み出しペインがすべてドロップします インライン部分はレンダーされ...
メッセージのカウントの名前にアンパサンドとフォルダを与えます
"Bugs & Enhancements" というメールボックスは、サイドバーにカウントされていない 右側のフォルダに、メールボックスの合計が短い そのフォルダのコンテンツによって正確に。 リスト-STATUS はリストラインと STATUS ラインをフォルダーごとに応答し、2 メールボックス名で参加 どちらの名前も...
リストされたメッセージは、単に保存されるだけでなく、検索可能にします
インデックスは2つの方向から書かれています。 メッセージを開くと完全に実行されます 行を記述し、その search vector を計算します。 リスト フォルダは、その前にエンベロープ行を書き、何も計算したので、 行はテーブルにあり、検索不可で、search vector にマッチし、 他にはない。 メールのほとん...
ラベルを作る: ラベルを記録するテーブルを読んで検索
検索インデックスの配列カラムである si.label ids をテストしました。 何もない メッセージのインサートをメール metadata にラベル付けします。 メッセージ ラベル, そして、完全なインデックスとフォルダリストのパスは、列を設定します。 インスタグラム 547行のゼロに出力されるので、条件は空だった ...
インデックス行ではなく、スマートフォルダやラベルをメッセージとして設定
両方のエンドポイントは、email metadata.search index から応答し、クライアントを渡す どのようなテーブルが保持されているか。 SearchIndexEntity を返すスマートフォルダー — messageUid, fromEmail, isRead — メッセージリストがメールメッセージをレ...
メッセージサイズでグラフを尋ねるのを止めてレガシータイプが欠けている
Mike@OptionOne.com の全てのリストが 400 RequestBroker--ParseUri を返す 型に 'size' という名前のプロパティが見つからない場合 ******************** とメールボックスが使えなくなってしまいました。 リクエストは /v1.0 になりますが、エラー...
未読カード提供メールの読み込みと削除を停止する
Home-page unread-mail ウィジェットは email metadata.search index を読み込みます。 直接 — IMAP 接続を一切使用してはならない。 それが存在している理由 — そのインデックスは、フォルダーを学んだことだけ ハードウェア メールをリストする副作用として書かれていまし...
各カレンダーの2つを1つずつ読み込む
起動パッドは、2つのカレンダーウィジェットをペイントし、それぞれが独自のフィードをフェッチします。 2件のリクエストがリストカレンダーに届きました。 プロビジョニングは、 両方が発見を通過し、インサートされた:7つの組織は2つを保持します 「組織カレンダー」の行と13人のメンバー2の「マイカレンダー」の行、 各ペアはマ...
コンテストされたプライマリは、500ではなく409です
キャッチオールは、サーバーのエラーに予想される拒否をしました。 会員が必要とするメッセージと、ルーチンの競合は、 ログの不足.
プライマリメールボックスを別のメンバーが保持する
プライマリはログイン識別子なので、アカウントのサイレントテイクアウト変更 ログインを言及しない画面からアドレスが認証されます。 アサイン プライマリなしでも、無料で動作します.
ドメインではなく、そのalias から org ロゴ URL を作成する
トランザクションメールは実際の受信トレイに送信されますので、ヘッダーとフッターのロゴは実際の受信トレイに送信されます。 クライアント側のテーマ JavaScript なしで解決するために — それらは正確に構築されます SecurityService が保存する方法 その構造は、ドットを持つorgのドメインを使用して...
Conflict の検出は衝突が見つかります
FindBusyForMemberInRange に委任し、編集されたイベントを除外 Java では、null exclusion が SQL 述語を毒できない。 リポジトリをモックし、独自の缶を主張するテスト 答えは戻ってきたので、機能が何も戻った間に緑にとどまっていた 生産。 クエリが尋ねられた新しいレコードと何...
カレンダーが変更されたときに実際にイベントを移動する
ダイアログは編集時に常にカレンダーピッカーを提供し、PUTはいつも実行しています calendarId を選択したが、updateEvent はパラメーターがなかったので、メンバーは選択を監視しました 廃棄されたイベントの滞在場所。 移動は、目的地だけでなく、 起源、または誰もが自分のカレンダーから始めて組織全体に公開...
自分のJVMヒープ天井の上にポッドを大きさで分類 [skip ci]
画像は -XX:MaxRAMPercentage=70 -XX:+ で JVM を起動します。 お問い合わせ 単独でheapは容器の限界の70%を取り、事前接触はあらゆる約束を保ちます サイトマップ 非ヒープ — 未処理のメタスペース、コードキャッシュ、スレッドスタック、直接 バッファ — パーセンテージが見えないほど...
キャンペーンは、受信者リゾルバが既に行っていたように、一括メールの権利をとります
バルク電子メールは半強化され、半分は異なるサービスでした。 ************************ に SecurityService がゲートされた受信解像度 出荷からMANAGE BULK EMAILで- 送風は危険な半分であり、 誰かがそれを知った。 キャンペーン自体は全くゲートされていない:キャンペー...
Mailbox の管理は右に移動し、3 つのエンドポイントがセッションを取得します
MailboxController は、まったく正しく機能しません。 MANAGE EMAIL ACCOUNTS は、 ブラウザの checkRight と VIEW EMAIL ACCOUNTS は参照されません。 組織内のメールボックスは、作成、中断、削除、または再割り当てできます。 URL を知っていた認証電話機...
すべての連絡先エンドポイントは、名前を付ける動詞を取ります
ContactRestController は、 orgOf, userOf, assertBookIsMine を慎重にチェックしました。 assertGroupIsMine と 404 ではなく 403 なので、他の人の ID が確認されていない 存在するため — 26 のエンドポイント全体で正しくチェックされてい...
メンバーが実際に見ることができるカレンダーにコールバックを置く
カレンダーにカレンダーが届くことはなかった。 対象となるサービス アカウントによるカレンダー — FindPrimaryByUser — で、メンバーがいる間にユーザーがグローバルに 1つの組織内のユーザー。 2つの組織に属するアカウント したがって、2つのプライマリカレンダー、正しく、およびルックアップスルーを持って...
誰も求めていない同意の答えを主張する封筒を停止する
remoteImagesAllowed はプリミティブ・ボオランで、3つのエンドポイントしか メッセージ全体に割り当てる。 フォルダのリストは、それを応答しません per row は、ページ内のすべてのメッセージに対する同意のルックアップを意味します。 envelope は false と言った。 「外部画像がブロック...
実際に誰かに通知するイベントのリマインダーを作る
3つの欠陥、1つの症状。 メンバーは、カレンダー通知がなかったと報告した 3つの理由は、この辺にありました。 リマインダーは決して書きませんでした。 API は、すべてのイベントでリマインダーリストを受け入れ、 MemberCalendarServiceはそれを落とし、招待状のみが生成される リマインダーの行 — カ...
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:...
