Nehmen Sie alle drei IMAP-Flaggen auf und sagen Sie, warum der Index noch keine Liste servieren kann
Die Migration ist gelaufen, also is_answered existiert und SearchIndexService schreibt jetzt es neben is_read und is_starred. Der Index hat zwei der drei aufgez...
Lesen oder schreiben is_answered, bevor seine Spalte existiert
Folgt der Änderung der Shared-Bibliothek, die das Feld entmappen. Nichts im Einsatz path berührt nun eine Spalte, die KamoInitializer noch nicht erstellt hat. ...
Stoppen Sie das Lecking einer IMAP IDLE-Verbindung auf jedem Browser wieder verbinden
Das Unterbrechen des IDLE-Threads kann einen IDLE nicht beenden: Er ist in einer Blockierung geparkt Socket lesen, dass nur sieht die Flagge, wenn die Lektüre a...
Die Quelle die Hälfte von 1b3553f, die nur ihre Tests begangen
1b3553f inszeniert seine beiden neuen Testdateien und nichts anderes, so landete es behauptet eine nullbare FolderManager.setFlags, die noch nicht existierten u...
Stoppen Sie eine ungenannte IMAP-Flagge aus überschrieben
IMAP-Flaggen sind unabhängig, so "mark this read" muss nichts über den Stern sagen. EmailImapService.setFlags hat immer annullige Booleans genommen und die null...
Stoppen Sie den Versand eines gemeinsamen Anmeldedaten als Konfigurations-Standard
Das gemeinsame Passwort der Plattform wurde als Fallback für DB_PASSWORD und MINIO_ROOT_PASSWORD, so lebte es in diesem Repo und im gebauten Bild sowie in der G...
Nehmen Sie den Anrufer aus der Sitzung, nicht aus dem Abfragestring
GET /api/calendar/calendars nahm userId als Antragsparameter, also ändern eine Zahl in der URL, die die Kalender von jemandem lesen - und weil Kalender getragen...
Machen MKCOL erstellen Sie ein Buch, das tatsächlich gespeichert werden kann
mkCol baute ein ContactBook, das weder eine Organisation noch einen Eigentümer trägt und zurückgegeben 201 unabhängig, so dass ein Adressbuch von einem CardDAV ...
CockroachDB-only SQL, das PostgreSQL ablehnt
CockroachDB buchstabiert den Texttyp STRING; PostgreSQL und YugabyteDB verwenden TEXT. 25 Abgießereien über native Abfragen emittierten noch CAST(x AS STRING) u...
Scope-Adressenbücher an das Mitglied, das sie besitzt
Die Kontakte wurden allein durch Organisation ausgekundschaftet. listBooks(orgId) wurde findByOrganizationId(orgId), und die Kontaktlistenabfrage geöffnet WO c....
Veröffentlichen Sie Zeilen-IDs als Strings - ein neues Buch 404'd in dem Moment, in dem Sie es ausgewählt haben
CockroachDB unique_rowid() erzeugt 64-bit-IDs. Eine echte von contact_books ist 1200081912680906758; JavaScript's JSON.parse dreht alles vorbei Number.MAX_SAFE_...
Aufzeichnung von Nachrichtengrößen statt Null schreiben
SearchIndexService schrieb sizeBytes = 0 für jede Nachricht, die es jemals indiziert hat, unter dem Kommentar "Nicht von der Umschlagsstelle zur Verfügung". Es ...
Wiederherstellen Sie die Dateien 2b23346 fallen gelassen, und beantworten Sie eine überdimensionale senden mit 413
2b23346 wurde durch einen privaten Index übertragen, der nie von HEAD gesät wurde, so hielt sein Baum nur die drei Dateien inszeniert und die Commit gelöscht So...
Hören Sie auf, jeden Senden bei 1MB zu verkappen, damit ein geklebtes Bild tatsächlich ausgehen kann
Die Komposition mit einem geklebten Bild scheiterte mit einem bloßen "Failed to send E-Mail". Die Komponist inlines die Paste in den Körper HTML als Basis64 Dat...
Stopp Hibernate mangling die "::"-Werften in der nativen SQL
Hibernate's native-Abfrage Parser behandelt "::" wie ein entflohener Dickdarm und vorwärts ein single :::. CockroachDB erhalten ************ ARRAY[]:text[]),...
Halten Sie die Dauer NATS-Verbraucher des Indexers nach einem Einsatz erneut an
Ein rollender Einsatz überlappt Hülsen und der ausgehende hält noch die langlebige Verbraucher, so dass die eingehende Pod bind zu "email-metadata-indexer" sche...
Anpassung der Metadaten-Indizes an Array-typed columns
Folgt der Kamo-Shared-Bibliothek Änderung, die Gespräche/search_index Karten Array-Spalten als String[]/UUID[] anstatt List<T-, was aufgehört hat jede indiziert...
Geben Sie den Bulk-Ordner-Index und stoppen Sie ihn bei strukturellen Ausfällen
Unverpflichtete Arbeit von einer parallelen Sitzung, gefegt, so dass der Baum sauber ist. Der Bulk-Index ging Seiten mit TotalPages gesetzt auf Integer.MAX_VAL...
Niemals einen Vorsprung mit den eigenen Adressen des Unternehmens vergleichen
Eine Leitung, deren E-Mail an noreply@kamocrm.com gesetzt wurde, passte zu jeder Nachricht, die Adresse hatte jemals gesendet - ein Blei-Rekord tauchte das Unte...
Seite der Lead Sweep, bis das Fenster abgedeckt ist
Eine einzelne feste Seite verschollene Post leise, wenn ein Briefkasten mehr als pageSize-Nachrichten zwischen den Häkchen - ein Newsletter platzen, ein geschäf...
Adresse Antworten bei Reply-To, und stoppen Lecking SMTP Ausnahmen an die Benutzeroberfläche
Eine schnelle Antwort auf eine KamoCRM-Benachrichtigung scheiterte an .{"error:::Ungültige Adressen" . wörtlich in der Antwortbox gemacht. Diese Zeichenfolge is...
Stoppen Sie die Einstufung eines mehrteiligen/bezogenen HTML-Wurzels als Anhang
Jede transaktionale E-Mail, die wir mit einem inlined org Logo senden, ist in unserem eigenen angekommen /messages Betrachter mit einem richtigen Motiv und eine...
Scannen Sie die geteilten MFA-Repositories
MfaEnrollmentService ist ein @Service in kamo-shared-Bibliothek, also die Wildcard @ComponentScan("com.kamo") in dieser Anwendung konstruiert es, ob oder nicht ...
Zusammenschmelzen Sie doppelten kamo Schlüssel, der abgestürzt EmailService
Das neue E-Mail Service pod ist seit 16e8a05 in CrashLoopBackOff. nie einmal begonnen. snakeyaml wirft DuplicateKeyException auf einer wiederholten Top-Level Sc...
Harden Sie die kubectl Download gegen schuppige Egress [skip ci]
dl.k8s.io über den Ausschritt des Läufers fällt zeitweise mitten im Transfer: Curl: (56) OpenSSL SSL_read: Entschlüsselung fehlgeschlagen oder schlechtem Reko...
Vermisste CampaignController REST Endpoints für /api/email/campaigns hinzufügen
Der Bulk-E-Mail-Arbeitsplatz/Reditor-Anruf GET/POST /api/Email/Kampagnen etc., aber nur CampaignService (der @Service) wurde je erstellt - kein @RestController ...
Entfernen Sie mehrdeutige Anfrage abmeldenMatcher, die Start-up abgestürzt
EmailService montiert zwei Servlets (MVC DispatcherServlet + Spring-WS MessageDispatcherServlet bei /services/*), also eine nackte String-AnfrageMatchers( "/api...
Stoppen Sie Serialisierung berechnet xoauth2 getter, die MailCredentials Redis Cache brach
MailCredentials wird in Redis (GenericJackson2Json) zwischengespeichert. Die hinzugefügte "isXoauth2() boolean getter wurde als "xoauth2" Eigenschaft serialisie...
Scope KamoMail-Postfach/Domain-Inserat zu den org-eigenen Domains (Cross-Tenant-Leak)
SICHERHEIT: ************ hat 'SELECT email FROM virtual_users' (und ************ 'SELECT name FROM virtual_domains') ohne Org-Scoping, also hat mailbox/domain s...
Behalten Sie ausgewählten OAuth-Anbieter auf Rückruf, so dass es aufhört, zu KamoMail zurückzukehren
Der Wechsel einer Org zu Microsoft 365 (oder Google Workspace / Zoho) nie stecken: die OAuth-Callback gespeichert Tokens und nur gedreht Status auf einem bereit...
Resolve welcome-email Logo vom org-Themen-Host, nicht der Apex
Header/Fußlogos in System-E-Mails (Willkommen/Verifizierung) wurden als ************ - ein Achterbahnweg, der nur auf dem Kamo existiert Marketing-Website, also...
Konstante-Zeit intern-auth Geheimnis vergleichen (Tirkel)
Ersetzen String.equals mit MessageDigest.isEqual, so dass Antwort Latenz nicht Leck der X-Internal-Auth gemeinsame geheime Byte-by-Byte. Flottenweiter Schwung d...
422 zurückschicken (nicht 500), wenn das Mitglied keine Mailbox hat
listFolders und andere lesen Endpunkte warfen IllegalStateException aus MailContext.toMailCredentials() wenn ein Mitglied keine IMAP-Anmänger hatte Vorgestellt,...
Speichern Sie transaktionale NoReply sendet nicht an einen gesendeten Ordner
NoReply ist eine nur gesendete Adresse ohne Mailbox, aber jede Transaktion Send noch versucht, ein IMAP-Anhängsel zu seinem Sent-Ordner, die Herstellung einer l...
Mailbox-Liste API gibt UI-förmig ************ zurück
GET /api/email/mailboxes hat das Rohing zurückgegeben (ProviderStatus, lastSyncedAt, keine Mitgliederzahl). Die Einstellungen UI liest ************ so Status wa...
Berechtigungen Sie Berechtigungen-basierte Mailbox-Zugriff für read + Send-as
resolveForMailbox gewährte Zugang nur über eine direkte MemberMailbox-Zuordnung, so Briefkästen aufgetaucht durch ************ Rechte warf NoSuchElementExceptio...
Original-Dateiname und Inhaltstyp im Anhang herunterladen
Die ************-Endpunkte (beide Persönliche und Shared-Mailbox-Controller) emittierten Content-Disposition: ohne Dateinamen-Parameter und Inhaltstyp: applicat...
Sync members.email wenn primäre Mailbox zugewiesen, geändert oder entfernt wird
Wenn eine Mailbox einem Mitglied in einer KAMO_MAIL org zugewiesen wurde, werden Mitglieder.email wurde nie aktualisiert, was dazu führte, dass EmailCredentialS...
Mark-as-read für gemeinsame und Mitglieder-Postfächer
EmailController.setFlags akzeptiert jetzt eine optionale MailboxId Abfrage param und Routen durch resolveProviderWithMailbox, so dass Mitglieds-Mailbox-Flaggen ...
Behandeln Sie IMAPInputStream in getMessage, um ClassCastException zu verhindern
JavaMail kann einen IMAPInputStream anstelle eines dekodierten Strings von part.getContent(), wenn der Inhalt der Nachrichten nicht vorab abgerufen wurde. Die d...
Verwenden Sie getHasAntachments() zum Boolean Wrapper Typ
************ ist ein Booleaner (Wrapper), also Lombok generiert getHasAntachments() nicht isHasAttachments(). Nur letztere existiert für primitive boolean. Verw...
Reset abgestandene hat Anhäufe auf Synchronisation und richtig ansammeln
- Reset hat_attachments=false zu Beginn der Bulk-Sync so abgestandene wahre Werte von der alten falsch-positiven MIME-Erkennung werden vor der Re-Indizes gelö...
Unterstützung von Address override auf Senden
Fügt FromAddressRequest zu EmailSendRequest hinzu, so dass das Frontend angeben kann die Alias/Shared/Mailbox-Adresse zum Absenden von. SmtpOnlyProvider jetzt v...
Fix Befestigungsparing und hat Fehlalarme
Drei Korrekturen an EmailImapService: 1. toEnvelope: schmaler mehrteiliger Check nur auf multipart/mixed HTML+Text E-Mails (Multipart/Alternative) zeigen ke...
com.kamo.z.shared.commerce zu EnableJpaRepositories scan hinzufügen
**************** (erforderlich von **************** in der gemeinsamen Bibliothek) lebt unter com.kamo.z.shared.commerce in der JPA-Repository-Scan enthalten, w...
Korrekter Feldname und Typ in getFromAddresses Antwort
Backend schickte 'E-Mail' Schlüssel, aber Frontend erwartet 'Adresse', und gesendet, gaben die 'shared_mailbox' an, wenn das Frontend 'geteilt' erwartet. Auch F...
Zurück zu org_domains, wenn keine email_provider_domains-Standardeinstellung eingestellt wird
KamoMailDomainValidator war hartngesotten mit 403 für Orgs, die eine DNS-verifizierte Domain in org_domains, aber nie hinzugefügt, um die E-Mail Anbieter Domain...
Revert AntwortEine Änderung . smtpService.send nimmt Anhänge nicht antworten
Status- und automatisch-seed benötigte Vorlagen auf der Liste aufbeeilen
- EmailTemplateController.list() akzeptiert jetzt ?status= param und filter Verwendung der vorhandenen findByOrgIdAndStatus-Abfrage - Auto-Samen erforderliche...
Wie, was Sie sehen Versand?
Jedes dieser Updates landet automatisch in Ihrem Arbeitsbereich. Starten Sie frei und beobachten Sie es Woche für Woche wachsen.