CHANGELOG¶
Unreleased¶
v5.10.1 (2026-06-02)¶
- Fix html2text to avoid crash for rowspan=0
v5.10.0 (2026-05-19)¶
- Fix ORGADM import into other organizations
- Add OIDC Bearer token authentication to d1 importer
- Remove C/Go OIDC plugin, require Rust implementation
- Extract oidc-validation library from OIDC service plugin
- Fix d1 importer to check PR_ASSOCIATED property value
- Add inline named property and attachment data support to d1 importer
v5.9.2 (2026-05-08)¶
- Honor default, anonymous, and config-fallback ACEs in mailbox permission check
- Drop multi-value props in auto_event meeting-request copy
- Free rtfpiper HTML buffer on success path
v5.9.1 (2026-04-17)¶
- Support resource mailbox address types in ewsrpc session
v5.9.0 (2026-03-30)¶
- Bump diesel-rs and its relatives from 2.2.12 to 2.3.7
- Bump diesel-rs to 2.2.12 to fix libmysqlclient nullable detection
- Add extendend rich error interfacing to zcore adaptor
- Add RichError owned type and Result conversion traits to rich-errors-sys
- Extend ftstream crate with FtStreamMarker enum and unified element API
- Add safe FtStreamProducer write side to ftstream crate
- Add safe Rust abstraction crate for FT stream parsing
- Add ftstream-sys Rust FFI bindings crate
- Expose additional types in mapi-sys crate
- Extract ftstream engine into a standalone shared library
- Migrate more EWSRPC helper errors from thiserror to snafu
- Include "Top of Information Store" in EWSRPC FindFolder operation
- Refactor EWSRPC to use direct get_user_ids service API
- Modernize rich-errors-sys crate with idiomatic Rust patterns
- Introduce EWSRPC structured error handling with snafu framework
- Centralize EWSRPC session creation with address validation
- Configure ZF logging buffer size to 4KB via CMake option
- Unify test.sh environment variables to match build.sh
- Add individual occurrence cancellation to auto-event plugin
- Fix from_raw_parts_mut panic on empty admin tables
- Fix PidTagDisplayTypeEx values for MLIST, Room, and Equipment
- Support overbooking capacity in auto_event
- Add meeting cancellation handling to auto_event plugin
v5.8.7 (2026-03-26)¶
- Fix IMAP clsfld buffer overflow for long folder names
- Fix CMake 4.3 build compatibility
v5.8.6 (2026-03-18)¶
- Fix NspResolveNames incorrectly matching empty strings against all GAL entries
v5.8.5 (2026-03-16)¶
- Bump rust-html2text from 0.16.0 to 0.16.7
- Fix double-free in common_util_remote_copy_message_by_account
v5.8.4 (2026-03-09)¶
- Fix message System V IPC tape initialize
- Fix AD connect anchor attribute comparison to ignore case
- Fix out-of-bounds access in original received address lookup
- Fall back to substring matching when prefix match fails in the NspiSeekEntries
v5.8.3 (2026-03-02)¶
- Fix NspiSeekEntries MS-OXNSPI spec compliance
- Fix pointer dereference in MOH NSP property value conversion
- Remove vcard X-MS-INTERESTS support
- Fix bearer token auth to update session on mismatch
- Handle Microsoft SYSTEMTIME last occurrence in recurrence patterns
v5.8.2 (2026-02-11)¶
- Expose message To, Cc and Bcc fields in EWSRPC
- Add more Rust string value type converters
- Expose zcore recipient table operation to Rust
- Map more EWSRPC item properties to MAPI properties
- Fix EWSRPC extended property support
- Ignore implicit properties in EWSRPC find item operation
- Fix EWSRPC collection request operations response order
v5.8.1 (2026-02-05)¶
- Fix EWSRPC incorrect folder permission mapping for delete items
v5.8.0 (2026-02-03)¶
- Fix CreateFolder handle lost due to cascade release of parent handle
- Skip empty array properties to prevent Outlook sync error when using fx stream
- Add EWSRPC anchor mailbox fallback for internal impersonation
- Add EWSRPC folder permission support for default and anonymous users
- Add support for default and anonymous permissions in zcore API
- Make Rust NAPI wrapped types usable as hash keys
- Allow d1 importer to import stores without receive folder
- Implement EWSRPC UpdateFolder operation
- Expose zcore modify permissions operation to Rust
- Add more EWSRPC type-safe enum derivation for update containers
- Add deref support for Rust value type helpers
- Make BINARY mapi type Eq and Hash in Rust
- Expose more zcore helper functions to Rust
- Add box add support to Rust parking arena
- Map EWSRPC DateTimeSent field to MAPI client submit time property
- Add UpdateItem operation to EWSRPC with field update support
- Add type-safe enum derivation for EWSRPC item update containers
- Expose MAPI message read flags to Rust
- Add helper-derive crate for procedural macro utilities
- Implement type-safe parking arena for stable value references
- Switch EWSRPC values to use option value types
- Fix NULL pointer dereference in ab_tree_get_node_type
- Implement EWSRPC FindFolder operation
- Set EWSRPC folder id change key attribute
- Fix EWSRPC FindItem operation traversal to flags conversion
- Enhance zcore Rust to allow open of hierarchy tables
- Skip invalid recipient addresses in SMTP client instead of using placeholders
- Add Rust variant of quoted-printable encoder and decoder
- Add compile-time option to encode MIME body as quoted-printable
- Map EWSRPC requested extended properties in GetItem and GetFolder
- Extend EWSRPC GetItem with automatic property fetching
- Add mutation methods to Rust MAPI tagged property value array API
- Fix EWSRPC distinguished property set marshal to use pascal case
- Refactor EWSRPC properties getters to carry store context
- Move EWSRPC properties getters to static trait function
- Separate EWSRPC shape property definitions for GetItem and GetFolder
- Fix missing extended field URI EWSRPC attribute for named props
- Implement mime content for EWSRPC GetItem operation
- Return special empty sync state for EWSRPC sync operations
- Add static define helper to Rust MAPI Binary type
- Implement EWSRPC folder permission retrieval
- Fix test includes for compatibility with newer cmocka
- Replace custom Duration type with prost_types::Duration in EWS timezone handling
- Support loading recurrence master via EWSRPC GetItem operation
- Implement MAPI Rust clsid prop type loading
- Implement GetDelegate operation for Exchange Web Services
- Add option null check API to MAPI Rust BINARY struct
- Enhance zcore Rust open entry with functions to open store and ab entries
- Expose zcore get permissions operation to Rust
- Expose MAPI permission structs and enums to Rust bindings
- Expose zcore load rule table operation to Rust
- Implement MAPI Rust restrictions and actions prop types loading
- Allow bitwise operations in MAPI Rust restriction fuzzy level
- Allow MAPI Rust restriction propval creation from static
- Make MAPI Rust BINARY struct compareable
- Expose MAPI rule actions to Rust bindings
- Complete Rust MAPI multi-value binary property support
- Add null constructor for Rust mapi BINARY type
v5.7.3 (2026-01-13)¶
- Fix plain text body generation by converting HTML to UTF-8 first
- Fix ambiguous name resolution handling in NSP interface
- Add NULL handling for missing message properties
- Switch CI cargo crates.io protocol to git
v5.7.2 (2025-12-12)¶
- Prevent NULL pointer dereference in freebusy recurring event processing
v5.7.1 (2025-12-10)¶
- Implement EWSRPC monthly recurrence patterns for calendar events
- Add panic protection boundary to auto_event FFI interface
- Fix parallel array synchronization in recurrence exception handling
v5.7.0 (2025-11-27)¶
- Update CI mariadb-connector download link and version
- Add X-Forwarded-By header for automatic mail forwarding tracking
- Expose zcore mlist expand to Rust
- Always return recurrence master in ewsrpc find item calendar view operation
- Add ewsrpc duration helpers
- Update ewsrpc bindings to fix calendar recurrence details
- Refactor Rust tzparser into dedicated crate
- Fix deprecated strum derives
- Implement ewsrpc GetServerTimeZones operation
- Fix free/busy timezone support
- Consolidate HTML-to-plain conversion using common-rs
- Integrate Rust HTML to plain text converter
- Add Rust-based HTML to plain text conversion library
- Switch cmake rust build output dir base to zf_log
- Implement mailing list expansion RPC endpoint for zcore
- Add mailing list expansion support for zcore
- Remove the 'get-mlist' trait implementation from the MTA.
- Implement Mlist expanding function for Outlook
v5.6.2 (2025-11-18)¶
- Disable left over debug in ewsrpc get item operation
- Improve d1 importer gz decoder error log message
v5.6.1 (2025-10-30)¶
- Fix compilation without new midb rust command parser
v5.6.0 (2025-10-30)¶
- Add option to allow d1 importer to skip over unregistered named props
- Implement extended_exception array length requirement for recurrence patterns
- Update tokio-tar to astral-tokio-tar
- Add thread-local cache to eliminate redundant config loading in auto event
- Fix message content memory leak in exmdb_local delivery error paths
- Improve auto-event debug logging messages
- Add flexible library guard to Rust exmdb_client crate
- Improve exmdb provider unregisterd named propery logging
- Improve exmdb local delivery logging
- Bump CI to Go 1.25 and update Go linter
- Fix Rust future incompatibilies, unearthed after update to 1.90
- Fix new clippy warnings after Rust 1.90 update
- Bump rust toolchain to 1.90.0
- Change policyd global timeout to line based timeout
- Fix exmdb_local named property mapping to use target store props
- Prevent duplicate properties in TNEF message parsing
- Fix ewsrpc out of office body text copy/paste mismatch
- Fix typo in zarafa_server error message (receipients → recipients)
- Allow midb process isolation level config to be zero
- Fix endless loop for rust ical rrule streaming iterator for empty rrules
- Fix doctest which was not working after rust ical rrule refactoring
- Eliminate locks on hot paths in midb command parser (rust)
- Honor permanent disable mechanism for all msync operations
- Add midb msync process isolation support
- Add Rust integration layer for MIDB command parser
- Use dedicated mmap pool for thread stack memory
- Add EWSRPC FindItem CalendarView implementation
- Convert mapi-sys rrule iterator to streaming
- Expose more ext_buffer_ helpers in mapi-sys
- Add idiomatic Rust iterator for ICAL_RRULE recurrence patterns
- Refactor MAPI restriction memory management with scopeguard
- Add deserialization methods to mapi appointment structures
- Fix doc string typo in mapi-sys
- Make FILETIME_VALUE orderable in mapi-sys
- Expose TABLE_FLAG_ constants in mapi-sys
- Enhance EXT_PULL interface with flexible byte slice input and optional allocation
- Fix borrow checker issue in Propsable trait implementation
- Ensure midb cleanup on all sync termination conditions
- Add permanent disable mechanism for mailbox M-SYNC operations
- Filter unregistered named properties when saving.
v5.5.3 (2025-09-23)¶
- Use lossy string conversion when converting rich error message
- Fix private dislist support in ab lookups
v5.5.2 (2025-09-22)¶
- Do not replace the sender display name if it is the same as the SMTP address.
- Set delivery properties consistently for mail rules
- Fix PIDTAG_MESSAGE_RECIPIENT_ME property setting for rules
- Fix setting free/busy permission bits via zcore api
v5.5.1 (2025-09-11)¶
- Add panic check for mismatched recurrence exception arrays
- Add d1 import support for PT_MV_I2 property type values
- Avoid using emtpy sender display name when it is passed as an empty
v5.5.0 (2025-08-11)¶
- Add conditional bearer ADFS authentication for MacOutlook clients
- Prevent proxy buffering of MAPI over HTTP chunked responses
v5.4.0 (2025-08-07)¶
- Prevent auto event and auto reply processing for spam messages
- Implement comprehensive configuration system for auto_event plugin
- Improve EWS streaming subscription timeout handling
- Update EWSRPC proto stub from proto files
- Fix missing parent folder ID in EWS notifications
- Implement proper streaming for EWS subscription events
- Fix EWS subscription paraent folder mapping
- Improve text wrapping in plain-to-HTML conversion
- Fix bounds check in plain_to_html conversion
v5.3.0 (2025-07-28)¶
- Map additional EWS fields for Outlook compatibility
- Add message class property to all EWS operations
- Add field URI value to unknown field parsing errors
- Track actual event count in EWS streaming logs
- Make EWS stream collection more predictive
- Add automated cleanup for expired EWS subscriptions
- Fix heap buffer overflow in cfg file parser when writing to empty file
v5.2.0 (2025-07-17)¶
- Add body support to ewsrpc item related operations
- Expose mapi rtf functions to Rust
- Expose zcore utf-8 encoding/decoding to Rust
- Make zcore Rust error api more flexible
- Fix off by two bytes plain to html converter
- Map unknown item message class values to message for ewsrpc item operations
- Verify traversal attribute in ewsrpc FindItem operation
- Fix EWS GetFolder operation for Thunderbird
v5.1.0 (2025-07-04)¶
- Cleanup and fix remaining ewsrpc clippy warnings
- Disable ewsrpc gRPC error response logging to default logger
- Implement ewsrpc FindItem operation
- Add restriction wrappers to mapi-sys crate
- Rebuild ewsrpc bindings
- Implement the fields filter for FTS backend
- Add conflict test
- Add update event to the list of test files
- Add extra asserts to tests
- Add exception test
- Add AcceptAndAdd test
- Assert bool result from auto event
- Implement ewsrpc SyncFolderItems and GetItem operations
- Use MAPI API to update propids of session
- Add PidLidExceptionReplaceTime to excep responses
- Use high lvl API in AutoEvent's freebusy
- Implement ewsrcp request logging and tracing support
- Implement ewsrpc SyncFolderHierachy operation
- Fix misleading zcore ics down ctx not found debug message
- Add missing mapi-sys ext_pull api
- Fix exception search in AutoEvent response update
- Only subtract if we are sure it won't overflow
- Don't convert CStr to str when not needed
- Fix a potential invalid access bug
- Rename timezone functions for better clarity
- Use High level MAPI API in timezone calculations
- Set transition dates to UTC when checking dst
- Enhance ews subscriptions to support resurrection
- Set ewsprc thread stacksize to 8 MiB
- Expose more mapi and zcore low level api to rust
- Fix missing initialize to 0 in zcore ics
- Fix out of bounds memory read in zcore ics
- Fix duplicate define in object tree
- Export the RECURRENCE ID from the UTC time.
- Implement ewsrpc subscriptions
- Add zcore object tree related types and funcs to Rust bindings
- Auto detect asan in the unit test runner
- Bump CI to build with Go 1.24
- Bump CI to build with gcc 12
- Remove exmdb notification subscription from auto event
- Adapt auto event implementation to new exmdb client API
- Unify exmdb protocol defines into exmdb client library
- Refactor Rust exmdb client shared library API
- Add a bunch of GUID consistency unit tests
- Expose rop provider ui in rust mapi crate
- Update notification implementation consistency for eas module
- Expose more entry id related functions in mapi-sys
- Implement clone and copy for PROPERTY_NAME in mapi rust
- Fix Rust rop api gc_array byte size from 8 to 6
- Fix use after free in mapi unit test runner
- Increate test runner Rust default min stack size to 4 MB
- Set resp status when attendees reply to MRs
- Rename creator to handler
- Add traits to support re-use for new handler
- Pass X-Real-Ip as REMOTE_ADDR for EAS FastCGI client
- Export and import ORIGINALSTART/END MS ical props
- Remove the ASCII check of the email address in the MIME parser function.
- Do not use the GAB display name as the sender
- Change PT_BOOLEAN type from the C type to bool
- Read only 1 byte for BOOLEAN types
- Treat "byte" type as boolean in comparisons
- Change struct name to follow MS' term
- Choose which props to add instead of which not to
- Adapt with flaged multivalue property
- Remove the default permission setting of the IPM subtree folder
- Implement amidb async sync queue
- Update amidb default limits to match new implementation specifics
- Add midb server sync start and and failed logging
- Directly unload exmdb db even if there are dynamic nodes
- Add Rust implementation of amidb
- Automatically convert sanitizer build flags to Rust link flags
- Use high level mapi API in AutoEvent
- Split write event function
- Add missing properties to response
- Free allocated store folder when user is deleted
- Add alloc_context fuzzer unit test
- Add distinct amidb timeout and error logging
- Add midb M-SYNC check sync support
- Align memory of buffer allocator and hash tables using it to 8 bytes
- Add address sanitize test runner helper
- Fix adddress sanizer errors in unit tests
- Fix Clang and sanitizer build
- Update ewsproc protocol to use bidirectional streaming
- Disable ewsrpc experimental operations by default
- Implement ewsrpc GetFolder operation
- Make Rust zcore service and session directly usable
- Make a bunch of mapi Rust crate types sortable
- Update ewsrpc proto files and rebuild bindings
- Fix invalid null ptr check at zcore startup
- Fix invalid Rust zcore MAPI object type mappings
- Add ewsrpc error handling to rpc status
- Implement ewsrpc user availability operation
- Add more services to Rust zcore crate
- Add prop set support to zcore crate
- Add Rust zcore crate and implement ewsrpc oof
- Add initial stub of ewsrpc service plugin
- Fix Rust tagged propval make double reference types
- Add API helpers to Rust freebusy-sys crate
- Exctend Rust mapi high level API round 3
- Add ordered service plugin loading to zcore
- Add error handling and setter API to mapi rust
- Add Rust mapi filetime from chrono conversion
- Extend mapi crate API further
- Make Rust common BOOL type comparable with bool
- Bump rust toolchain to 1.85.0
- Add initial implementation of a high level API to the mapi crate
- Autogenerate mapi-sys PidLid constants for named props
- Add extended GUID Rust common-sys api
- Enumerate mapi-sys named property ides for unit tests
- Extend mapi-sys api for attachment content
- Expose u32 converter for proptags in mapi-sys
- Add more unit test capability to mapi-sys crate
- Add static proptag types to mapi-sys
- Rust more mapi-sys api overhaul and add integration testing
- Further simplify Rust mapi-sys propval API
- Expose mail and mime api to Rust via email-sys
- Refactor mapi-sys propval creation, definition and debug
- Refactor mapi-sys interfaces for arrays and safety
- Ensure to create symlink for generated Rust soname libraries
- Derive copy trait treewide for all rust bindgen types
- Pass CMAKE_BINARY_DIR to cargo targets
- Move zcore defines from c files to h files
- Allow rust mapi tag static defines
- Ensure that a thread local stack guard cannot be passed to other threads
v4.4.4 (2025-06-16)¶
- Fix cherry-pick compat
v4.4.3 (2025-06-16)¶
- Add missing properties to response
- Don't convert CStr to str when not needed
v5.0.1 (2025-06-05)¶
- Only subtract if we are sure it won't overflow
v5.0.0 (2025-06-04)¶
- Don't convert CStr to str when not needed
- Fix a potential invalid access bug
- Rename timezone functions for better clarity
- Use High level MAPI API in timezone calculations
- Set transition dates to UTC when checking dst
- Enhance ews subscriptions to support resurrection
- Set ewsprc thread stacksize to 8 MiB
- Expose more mapi and zcore low level api to rust
- Fix missing initialize to 0 in zcore ics
- Fix out of bounds memory read in zcore ics
- Fix duplicate define in object tree
- Export the RECURRENCE ID from the UTC time.
- Implement ewsrpc subscriptions
- Add zcore object tree related types and funcs to Rust bindings
- Auto detect asan in the unit test runner
- Bump CI to build with Go 1.24
- Bump CI to build with gcc 12
- Remove exmdb notification subscription from auto event
- Adapt auto event implementation to new exmdb client API
- Unify exmdb protocol defines into exmdb client library
- Refactor Rust exmdb client shared library API
- Add a bunch of GUID consistency unit tests
- Expose rop provider ui in rust mapi crate
- Update notification implementation consistency for eas module
- Expose more entry id related functions in mapi-sys
- Implement clone and copy for PROPERTY_NAME in mapi rust
- Fix Rust rop api gc_array byte size from 8 to 6
- Fix use after free in mapi unit test runner
- Increate test runner Rust default min stack size to 4 MB
- Set resp status when attendees reply to MRs
- Rename creator to handler
- Add traits to support re-use for new handler
- Pass X-Real-Ip as REMOTE_ADDR for EAS FastCGI client
- Export and import ORIGINALSTART/END MS ical props
- Remove the ASCII check of the email address in the MIME parser function.
- Do not use the GAB display name as the sender
- Change PT_BOOLEAN type from the C type to bool
- Read only 1 byte for BOOLEAN types
- Treat "byte" type as boolean in comparisons
- Change struct name to follow MS' term
- Choose which props to add instead of which not to
- Adapt with flaged multivalue property
- Remove the default permission setting of the IPM subtree folder
- Implement amidb async sync queue
- Update amidb default limits to match new implementation specifics
- Add midb server sync start and and failed logging
- Directly unload exmdb db even if there are dynamic nodes
- Add Rust implementation of amidb
- Automatically convert sanitizer build flags to Rust link flags
- Use high level mapi API in AutoEvent
- Split write event function
- Add missing properties to response
- Free allocated store folder when user is deleted
- Add alloc_context fuzzer unit test
- Add distinct amidb timeout and error logging
- Add midb M-SYNC check sync support
- Align memory of buffer allocator and hash tables using it to 8 bytes
- Add address sanitize test runner helper
- Fix adddress sanizer errors in unit tests
- Fix Clang and sanitizer build
- Update ewsproc protocol to use bidirectional streaming
- Disable ewsrpc experimental operations by default
- Implement ewsrpc GetFolder operation
- Make Rust zcore service and session directly usable
- Make a bunch of mapi Rust crate types sortable
- Update ewsrpc proto files and rebuild bindings
- Fix invalid null ptr check at zcore startup
- Fix invalid Rust zcore MAPI object type mappings
- Add ewsrpc error handling to rpc status
- Implement ewsrpc user availability operation
- Add more services to Rust zcore crate
- Add prop set support to zcore crate
- Add Rust zcore crate and implement ewsrpc oof
- Add initial stub of ewsrpc service plugin
- Fix Rust tagged propval make double reference types
- Add API helpers to Rust freebusy-sys crate
- Exctend Rust mapi high level API round 3
- Add ordered service plugin loading to zcore
- Add error handling and setter API to mapi rust
- Add Rust mapi filetime from chrono conversion
- Extend mapi crate API further
- Make Rust common BOOL type comparable with bool
- Bump rust toolchain to 1.85.0
- Add initial implementation of a high level API to the mapi crate
- Autogenerate mapi-sys PidLid constants for named props
- Add extended GUID Rust common-sys api
- Enumerate mapi-sys named property ides for unit tests
- Extend mapi-sys api for attachment content
- Expose u32 converter for proptags in mapi-sys
- Add more unit test capability to mapi-sys crate
- Add static proptag types to mapi-sys
- Rust more mapi-sys api overhaul and add integration testing
- Further simplify Rust mapi-sys propval API
- Expose mail and mime api to Rust via email-sys
- Refactor mapi-sys propval creation, definition and debug
- Refactor mapi-sys interfaces for arrays and safety
- Ensure to create symlink for generated Rust soname libraries
- Derive copy trait treewide for all rust bindgen types
- Pass CMAKE_BINARY_DIR to cargo targets
- Move zcore defines from c files to h files
- Allow rust mapi tag static defines
- Ensure that a thread local stack guard cannot be passed to other threads
v4.4.2 (2025-06-04)¶
- Don't convert CStr to str when not needed
v4.4.1 (2025-04-22)¶
- Increase midb command thread stack size
- Fix heap buffer overlow when loading msg rcpts
- Increase context allocator offset maximum size
- Add dev access token help instructions
- Set CMake policy version minimum to 3.14
v4.4.0 (2025-03-17)¶
- Add domaininfo utility similar to userinfo
- Add detail mode to userinfo command
- Fix all day event exception ics timezone handling
- Fix ical import recurrence id timezone handling
- Allow Outlook ICS to sync items with missing PROP_TAG_MESSAGESTATUS
- Fix CMake build dependency support for Rust only crates
- Update icon index when forwarding mail
- Fix auth_cache_lib dependency cycle
- Pin CI rustup installation to 1.27.1
- Fix build when nothing was built before
- Run CI unit test with debug logging
- Fix ext buffer TZRULE pull year
- Use mapi_propnames.txt in exmdb_local instead of own variant
- Fix emmdb_local named property memory size
- Keep PR_BODY property present in the response data of the ICS download
- Fix force check in exmdb function
- Set the default value of the Message Class property to 'IPM.Note' for newly created messages
- Add missing properties to mr response
- Don't save properties if empty proplist
- Support EX addresses in the exmdb_client_lib
- Pass query_service fn to exmdb_client_lib
- Get MIME parsing function adapted with SMIME mail that contains inline attachments
- Mark meeting request email as processed
- Add environment variable to disable recurring MRs
- Add support for recurring exceptions in AutoEvent
- Add recurrence helper code
- Rename SimplifiedAction
- Properties Manager refactor round 6
- Properties Manager refactor round 5
- Properties Manager refactor round 4
- Properties Manager refactor round 3
- Properties Manager refactor round 2
- Properties Manager refactor round 1
- Fix typo
v4.3.2 (2025-03-17)¶
- Allow Outlook ICS to sync items with missing PROP_TAG_MESSAGESTATUS
- Fix CMake build dependency support for Rust only crates
- Fix auth_cache_lib dependency cycle
- Pin CI rustup installation to 1.27.1
- Fix build when nothing was built before
- Fix ext buffer TZRULE pull year
v4.3.1 (2025-01-16)¶
- Add log-only mode to session rate limiter service
- Add log-only mode to ip filter service
- Allow session rate limiting to be disabled
v4.3.0 (2024-12-19)¶
- Fix string buffer bug when retrieving free-busy data from multiple users
- Add unit tests for freebusy recurrence
- Fix freebusy recurrence check
- Fix CI pipeline tool installation
- Support multiple socket listeners for policyd
- Check OOF state to apply OOF rules
v4.2.0 (2024-12-03)¶
- Make sure the original received name is a valid alias name
- Make sure the representing name is a valid email address
- Add charset header to WWW-Authenticate: Basic responses
- Update 3rd-party diesel and tonic crates
- Implement oidc service plugin rust variant
- Add dedicated session scope for api access
- Support bearer tokens without sid claim in reauth
- Add new auth_user system service
- Make zcore token logon sid claim optional
- Fix extra data after http error responses
- Add dedicated service error for token validation
- Improve rust service plugin mem copy performance
- Add support to read bool to rust config file parser
- Use dedicated error code for session scope insufficient error
- Add oidc authentication for mapi and reauth endpoints
- Add system service to get oidc iss
- Setting the PidLidIsException property when importing exception ics files
- Use target store to compute change number in message_copy_by_account
- Use target store to compute change num in message remote copy
- Don't generate PropertyRow of external addresses in the ResolveName response
- Filter email exceptions
- Use unicode replacement character when import d1 invalid utf8
- Skip RRULE Property for Exception Event ICS Export
v4.1.3 (2024-11-18)¶
- Fix auto event ffi link dependency
- Fix token session periodic refresh
- Return curr time if last mod prop not present
v4.1.2 (2024-11-13)¶
- Add LastModifier properties
- The entryid format in the ResolveNames response should be in Permernent EntryID, so the b_ephid parameter of the nsp_interface_fetch_row function should be false.
v4.1.1 (2024-11-04)¶
- Fix hpm processor scheduling refactoring state error
v4.1.0 (2024-10-23)¶
- Don't auto accept or auto add any recurring MRs
- Fix read flag setting issue with Outlook Online mode
- Auto reject recurring MRs
- Pass real client user agent to eas reauth
- Re-check freebusy when editing event
- Add support for make_ical_uid in freebusy-sys
v4.0.2 (2024-10-08)¶
- Add processed flag so WebApp doesn't process it
v4.0.1 (2024-10-08)¶
- Add support for DecideBasedOnFreebusy
- Remove line break for imap info log message
- Set status to busy, if auto accepted
- Make use of proxy protocol TLS information for IMAP and POP3
v4.0.0 (2024-10-02)¶
- Remove obsolete auth cache hash cache interval config
- Improve adminrpc logging when user has no maildir set
- Create auto event configuration when creating rooms or equipment
- Auto add received calendar invites to recipient calendar
- Refactor freebusy library so it works multi-threaded
- Add Rust Cargo dependencies to CMake dependencies
- Add Rust bindings for freebusy lib
- Refactor auth cache password cache interface
- Switch prost-wkt back from fork to offical repo
- Move system entitlement check after auth for pop3 and imap
- Implement longer session expiration for oidc token sessions
- Implement reauth OPTIONS request to sign in without sesssion
- Remove obsolete C variant of timer_agent plugin
- Remove obsolete C variant of timer tool
- Remove obsolete C variant of userinfo tool
- Update Go global and mod change detection logic
- Update e4a-entitlement library
- Update e4a-go-e4a library
- Implement reauth endpoint session revoke via DELETE
- Include reauth scope in HTTP login audit data
- Remove login audit from zcore
- Log server license issue reject scope
- Add support for query parmeters when parsing reauth URL scope
- Make oidc sid claim mandatory for zcore logon with token
- Use a single zcore session per user
- Remove internal zcore logon server password
- Use blocking threads for eas connection subscribe
- Make rpc allocator new and free available as http service
- Use error level filter for reqwest by default
- Use blocking threads for eas subscribe and unsubscribe actions
- Ensure to always set session expiry on session save
- Use new user session sub system for EAS connections
- Disable tower sessions core logging by default
- Add support for client defined session cookie session
- Allow reauth endpoint to skip license ensuring when oidc scope
- Implement selective session creation based on context
- Disable internal http service HTTP/1.1 keep alive support
- Move session refresh log message to trace level
- Remove http server auth times counter and check
- Deduplicate various http server related memory data
- Disable support for Outlook Anywhere at build time
- Make HTTP request headers available to hpm handlers again
- Use real client IP for http ip block and limit checks
- Remove obsolete http rewrite implementation
- Remove obsolete active sync proxy implementation
- Allow session scope selection via http request
- Enrich session data with user agent and source ip
- Migrate in-memory session store to redis based session library
- Move rust redis client implementation to use fred
- Add action configuration
- Add support for auto accept and auto reject
- Rename module
- Refactor auto event to generate properties seperately
- Update submit function to use aliases to reply message
- Don't check mlist for "default permissions"
- Skip instance cycle check when copying between different stores
- Create auto_event library
- Add PCL to mapi_sys
- Create exmdb_client library
- Add new const do defines
- Improve rest of Cmake file change detection logic
- Further improve CMake Go dependency change detection
- Fix memcpy compile time warning
- Treat mlist default as not found
- Further refactor CMake Rust and Go dependency change detection logic
- Set explicit CXX compiler when building
- Use common randstring helper to create nspi session context
- Remove unused mail approving mpc plugin
- Remove unused "long hash" implementation
- Refactor CMake Rust crate dependency change detection logic
- Refactor scheduled thread pool and async runtime config
- Improve rust cbindgen syntax error handling
- Implement seek and read for mem_file rust binding
- Filter rust tracing log messages by default
- Use default async runtime by default
v3.8.3 (2024-09-19)¶
- Skip instance cycle check when copying between different stores
v3.8.2 (2024-09-12)¶
- Replace p-tag with pre-tag in plain_to_html function to keep original format
- ActiveSync calls the message_object_clear function to clear all message properties before uploading modifications. The Predecessor-Changelist property must be retained to work with Outlook cache mode.
v3.8.1 (2024-08-22)¶
- Reduce memory allocation for zcore query rows
- Log warnings for memory allocation errors and large allocs
v3.8.0 (2024-08-09)¶
- Avoid to add http plugin services twice when registering
- The Priority header should map to the Importance property, not the Sensitive property.
- Fix clippy warnings treewide after rust toolchain update
- Align adminrcp stack allocator allocations to 8 bytes
- Fix CXX compile flag warning
- Fix compatibility with new http crate update
- Update 3rd-party chrono crate
- Update 3rd-party hyper crates
- Update 3rd-party tokio crates
- Update 3rd-party tonic and prost crates
- Update 3rd-party diesel and related crates
- Bump rust toolchain to 1.79.0
- Update 3rd-party metrics crates
- Initialize first http context propertly
- Further improve rust cbindgen header generators
- Fix rust vs cmake vs build.rs change detection
- Improve adac propval not found error conditions
v3.7.1 (2024-07-18)¶
- Add additional exmdb property set error logging
- Correct the RTFInSync value for sticky note messages
- Correct the RTFINSYNC value for contact messages
- Fix use after free in adac error case error code handling
v3.7.0 (2024-07-10)¶
- Fix alloc success check in zcore set_permissions
- Fix zcore debug log message confusion
- Add a force parameter to the mail_engine_sync_mailbox function to implement midb force sync
- Fix admin rpc plugin unload lock order
- While importing only import used named properties
- Log when exmdb has too many named properties for store
- Display aliases in proxy address tag in outlook
- Add alias suport to adac ab_tree
- Display aliases in proxy address tag in zcore
- Add alias vector to user type
- Add minimal personal store permission table to admin RPC
- Log zcore permission check permissions on failure
- Add debug logging to admin RPC parser
- Add backtrace library
- Use sub_type when generating ab tree
- Use correct "type" field name in internal admin RPC API for users
v3.6.0 (2024-06-18)¶
- Add ad_connect flag to enable/disable sync of user aliases
- Implement user aliases sync via AD connect
- Ensure user alias API calls can only create aliases for normal users
- Allow i18n email (RFC 6531) for username and aliasname API calls
- Add support for provider_id when creating user aliases
- Add Rust implementation of admin management plugin round (3)
- Add check for domain alias when receiving as group
- Add check for domain alias when sending as a group
- Add get_alias to traits
- Add support for mlist inside mlist when receiving emails
- Add support for mlist inside mlist for outgoing check
- Fix admin RPC api user update for users which have aliases
- Check account type before doing messages copy
- Change add and log function to define
- Add logging to oxcical_import
- Fix ical categories typo
- Change message class whitelist to a blacklist
v3.5.5 (2024-06-05)¶
- Return mlist members and permissions sorted by username
v3.5.4 (2024-05-21)¶
- Add a properties blacklist for importer messages and folders
- Use auth cache in imap login
- Write data len as le
v3.5.3 (2024-05-15)¶
- Calculate Finder folder entryId in zcore for creating search folder
- Fix export of S/MIME signed mail
- Add logging for user quota exceeded error conditions
- Move emsmdb interface async wait item exist debug message to verbose
- Improve zcore rpc error logging by logging the call id
v3.5.2 (2024-05-08)¶
- Add support to read unaligned pointers for user_table C/Rust interop
- Ensure importer store finalizer is allocated in its own scope
- Fix typo in debug message
- Cleanup eas plugin logging
v3.5.1 (2024-05-03)¶
- Set associated messages size while importing
- Set individual message sizes in database on import
- Set store message size after import
- Add filename and extension to smime attachments
v3.5.0 (2024-04-29)¶
- Add support to import distlists
- Add support for IPM and IPM.OLE.CLASS messages
- Move attachment data to cid location
- Add support to import attachments
- Add support for import of microsoft msg classes
- Update README wording and typos
- Generate 3rd-party licenses on dist
- Simplify Rust dependency chain
- Fix 3rd-party license list for Go dependencies
- Include rich-errors in 3rd-party license list
v3.4.1 (2024-04-19)¶
- Fix exported prometheus metrics types for compatibility
v3.4.0 (2024-04-19)¶
- Avoid endless Ping loop in eas change detection logic
- Spawn dedicated task for eas change event procs
- Remove -Dwarnings from CI Rust clippy stage
- Fix use after free while initializing zcore LOGIN_SCRIPT_PATH
- Enable Tokio runtime metrics treewide
- Add support to collect Tokio runtime metrics
- Ensure to initialize global metrics recorder for Rust only apps
- Build Rust tokio with unstable flag to support metrics
- Unify Rust tokio runtime bootstrap implementations
- Add metrics collector support to all Rust MySQL db pools
- Simplify management_pan build order and inter dependency chain
- Add metrics collector support for management_pan
- Improve memory management for registered metrics collectors
- Improve metrics collectable interface
- Initialize metrics sub system and add metrics listener support treewide
- Enhance metrics system to be usable from Rust only code
- Expose exmdb console info through the metrics exporter
- Extend metrics system with collectable callbacks
- Make Rust logger library name helper public
- Add process metrics collector
- Add prometheus metrics sub system to all plugins
- Fix Rust library recursive change detection scope
- Add prometheus metrics exporter shared library framework
- Implicitly add directory level CMake link libraries as Rust dependencies
- Make e4a project version available to Cargo via CMake
- Handle all eas cmd variants diretly in mod-activesync
- Remove query ? requirement for mod-activesync routing
- Enable mod-activesync routing for OPTIONS requests
- Skip building eas service plugin as test
- Ensure mime field parser produces null terminated values
- Ensure to include debug symbols for Rust code by default
- Avoid loosing eas events in between Sync
- Avoid loosing eas events when the client relies on Ping
- Implement eas core service plugin
- Implement copy for GUID types in Rust bindings
- Allow core system services to query for all registered services
- Expose additional types and defines in mapi-sys crate
- Remove unused http mod_fastcgi implementation
- Update fastcgi and rewrite rules to only configure eas routing
- Remove unused http cache implementation
- Remove obsolete C implementation of hpm proxy plugin
- Remove obsolete C implementation of hpm force_https plugin
- Remove obsolete C implementation of pan management plugin
- Remove obsolete C implementation of fcgi_rpc service plugin
- Remove native TLS support from http server implementation
- Remove http TLS SNI plugin from http service
- Extend http reauth endpoint return values
- Ensure to compare whole sql cursor when checking window exit condition
- Ensure to exit importer sequencer loop scrolling window
- Add a bit more debug logging to importer progress
- Fix importer included and excluded organization stores configuration
- Ensure importer d1 meta is loaded before upn retrieval
- Decrease importer no mapped parent log level to trace
- Promote importer unsupported message class log message to warning level
- Add importer support for import SMIME message classes
- Log message type when importer is unable to find a mapped parent
- Ensure import in dry run skips reindex
- Add support for E4A_LOG_FILTER env variable
- Skip the mlist address for the getuseravailability function to avoid returning an error code.
- Add support for import meeting request messages
- Add support to import notes
- Add support to import tasks
- Add support to import calendar events
- Map the d1 named properties ids with the e4a ids
- Import named properties and create map ids
- Add http e4a.internal.v1.reauth endpoint
- Skip checking user settings on zcore logon with interal srv passwd
- Skip all search folders
- Add additional logging for easier debug
- Set read flag in messages
- Add support for GUID types on import
- Avoid panic when streaming d1 import hierarchy and the sender ends prematurely
- Add null byte to the end of importer generated cid files as required
- Add explicit trace logger for distlist hierarchy on import to avoid log spam
- Add support for I2 property type on import
- Don't use yoda conditions on rust
- Add contacts to importer import white list
- Add support to queue imported users for full text indexing
- Write len to cid files for certain properties
- Add NULL term to each string in the MV_STRING prop
- Add length to each entry in MV_BINARY property
- Ignore emtpy cid properties when importing d1 message properties
- Skip import of outbox hierarchy if it is present in d1 hierarchy stream
- Generate normalized subject for messages while importing
- Move importer cid persist logging to trace level
- Add importer message class filter to only import IPM.Note for now
- Improve importer logging further
- Avoid cloning message properties for no reason in importer
- Improve and reduce importer logging verbosity
- Compute importer imported message size correctly
- Implement import cid file commit and rollback
- Import Recipients
- Import messages
- Add maildir to private service
- Add allocate cid module
- Resize folder eid range when needed on allocation
- Fix typos
- Fix the bug of missing READ flag of folder access tag
- Dump db_engine info connection table to csv file instead of log
- Port exmdb_provider plugin console implementation to Rust
- Initialize Rust logger in codepage_lang plugin
- Expose str_hash implementation in Rust common-sys module
- Improve double list API to make it usable from Rust
- Implement the IMAP MOVE command
- Add imap support for double quotes and space in folder names
- Add zero to the end of the unicode slash char pointer
- Further split out d1 propval conversion to avoid duplication
- Support ad_connect basic auth username with domain
- Bump e4a-rust-e4a to 0.6.0
- Move d1 to store propval conversion to own trait to allow easy reuse
- Change proptag column to BigInt
- Add more bitwise comparison operators to service RPC users request
- Check mlist outgoing privilege when sending through zcore or emsmdb
- Replace Ascii slash with Unicode slash in folder names to display correct hierarchy in IMAP
- Handle text search of binary type property in restriction evaluation functions
- Improve d1 importer early exit client behavior
- Fix potential eid collision for new messages
- Don't reallocate after range is full
- Include offset when storing d1 importer global current eid value
- Implement d1 import folder mapping amd eid allocator
- Add an option to allow d1 imports to enabled stores
- Refactor d1 importer global eid allocation
- Simplify d1 import folder id and eid setters
- Simplify sqlite get set configuration traits
- Avoid to increment initial change number twice while importing d1
- Rename and reorganize sqlite database adaptors for consistency
- Validate d1 import user store
- Install and enable d1 importer pan plugin by default
- Add trusted proxy and client IP white list to d1 importer endpoint
- Remove left over debug logging
- Add new URL route for d1 importer to prepare for public exposure
- Remove usage of async-trait in importer as far as possible
- Rename importer traits for clearer names
- Refactor importer stream handling into multiple files
- Refactor importer conversions and change number handling
- Even more importer cleanup
- Refactor importer into more files
- Some more importer cleanup
- Fix importer folder import property loop
- Report import config including dry run to client
- Add importer support for incoming attachment data in d1 stream
- Small importer cleanups
- Allow to set importer dry_run flag via importer settings
- Identify special folders
- Import folder properties
- Get Change Number from database and Save it in the end
- Allocate eid before creating folder
- Fix typos
- Fix importer hierarchy stream sequencer to actually include prop vals
- Use eid and time store database columns as BigInt
- Update timer database models to latest concepts and style
- Simplify and streamline timer code
- Implement importer target exmdb writing basics
- Refactor importer to use streaming operation
- Add mysql adaptor to importer server store implementation
- Implement d1 importer filter settings
- Add note about scheduled worker threadpool size
- Generate private store sqlite database models for Rust
- Move exmdb tool into dedicated library and add cli
- Fix socket parameter for async db pool configuration
- Bump d1 importer to require version 2 manifest
- Check d1 manifest version after parse of import manifest
- Check importer vs d1 file concurrency after parsing manifest
- Send full importer error to client
- Add propert shutdown and 100-continue support to d1 importer
- Add d1 import json stream response while importing
- Use d1 store meta data while importing
- Implement d1 importer pan plugin stub
- Use cli git for Cargo fetch to support private crates
- Add one more CRLF in the keep-alive response
- Update zcore ICS function to accommodate large number of state changes
- Fix accidental cookie header truncation
- Fix password cache expiration check
- Use case-insensitive query to query DAC text
- Fix out of bounds bug in DAC
- Implement privilege checks for MAPI and EAS HTTP auth
- Ensure to initialzie the Rust logger also in static libs
- Improve auth cache system and add privilege_bits to it
- Add definitions for new user privilege bits for MAPI, AS and WEB
- Remove obsolete C mysql adaptor implementations
- Fix overflow check while parsing HTTP session cookie
- Update bincode to version 2.0.0-rc3
- Bump Rust toolchain to 1.76.0
- Fix Rust linter warnings after Rust 1.75 update
- Bump Rust toolchain to 1.75.0
v2.1.14 (2024-04-18)¶
- Fix use after free while initializing zcore LOGIN_SCRIPT_PATH
- Ensure mime field parser produces null terminated values
- Check mlist outgoing privilege when sending through zcore or emsmdb
- Handle text search of binary type property in restriction evaluation functions
- Fix accidental cookie header truncation
- Fix overflow check while parsing HTTP session cookie
v3.3.1 (2024-04-15)¶
- Handle all eas cmd variants diretly in mod-activesync
- Remove query ? requirement for mod-activesync routing
- Enable mod-activesync routing for OPTIONS requests
- Skip building eas service plugin as test
v3.3.0 (2024-04-11)¶
- Ensure mime field parser produces null terminated values
- Ensure to include debug symbols for Rust code by default
- Avoid loosing eas events in between Sync
- Avoid loosing eas events when the client relies on Ping
- Implement eas core service plugin
- Implement copy for GUID types in Rust bindings
- Allow core system services to query for all registered services
- Expose additional types and defines in mapi-sys crate
- Remove unused http mod_fastcgi implementation
- Update fastcgi and rewrite rules to only configure eas routing
- Remove unused http cache implementation
- Remove obsolete C implementation of hpm proxy plugin
- Remove obsolete C implementation of hpm force_https plugin
- Remove obsolete C implementation of pan management plugin
- Remove obsolete C implementation of fcgi_rpc service plugin
- Remove native TLS support from http server implementation
- Remove http TLS SNI plugin from http service
- Extend http reauth endpoint return values
- Ensure to compare whole sql cursor when checking window exit condition
- Ensure to exit importer sequencer loop scrolling window
- Add a bit more debug logging to importer progress
- Fix importer included and excluded organization stores configuration
- Ensure importer d1 meta is loaded before upn retrieval
- Decrease importer no mapped parent log level to trace
- Promote importer unsupported message class log message to warning level
- Add importer support for import SMIME message classes
- Log message type when importer is unable to find a mapped parent
- Ensure import in dry run skips reindex
- Add support for E4A_LOG_FILTER env variable
- Skip the mlist address for the getuseravailability function to avoid returning an error code.
- Add support for import meeting request messages
- Add support to import notes
- Add support to import tasks
- Add support to import calendar events
- Map the d1 named properties ids with the e4a ids
- Import named properties and create map ids
- Add http e4a.internal.v1.reauth endpoint
- Skip checking user settings on zcore logon with interal srv passwd
- Skip all search folders
- Add additional logging for easier debug
- Set read flag in messages
- Add support for GUID types on import
- Avoid panic when streaming d1 import hierarchy and the sender ends prematurely
- Add null byte to the end of importer generated cid files as required
- Add explicit trace logger for distlist hierarchy on import to avoid log spam
- Add support for I2 property type on import
- Don't use yoda conditions on rust
- Add contacts to importer import white list
- Add support to queue imported users for full text indexing
- Write len to cid files for certain properties
- Add NULL term to each string in the MV_STRING prop
- Add length to each entry in MV_BINARY property
- Ignore emtpy cid properties when importing d1 message properties
- Skip import of outbox hierarchy if it is present in d1 hierarchy stream
- Generate normalized subject for messages while importing
- Move importer cid persist logging to trace level
- Add importer message class filter to only import IPM.Note for now
- Improve importer logging further
- Avoid cloning message properties for no reason in importer
- Improve and reduce importer logging verbosity
- Compute importer imported message size correctly
- Implement import cid file commit and rollback
- Import Recipients
- Import messages
- Add maildir to private service
- Add allocate cid module
- Resize folder eid range when needed on allocation
- Fix typos
- Fix the bug of missing READ flag of folder access tag
- Dump db_engine info connection table to csv file instead of log
- Port exmdb_provider plugin console implementation to Rust
- Initialize Rust logger in codepage_lang plugin
- Expose str_hash implementation in Rust common-sys module
- Improve double list API to make it usable from Rust
- Implement the IMAP MOVE command
- Add imap support for double quotes and space in folder names
- Add zero to the end of the unicode slash char pointer
- Further split out d1 propval conversion to avoid duplication
- Support ad_connect basic auth username with domain
- Bump e4a-rust-e4a to 0.6.0
- Move d1 to store propval conversion to own trait to allow easy reuse
- Change proptag column to BigInt
- Add more bitwise comparison operators to service RPC users request
- Check mlist outgoing privilege when sending through zcore or emsmdb
- Replace Ascii slash with Unicode slash in folder names to display correct hierarchy in IMAP
- Handle text search of binary type property in restriction evaluation functions
- Improve d1 importer early exit client behavior
- Fix potential eid collision for new messages
- Don't reallocate after range is full
- Include offset when storing d1 importer global current eid value
- Implement d1 import folder mapping amd eid allocator
- Add an option to allow d1 imports to enabled stores
- Refactor d1 importer global eid allocation
- Simplify d1 import folder id and eid setters
- Simplify sqlite get set configuration traits
- Avoid to increment initial change number twice while importing d1
- Rename and reorganize sqlite database adaptors for consistency
- Validate d1 import user store
- Install and enable d1 importer pan plugin by default
- Add trusted proxy and client IP white list to d1 importer endpoint
- Remove left over debug logging
- Add new URL route for d1 importer to prepare for public exposure
- Remove usage of async-trait in importer as far as possible
- Rename importer traits for clearer names
- Refactor importer stream handling into multiple files
- Refactor importer conversions and change number handling
- Even more importer cleanup
- Refactor importer into more files
- Some more importer cleanup
- Fix importer folder import property loop
- Report import config including dry run to client
- Add importer support for incoming attachment data in d1 stream
- Small importer cleanups
- Allow to set importer dry_run flag via importer settings
- Identify special folders
- Import folder properties
- Get Change Number from database and Save it in the end
- Allocate eid before creating folder
- Fix typos
- Fix importer hierarchy stream sequencer to actually include prop vals
- Use eid and time store database columns as BigInt
- Update timer database models to latest concepts and style
- Simplify and streamline timer code
- Implement importer target exmdb writing basics
- Refactor importer to use streaming operation
- Add mysql adaptor to importer server store implementation
- Implement d1 importer filter settings
- Add note about scheduled worker threadpool size
- Generate private store sqlite database models for Rust
- Move exmdb tool into dedicated library and add cli
- Fix socket parameter for async db pool configuration
- Bump d1 importer to require version 2 manifest
- Check d1 manifest version after parse of import manifest
- Check importer vs d1 file concurrency after parsing manifest
- Send full importer error to client
- Add propert shutdown and 100-continue support to d1 importer
- Add d1 import json stream response while importing
- Use d1 store meta data while importing
- Implement d1 importer pan plugin stub
- Use cli git for Cargo fetch to support private crates
- Add one more CRLF in the keep-alive response
- Update zcore ICS function to accommodate large number of state changes
- Fix accidental cookie header truncation
- Fix password cache expiration check
- Use case-insensitive query to query DAC text
- Fix out of bounds bug in DAC
- Implement privilege checks for MAPI and EAS HTTP auth
- Ensure to initialzie the Rust logger also in static libs
- Improve auth cache system and add privilege_bits to it
- Add definitions for new user privilege bits for MAPI, AS and WEB
- Remove obsolete C mysql adaptor implementations
- Fix overflow check while parsing HTTP session cookie
- Update bincode to version 2.0.0-rc3
- Bump Rust toolchain to 1.76.0
- Fix Rust linter warnings after Rust 1.75 update
- Bump Rust toolchain to 1.75.0
v2.1.13 (2024-04-11)¶
- Ensure mime field parser produces null terminated values
- Check mlist outgoing privilege when sending through zcore or emsmdb
- Handle text search of binary type property in restriction evaluation functions
- Fix accidental cookie header truncation
- Fix overflow check while parsing HTTP session cookie
v3.2.0 (2024-03-27)¶
- Add http e4a.internal.v1.reauth endpoint
- Skip checking user settings on zcore logon with interal srv passwd
- Skip all search folders
- Add additional logging for easier debug
v3.1.1 (2024-03-22)¶
- Set read flag in messages
- Add support for GUID types on import
- Avoid panic when streaming d1 import hierarchy and the sender ends prematurely
v3.1.0 (2024-03-21)¶
- Add null byte to the end of importer generated cid files as required
- Add explicit trace logger for distlist hierarchy on import to avoid log spam
- Add support for I2 property type on import
- Don't use yoda conditions on rust
- Add contacts to importer import white list
- Add support to queue imported users for full text indexing
- Write len to cid files for certain properties
- Add NULL term to each string in the MV_STRING prop
- Add length to each entry in MV_BINARY property
- Ignore emtpy cid properties when importing d1 message properties
- Skip import of outbox hierarchy if it is present in d1 hierarchy stream
- Generate normalized subject for messages while importing
- Move importer cid persist logging to trace level
- Add importer message class filter to only import IPM.Note for now
- Improve importer logging further
- Avoid cloning message properties for no reason in importer
- Improve and reduce importer logging verbosity
- Compute importer imported message size correctly
- Implement import cid file commit and rollback
- Import Recipients
- Import messages
- Add maildir to private service
- Add allocate cid module
- Resize folder eid range when needed on allocation
- Fix typos
- Fix the bug of missing READ flag of folder access tag
- Dump db_engine info connection table to csv file instead of log
- Port exmdb_provider plugin console implementation to Rust
- Initialize Rust logger in codepage_lang plugin
- Expose str_hash implementation in Rust common-sys module
- Improve double list API to make it usable from Rust
- Implement the IMAP MOVE command
- Add imap support for double quotes and space in folder names
- Add zero to the end of the unicode slash char pointer
v3.0.2 (2024-03-14)¶
- Further split out d1 propval conversion to avoid duplication
- Support ad_connect basic auth username with domain
- Bump e4a-rust-e4a to 0.6.0
- Move d1 to store propval conversion to own trait to allow easy reuse
- Change proptag column to BigInt
v3.0.1 (2024-03-12)¶
- Add more bitwise comparison operators to service RPC users request
- Check mlist outgoing privilege when sending through zcore or emsmdb
- Replace Ascii slash with Unicode slash in folder names to display correct hierarchy in IMAP
- Handle text search of binary type property in restriction evaluation functions
- Improve d1 importer early exit client behavior
- Fix potential eid collision for new messages
- Don't reallocate after range is full
- Include offset when storing d1 importer global current eid value
- Implement d1 import folder mapping amd eid allocator
- Add an option to allow d1 imports to enabled stores
- Refactor d1 importer global eid allocation
- Simplify d1 import folder id and eid setters
- Simplify sqlite get set configuration traits
- Avoid to increment initial change number twice while importing d1
- Rename and reorganize sqlite database adaptors for consistency
- Validate d1 import user store
- Install and enable d1 importer pan plugin by default
- Add trusted proxy and client IP white list to d1 importer endpoint
- Remove left over debug logging
- Add new URL route for d1 importer to prepare for public exposure
- Remove usage of async-trait in importer as far as possible
- Rename importer traits for clearer names
- Refactor importer stream handling into multiple files
- Refactor importer conversions and change number handling
- Even more importer cleanup
- Refactor importer into more files
- Some more importer cleanup
- Fix importer folder import property loop
- Report import config including dry run to client
- Add importer support for incoming attachment data in d1 stream
- Small importer cleanups
- Allow to set importer dry_run flag via importer settings
- Identify special folders
- Import folder properties
- Get Change Number from database and Save it in the end
- Allocate eid before creating folder
- Fix typos
- Fix importer hierarchy stream sequencer to actually include prop vals
- Use eid and time store database columns as BigInt
- Update timer database models to latest concepts and style
- Simplify and streamline timer code
- Implement importer target exmdb writing basics
- Refactor importer to use streaming operation
- Add mysql adaptor to importer server store implementation
- Implement d1 importer filter settings
- Add note about scheduled worker threadpool size
- Generate private store sqlite database models for Rust
- Move exmdb tool into dedicated library and add cli
- Fix socket parameter for async db pool configuration
- Bump d1 importer to require version 2 manifest
- Check d1 manifest version after parse of import manifest
- Check importer vs d1 file concurrency after parsing manifest
- Send full importer error to client
- Add propert shutdown and 100-continue support to d1 importer
- Add d1 import json stream response while importing
- Use d1 store meta data while importing
- Implement d1 importer pan plugin stub
- Use cli git for Cargo fetch to support private crates
- Add one more CRLF in the keep-alive response
- Update zcore ICS function to accommodate large number of state changes
- Fix accidental cookie header truncation
- Fix password cache expiration check
- Use case-insensitive query to query DAC text
- Fix out of bounds bug in DAC
- Implement privilege checks for MAPI and EAS HTTP auth
- Ensure to initialzie the Rust logger also in static libs
- Improve auth cache system and add privilege_bits to it
- Add definitions for new user privilege bits for MAPI, AS and WEB
- Remove obsolete C mysql adaptor implementations
- Fix overflow check while parsing HTTP session cookie
- Update bincode to version 2.0.0-rc3
- Bump Rust toolchain to 1.76.0
- Fix Rust linter warnings after Rust 1.75 update
- Bump Rust toolchain to 1.75.0
v2.1.12 (2024-03-07)¶
- Check mlist outgoing privilege when sending through zcore or emsmdb
v2.1.11 (2024-03-06)¶
- Handle text search of binary type property in restriction evaluation functions
- Fix accidental cookie header truncation
- Fix overflow check while parsing HTTP session cookie
v3.0.0 (2024-02-29)¶
- Implement d1 import folder mapping amd eid allocator
- Add an option to allow d1 imports to enabled stores
- Refactor d1 importer global eid allocation
- Simplify d1 import folder id and eid setters
- Simplify sqlite get set configuration traits
- Avoid to increment initial change number twice while importing d1
- Rename and reorganize sqlite database adaptors for consistency
- Validate d1 import user store
- Install and enable d1 importer pan plugin by default
- Add trusted proxy and client IP white list to d1 importer endpoint
- Remove left over debug logging
- Add new URL route for d1 importer to prepare for public exposure
- Remove usage of async-trait in importer as far as possible
- Rename importer traits for clearer names
- Refactor importer stream handling into multiple files
- Refactor importer conversions and change number handling
- Even more importer cleanup
- Refactor importer into more files
- Some more importer cleanup
- Fix importer folder import property loop
- Report import config including dry run to client
- Add importer support for incoming attachment data in d1 stream
- Small importer cleanups
- Allow to set importer dry_run flag via importer settings
- Identify special folders
- Import folder properties
- Get Change Number from database and Save it in the end
- Allocate eid before creating folder
- Fix typos
- Fix importer hierarchy stream sequencer to actually include prop vals
- Use eid and time store database columns as BigInt
- Update timer database models to latest concepts and style
- Simplify and streamline timer code
- Implement importer target exmdb writing basics
- Refactor importer to use streaming operation
- Add mysql adaptor to importer server store implementation
- Implement d1 importer filter settings
- Add note about scheduled worker threadpool size
- Generate private store sqlite database models for Rust
- Move exmdb tool into dedicated library and add cli
- Fix socket parameter for async db pool configuration
- Bump d1 importer to require version 2 manifest
- Check d1 manifest version after parse of import manifest
- Check importer vs d1 file concurrency after parsing manifest
- Send full importer error to client
- Add propert shutdown and 100-continue support to d1 importer
- Add d1 import json stream response while importing
- Use d1 store meta data while importing
- Implement d1 importer pan plugin stub
- Use cli git for Cargo fetch to support private crates
- Add one more CRLF in the keep-alive response
- Update zcore ICS function to accommodate large number of state changes
- Fix accidental cookie header truncation
- Fix password cache expiration check
- Use case-insensitive query to query DAC text
- Fix out of bounds bug in DAC
- Implement privilege checks for MAPI and EAS HTTP auth
- Ensure to initialzie the Rust logger also in static libs
- Improve auth cache system and add privilege_bits to it
- Add definitions for new user privilege bits for MAPI, AS and WEB
- Remove obsolete C mysql adaptor implementations
- Fix overflow check while parsing HTTP session cookie
- Update bincode to version 2.0.0-rc3
- Bump Rust toolchain to 1.76.0
- Fix Rust linter warnings after Rust 1.75 update
- Bump Rust toolchain to 1.75.0
v2.1.10 (2024-02-26)¶
- Fix accidental cookie header truncation
v2.1.9 (2024-02-16)¶
- Fix overflow check while parsing HTTP session cookie
v2.1.8 (2024-02-02)¶
- Avoid setting timezone property values when there is no timezone
v2.1.7 (2024-01-31)¶
- Correct IDSET range list order when removing an eid
v2.1.6 (2024-01-25)¶
- Fix eid end range check
- Use RichErrors with check_mlist_include function
- Fix memory leak bug in rop_processor
v2.1.5 (2023-12-19)¶
- Add functions in oxcical to remove expired timezone information
- Fix permission check bug in zarafa_server_copyfolder function
v2.1.4 (2023-12-15)¶
- Fix the problem with inline attachments in Apple Mail
- Correct the max mail length value in exchange emsmdb
v2.1.3 (2023-12-12)¶
- Support different vcard TEL versions
- Support different vcard EMAIL versions
- Use correct the path when creating ftstream parser
- Use Sqlite ON CONFLICT Clause feature to resolve folder name conflict
- Updated midb Insert message function to generate eml file if it doesn't exist.
v2.1.2 (2023-11-24)¶
- Ensure auth result is set to OK when auth cache is hit
- Avoid to log Rust logger init multiple times
- Improve session cache hit/miss logging
v2.1.1 (2023-11-22)¶
- Use EX address for internal users in meeting request
- Add public store migration
- Tame store migration internal logging
- Initialize store migration system version at database create
- Make the store migration system more flexible
- Add private store none to blob migration
- Vacuum migrated store databases after migration
- Ensure to rebuild store-migrations tool if sql files have changed
v2.1.0 (2023-11-17)¶
- Add initial store migration system
v2.0.0 (2023-11-17)¶
- Add missing link libraries to fix build
- Generate the iCalendar UID if it is not present in the MIME
- Attempt to reconnect on IO and EOF redis errors
- Determine the timezone if vtimezone not present
- Move export function upwards
- Add tzparser rust library to timezone_lib
- Add missing subval when exporting vtimezone
- Export mail message in RFC format file in MTA service
- Return RichError in get_user_ids mysql calls
- Add rich-error-sys to library
- Add rich errors thirdparty library
- Add logging of error response to rpc parsers
- Bump Rust toolchain to 1.73.0
- Improve AD connect sync logging when anchor attribute is not found
- Implement domain and org validation for gRPC providers
- Add error logging to providers gRPC service
- Update Rust database models so update is compareable
- Implement internal providers gRPC service
- Remove session-lib from cargo file
- Fix issues with connnecting to a shared mailbox in Outlook cache mode
- Use password caching in adac
- Don't panic if logger already initialized
- Use password caching in pop3
- Use password caching in imap
- Rename session lib to auth cache lib
- Rename SessionManager to AuthManager
- Add password caching to session manager
- Update the mail_engine_mcopy function
- Disable permission inheritance for IPM folders
- Remove O1 flag from timezone_lib
- Create all MariaDB database tables with InnoDB engine instead of Aria
v1.8.3 (2023-11-10)¶
- Update inline attachment verification logic during mail import
v1.8.2 (2023-10-27)¶
- Fix problem generating Reply-To header
v1.8.1 (2023-10-25)¶
- Install certain data files as world readable
- Add cargo_vendor dependency to cmake function
- Use add_rust_header in the defines library
- Add cmake function to generate C headers from rust
v1.8.0 (2023-10-17)¶
- Add logging to oxcmail export
- Bump Go to 1.21 in Docker build
- Replace RTF converter with librtfpiper
- Fix midb_agent code style as needed
- Avoid midb_agent endless loop in psiml command
- Avoid midb_agent endless loop in mlist command
- Add midb_agent EOF error checks
- Fix midb_agent write error checks
- Fix midb signed read and write data type to allow negative checks to work
- Move some too verbose debug logging into verbose mode
- Use more useful midb agent connection settings for IMAP example config
- Add logging for event service and its plugins
- Fix invalid uid copy reply
v1.7.5 (2023-10-09)¶
- Ensure that Rust addrows create user does never use empty maildir
- Disable example gRPC greeters when not compiled in debug mode
- Replace IMAP SSL_Write with imap_parser_safe_write
v1.7.4 (2023-10-06)¶
- Always display the VALUE field for all day app
- Filter aliases from user authentication
v1.7.3 (2023-10-05)¶
- Add password hashing to rust updaterow
v1.7.2 (2023-09-27)¶
- Fix incorrect len written to imap stream
v1.7.1 (2023-09-22)¶
- Fix rtfkit stdin buffer offset read
v1.7.0 (2023-09-20)¶
- Use session library in http parser
- Bootstrap session library
- Use entitle client in e4a-go-e4a
- Update e4a-go-e4a version
- Avoid allocating storage when syncing users in dru-run
- Implement ad_connect user sync endpoints and database transaction
- Add external user auth system and library
- Define ad_connect internal API and move protos to common location
- Avoid to build Rust only library as dynamic library
- Fix clippy deprecation warnings
- Make Rust config file implementation cloneable
- Install ad_connect pan plugin if it was built
- Implement initial ad_connect plugin
- Improve Rust CMake rules to include version in SONAME for libraries
- Refactor Rust management plugin into plugin and library
- Build all Rust code dynamically link to Rust std library
- Remove user table implementation from shared library
- Copy mails sent by the delegated user to the represented user's store
v1.6.0 (2023-09-15)¶
- Bump to Go 1.21 in CI
- Add health checks on checkout to pooled conns
- Write data as it comes to avoid buffer overflow
- Fix typo in sequence
- Fix wrong formatting character in dac_server_allocdir
- Correct the charset conversion of mail body content
v1.5.0 (2023-09-05)¶
- Fix the ical parsing bug in yearly recurrence
- Check for NULL pointer after using lib_buffer_get
- Fix potential overflow with P-SUBL command
- Fix potential overflow with M-ENUM command
- Fix Rust timer_agent build target file name
- Add migration from legacy timer data to sqlite
- Add rust version of the timer_agent plugin
- Make the plugin config optional
- Add rust version of the timer service
- Correct unit of max_space when creating a mailbox
- Check user permission in the zarafa_server_modifypermissions function
- Force the row count to zero for the recoverable table query
- Update the SQLite column type from NONE to BLOB
- Rebuild Rust database schema models with Diesel 2.1.0
- Bump 3rd-party Rust dependencies to latest version
- Bump build CI pipeline to use Ubuntu 22.04
- Fix Rust test module definition order to make linter happy
- Bump Rust toolchain to 1.17.0
- Ignore generated rs files in rustfmt CI
- Add Rust implementation of admin management plugin round (2)
- Switch Rust database model generation to dsync
- Fix Rust adminrpc management table column name null termination
- Add logging to midb agent
- Fix typo
- Use the mysql defines in the mysql rust code
- Standardize the mysql defines' names
- Move ab tree database defines to a rust library
- Add fallback to domain and group display name
- Remove MEM FILE from exchange_nsp's ab_tree
- Remove MEM FILE from adac's ab_tree
- Remove MEM FILE from zcore's ab_tree
- Re-structure get domain and get domain info
- Add Builder pattern to C structs
- Add free_member function pointer to ResultWrapper
- Seperate c types into different files
- Remove C code for adaptor core, service, adac
- Rename write_ to get_ for mod, fn and traits
- Replace MEM_FILE in write users
- Replace MEM_FILE in write hierarchy
- Replace MEM_FILE in write groups
- Replace MEM_FILE in write domains
- Fix typos
- Correct minEntryID value in NSPI service
- Fix mlist delegate and permission checks
- Fix potential overflow crash
v1.4.3 (2023-08-15)¶
- Check user permission in the zarafa_server_modifypermissions function
v1.4.2 (2023-07-14)¶
- Handle invalid UTF-8 encoded parameters when transition from C to Rust
- Further improve IMAP change behavior
- Set IMAP context newmail flag when the current folder was touched
- Bring back folder touch broadcast on new mail
- Fix incorrect field name in debug log message
v1.4.1 (2023-07-12)¶
- Correct the daylight bias value in the oxcical_parse_tzdefinition function
v1.4.0 (2023-07-06)¶
- Change sprintf to snprintf
- Add logging to mail engine
- Fix the IMAP EXPUNGE command problem
- Update midb SQL statament
- Implement the full features of IMAP sync
- Install pop3_code data file into correct sub folder
v1.3.3 (2023-07-03)¶
- Replace strcpy for snprintf
- Fix off by one total user ensurer check
- Use 5.1.90 as sending quota SMTP policy error code
- Move event config to sub folder for consistency
- Remove obsolete unused rsyncd and rsyncer
- Use dedicated config files for timer and amidb services
- Implement Postfix SMTP access policy daemon
- Avoid building Protocol Buffers well known types
- Cleanup servicerpc Rust build script
- Refactor servicerpc Rust source tree layout
- Improve Rust binary CMake build change detection
- Revert "Implement the full features of IMAP sync"
- Addition to the !453
- Fix bugs in the rop_getpropertiesall function
- Set pcolumns parameter's value if it is NULL
- Set correct BYMONTH value in the oxcical_export_rrule function
- check MIME header to inhibit autoreplies are sent to mail lists
- Implement the full features of IMAP sync
- Add a null check for a parameter before using it
- Add zcore object tree overflow logging
- Differentiate between error and not finding folder
- Fix the bug in rrule parsing in oxcical
- Fix bug in midb todo flag sync
- Fix the wrong property bind bug in exmdb_server_query_folder_messages
- Fix potential bug in operating null pointers
- Skip empty second and third email addresses
- Fix SQL error check
- Add servicerpc associations service
- Add servicerpc mlists service
- Fix folder name type in German language
- Fix the sorting bug in the user table query
- Remove debug stderr output from adminrpc management Rust implementation
- Use explicit use paths in Rust admin macros
- Improve mapi property type definitions for Rust
- Add admin table specific api to Rust admin library
- Add more trait helpers to Rust admin library
- Add From
and Not traits to BOOL Rust implementation - Make mapi prop tags constants available for Rust
- Add support for dependent CMake options
- Add support to set Rust build features through cmake
- Make more mapi data types available for Rust
- Ensure correct link path and name for non-Rust management-pan target
- Add error to connection lost errors
- Change fcgi start and stop logs to trace
- Inheriting permissions from a shared folder to subfolders
- Add Rust implementation of admin management plugin round (1)
- Add Rust admin library implementation
- Export EC_ constants in mapi-sys interface
- Improve Rust config file reusability
- Remove obsolete clippy config
v0.26.2 (2023-06-21)¶
- Fix off by one total user ensurer check
v1.3.2 (2023-06-21)¶
- Fix off by one total user ensurer check
v1.3.1 (2023-06-19)¶
- Use 5.1.90 as sending quota SMTP policy error code
v1.3.0 (2023-06-16)¶
- Move event config to sub folder for consistency
- Remove obsolete unused rsyncd and rsyncer
- Use dedicated config files for timer and amidb services
- Implement Postfix SMTP access policy daemon
- Avoid building Protocol Buffers well known types
- Cleanup servicerpc Rust build script
- Refactor servicerpc Rust source tree layout
- Improve Rust binary CMake build change detection
v1.2.1 (2023-06-12)¶
- Revert "Implement the full features of IMAP sync"
- Addition to the !453
- Fix bugs in the rop_getpropertiesall function
v1.2.0 (2023-06-02)¶
- Set pcolumns parameter's value if it is NULL
- Set correct BYMONTH value in the oxcical_export_rrule function
- check MIME header to inhibit autoreplies are sent to mail lists
- Implement the full features of IMAP sync
v1.1.0 (2023-05-24)¶
- Add a null check for a parameter before using it
- Add zcore object tree overflow logging
- Differentiate between error and not finding folder
- Fix the bug in rrule parsing in oxcical
- Fix bug in midb todo flag sync
- Fix the wrong property bind bug in exmdb_server_query_folder_messages
- Fix potential bug in operating null pointers
- Skip empty second and third email addresses
- Fix SQL error check
- Add servicerpc associations service
- Add servicerpc mlists service
- Fix folder name type in German language
- Fix the sorting bug in the user table query
- Remove debug stderr output from adminrpc management Rust implementation
- Use explicit use paths in Rust admin macros
- Improve mapi property type definitions for Rust
- Add admin table specific api to Rust admin library
- Add more trait helpers to Rust admin library
- Add From
and Not traits to BOOL Rust implementation - Make mapi prop tags constants available for Rust
- Add support for dependent CMake options
- Add support to set Rust build features through cmake
- Make more mapi data types available for Rust
- Ensure correct link path and name for non-Rust management-pan target
v1.0.0 (2023-05-11)¶
- Add error to connection lost errors
- Change fcgi start and stop logs to trace
- Inheriting permissions from a shared folder to subfolders
- Add Rust implementation of admin management plugin round (1)
- Add Rust admin library implementation
- Export EC_ constants in mapi-sys interface
- Improve Rust config file reusability
- Remove obsolete clippy config
v0.26.1 (2023-05-04)¶
- Fix amidb spinning thread 100% CPU usage
- Ensure to full mlist display name in Rust ab tree retrieval
v0.26.0 (2023-04-27)¶
- Consolidate differnt ways to setup logging and tracing in Rust code
- Refactor servicerpc log initialization
- Use reference when parsing config with Rust
- Add gRPC request tracing to servicerpc
- Change "successfully logged in" log to verbose
- Change new connection logs to verbose
- Filter users by address type for alias creation
- Add servicerpc domains and aliases service
- Refactor serviceprc service and database code into multiple files
- Fix processing of comma separated values in ical
- Fix incorrect sqlite error check
- Fix the wrong parameter bug for moving messages
- Remove unused auth login trait
- Remove user id param
- Add missing param to log message to fix crash
- Install available gRPC service proto files
- Install servicerpc and its config file
- Implement servicerpc GetUsers stream endpoint
- Implement servicerpc SearchUsers pagination
- Implement graceful shutdown for servicerpc daemon
- Fix Rust clippy warnings
- Pin the Rust toolchain version to the repository as override
- Bump CI Go to 1.20 and Rust to 1.68
- Add protoc as mandatory build dependency
- Improve Rust thread name numbering
- Use prefix filter for Rust logger external fixed level
- Add servicerpc to CMake and build it by default
- Add and use proper CMake targets for db folder
- Add CMake support to build Rust binaries
- Add missing link libraries to static Rust mysql adaptors
- Implement servicerpc daemon
- Add some basic async traits for Rust mysql access
- Re export Pool and related as part of Rust connection module
- Fix deprecation warning in Rust scheduled thread pool
- Use mysql unix socket by default also with Go based tools
- Remove unmaintained store creating commandline tools
- Remove duplicated sqlite3 SQL initialization files
- Add Go port for the userinfo commandline tool
- Add CMake fuction to build Golang executables
- Remove obsolte unmaintained db modify commandline tools
- Add ORM on top of Go SQLBoiler
- Add amidb shared library for consistency
- Cleanup header files
- Add Rust implementation of amidb mysql adaptor service
- Move amidb mysql service to static library
- Consolidate Rust mysql service implementations to db traits
- Rename shared Rust auth_login service trait to be more reusable
- Add Rust implementation of core system mysql adaptor service
- Unify Rust mysql adaptor service names
- Add Rust implementation of service system mysql adaptor service
- Move Rust implementations of shared db services to db shared module
- Add Rust file change detection to db module
- Avoid exhaustive logging in get_nlist Rust service when mlist not exist
v0.25.2 (2023-04-04)¶
- Avoid exhaustive logging when fastcgi does not feel responsible for http
- Ensure get_mail_list service sets result also on error
v0.25.1 (2023-03-31)¶
- Fix zcore object unreleased bug in flag_sync
v0.25.0 (2023-03-30)¶
- Move more Rust mysql services into generic shared db library
- Implement Rust version of the adac mysql adaptor
- Make Rust auth_login service trait generic
- Expose hash_password util function in common Rust library
- Implement shared Rust domain by value service
- Add helper function to Rust logger for initialization
- Improve service name consistency
- Elevate some Rust database services to shared crate
- Implement binary mem file writing for Rust
- Unify setter for mysql unix port for Rust libraries
- Add support for static Rust libraries to build system
- Add implicit support for generated includes for Rust libraries
- Move adac mysql_adaptor to library
- Increase size of "local part" in email address
- Fix formatting warnings with unsigned long ints
- Add logging to oxcfxics
- Add logging to oxcfold
- Add logging to oxomsg
- Add logging to oxctabl
- Add logging to oxcstore
- Add logging to oxorule
- Add logging to oxcperm
- Add logging to oxcnotif
- Add logging to oxcprpt
- Add logging to oxcmsg
- Remove unnecessary log message (spams)
v0.24.0 (2023-03-23)¶
- Add x-requestid to http context
- Use define for tmp buffer size
- Don't be so strict about guid str length
- Handle ical recurring daily meetings timezone offset properly
- Fix mlist permission check in Rust mta mysql adaptor
- Add logging to zarafa server functions
- Improve logging in http fastcgi
- Don't return FALSE on success
v0.23.1 (2023-03-09)¶
- Add scope value to the name of generated files
v0.23.0 (2023-02-28)¶
- Make sure the msg is set to UNREAD before sending
- Bump entitlement client version
- Make entitlement via
cloudclaim mandatory for using entitled_users - Unify entitle client implementation
- Match cargo test build type to CMake build target
- Don't skip users without an email address
- Fix parsing of escaped commas in ical
- Port mta MySQL adaptor to Rust
- Add more traits and helpers to service plugin API
- Implement line writer for MEM_FILE Rust struct
- Add user sub type enum to Rust types
- Add bool From/Into trait for BOOL enum
- Further improve Rust service plugin interface
- Add transaction support to Rust MySQL auth service pw hash update
- Improve Rust service plugin API and interface
- Implement shared MySQL traits for Rust based database queries
- Add helper trait for Rust plugin config
- Use unique plugin name also for Rust plugins
- Add scope logged as tag to Rust logger sub system
- Add and use Rust email-sys crate
- Remove more unsued MTA anti-spam service plugins
- Remove unused MTA ESMTP auth support
- Remove obsolete unused anti-spam system MTA service plugins
v0.22.1 (2023-02-07)¶
- Use correct gc ID value to identify schedule timer message
- Make path to submit.php absolute
v0.22.0 (2023-02-03)¶
- Unify implementation of FILETIME
- Add and use Rust mapi-sys crate
- Use more functions from common-sys crate
- Rename Rust service library
- Rename Rust mapi library into mapi_lib folder
- Move and rename Rust common library into common folder
- Use Rust common-sys crate treewide
- Improve CMake dependency checks and logging
- Add Rust common-sys crate
- Update Rust libffi to gain access to latest bindgen
- Use q-encoding where appropriate
- Add "q-encoding" decoding functions
- Add warning log when the context pool is full
- Relax a bunch of per field vcard import failure checks
- Add useful debug logging for VCARD importing
- Disable vcf files from test suite which do not have a version
- Add unit tests for vcf import support
- Fix a bunch of potential crashes and typos in vcard importer
- Auto initialize Rust logger sub system
- Add full build dependencies to Rust clippy CI stage
- Improve flexibility of unit test runner
v0.21.0 (2023-01-27)¶
- Log tag even if prefix is NULL
- Don't print the scope if prefix is NULL
- Fix import and export of ADR property
- Add support for mobile type in tel field
- Support multiple values in N field during import
- Copy the right variable to the property value
- Centralize Rust scheduled thread pool
- Enshance Rust database models with more derives and types
- Implement Rust mra MySQL adaptor info logging and console
- Convert Rust MySQL mra adaptor use Diesel ORM
- Add Rust MySQL service implemetation with Diesel to compare performance
- Add another implementation of Rust sqlx to compare performance
- Refactor Rust plugin structure and implement mysql adaptor based services
- Use more precise selects for Rust mra MySQL auth login
- Move Rust password comparison function to common utils
- Add ORM on top of Rust sqlx
- Use sqlx to access MySQL from Rust
- Implement mra mysql_adaptor service in Rust
- Add async Rust runtime to common library
- Add more fexibility to service traits
- Add support to parse integer values from config files
- Avoid binding Rust service API to a single service
- Make sure the connection structs are equal
- Fix potential buffer overrun when comparing password hashes
- Add support to set OUTPUT_NAME in Rust build targets
- Disable hpm mod_proxy by default
- Disable hpm mod_force_https by default
v0.20.0 (2023-01-17)¶
- Create the MAPI session ID in a secure way
- Fix overflow warnings
- Fix zcore object tree periodic flush
- Don't log non sql errors as errors
- Fix modlinkatt ext pull buffer
- Refresh active entitlement claims at least once per day
- Enable entitlement autoRenew again
- Remove obsolete unused php_mailbox mpc plugin
- Add benchmark for fcgi_rpc service plugin
- Make fcgi_rpc plugin use async
- Improve Rust license ranger to filter non-target dependencies
- Further improve Rust implementation of codepage_lang service
- Enhance Rust WithAPI service plugin trait
- Add Rust implementation of fcgi_service plugin
- Add get_plugin_name function to Rust plugin API
- Remove non error logs
- Remove unnecessary log message
- Improve Rust service plugin interface
- Simplify Rust logger
- Add logging to exmdb server's message functions
- Fix warnings
- Fix typo
- Switch Go logger to field logger
- Improve Go logger caller depth
- Fix types in code comments related to log helpers
- Further simplfiy Go logging sub system
- Centralize Go logging library
v0.19.1 (2022-12-23)¶
- Set correct SONAME for freebusy_lib
v0.19.0 (2022-12-22)¶
- Improve libsodium build detection
- No longer install library symbolic links
- Make Go a first party supported project language
- Add 3rd-party license summary generators
- Add Rust support
- Use freebusy_lib in freebusy tool
- Remove freebusy tool path from config
- Replace fork for freebusy tool with shared lib
- Fix simple warnings
- Add freebusy as a shared library
- Use cnvtabkt_lib in cnvtabkt tool
- Remove cnvtabkt tool path from config
- Replace fork for cnvtabkt tool with shared lib
- Add cnvtabkt as a shared library
- Reduce amount of excessive logging
- Disable Nginx proxy buffering for RPC responses
- Add logging to exmdb server's table functions
- Fix string format warnings
- Log Outlook async wait already exists as debug
- Fix improper sql error checks
- Add logging to exmdb server's instance functions
- Fix typos in function names
- Fix warnings
- Add logging to exmdb server's ics functions
- Add logging to exmdb server's store functions
- Fix notification typo
- Fix logging crash in cnvtabkt binary
- Fix warnings
- Add logging to exmdb server's folder functions
- Fix typo in function name
v0.18.4 (2022-12-09)¶
- Fix ip_container IP removal for imap and smtp service when with proxyprotocol
v0.18.3 (2022-12-07)¶
- Fix fortified buffer overflow in HTML unicode processing
- Use RECEIVEDREPRESENTINGENTRYID message property in owner check
- Don't log error message for optional config value
v0.18.2 (2022-12-05)¶
- Allow Outlook to create named properties on shared stores
- Revert "Fix off by one named property mapping in shared folder rop logon"
- Remove hardcoded product label in special folder name
- Migrate to Go odic module from GitHub
- Ensure RTFINSYNC is present when requesting BODY via rop
v0.18.1 (2022-11-30)¶
- Set RTFINSYNC property for incoming mail
- Use RECEIVEDREPRESENTINGENTRYID message property in owner check
- Fix off by one named property mapping in shared folder rop logon
- Add missing restriction type to keyword extractor
- Add support to sort user table in zcora via restrictions
v0.18.0 (2022-11-24)¶
- Check bounds before accessing memory in ical
- Fix typo
- Add unit tests for ical
- Fix infinite loop in vcard parser by adding missing increment
- Check the remaining length is enough for the cmp
- Rewrite func to not access out of bounds memory
- Check the buffer size before dereferencing the ptr
- Add unit tests for parse_mime_field
- Do not copy the index next to the hash pointer
- Use full version as soname suffix for all local libraries
- Bump docs to reflect minimal required CMake version
- Update CMake in CI to support junit output directly
- Add a hint to gdb >= 10 when building with clang
- Make all daemons unit testable and add a few trivial tests
- Ensure to always include cmocka link library when defining tests
- Add fuzzers for common library parser functions
- Removed unused parser functions
- Add some docs for the fuzzers
- Add fuzzers for all parsers implemented in email lib
- Add explicit includes to fuzzers
- Update code format rules for unit tests and fuzzers
- Add unit tests for password hash comparison
- Add build helper function to generate fuzzers
- Add SCOPE parameter to unit test helper function
- Fix "Uninitialized argument value" errors
- Fix "Result of operation is garbage or undefined"
- Fix "Assigned value is garbage or undefined" errs
- Fix dereference of NULL pointers
- Add missing double quotes to test runner script
- Fix request_parser crash for invalid percent encoded data
- Update clang build flags to be on par with gcc
- Fix cookie_parser crash for invalid percent encoded data
- Add simple unit tests
- Run unit tests in CI
- Remove clang-tidy run from CI
- Add cmocka unit test framework
- Update include sort order for unit test support
- Fix memory leaks
- Fix "use of zero allocated" errors
- Fix use-after-free memory errors
- Remove double definition of buff_len
- Add a fuzzers for webkit library parsers
- Use more consistent logger scopes in libraries
- Explicitly define source files, avoid using glob
- Fixup paths for configuration and data files for all tools
- Fix Clang build compatibility
- Enable include sorting and sort all includes treewide
- Add includes treewide for everything what is used
- Fix and install userinfo tool
- Use more consistent naming for mpc_plugin header file
- Move all library header files to named sub folders
- Fix Docker based build example
- Move around and rename libraries and tools to improve project structure
- Improve CMake target names for tools to avoid conflicts
- Add support for oauth2 in pop3
- Add convenience functions to pop3
- Add support for oauth2 in imap
- Make entitled_users helper function more generic
- Add OIDC and dependent mysql functions to imap
- Change auth replies to better reflect RFC
- Replace buff magic number with define
- Add support to send as mlist via zcore
- Use snprintf instead of strcpy in login function
- Revert "Use snprintf instead of strcpy in login function"
- Log more details when ensuring fails
- Use snprintf instead of strcpy in login function
v0.17.1 (2022-10-26)¶
- Remove unused cancel context
- Remove unused mutex that prevented proper shutdown
- Allow sending as alias obtained via a domain alias
- Clang-format files
- Ensure constant auth timing for all external facing password checks
- Use correct Junk-Email folder name in special folder detection
- Relax vcard import checks
v0.17.0 (2022-10-18)¶
- Fixes buffer overflow in oxcical.c
- Remove genertion of FINDERENTRYID and COMMONVIEWSENTRYID in zcore
- Use faster CI runners
- Only invoke ip_container in http when not a trusted IP
- Fix ip_container overflow for http connections through trusted proxy
- Ensure AdminRPC domains table does not act on alias domains
- Optimize gettable, queryrows and searchtable funcs
- Replace magic numbers with defines
- Remove incorrect pointer to char array var
- Use maildir to get username when generating fts indexing events
- Escape string restriction values
- Add unused define
- Optimize restriction code
- Add support for org wide search in user table
- Install event daemon and its config
- Move event daemon from admin system to service system
- Fix cgo include paths to make standalone linting happy
- Improve error logging for dac startup failures
- Log connection errors with error string
- Change connection established log to debug
- Add login audit to zcore
- Release all services
- Fix shadowed var resulting in midb crash
- Get the real ip from the x-real-ip HTTP Header
- Fix unused return value warnings
- Log socket src when connecting via proxy protocol
- Add proxy protocol whitelist to pop3
- Add proxy protocol whitelist to imap
- Add split function to util lib
- Replace config_file magic numbers with defines
- Fix warnings
- Fix typo in resource enum
- Fix parsing of inline pictures for multipart/mixed messages
- Apply updated code format rules for clang 12
- Bump clang to 12 in CI
- Use improved clang-tidy to junit converter
- Disable linter for readability magic numbers
- Integrate clang-tidy checks into CI
- Compare password using sodium_memcmp function
- Fix shadow warning
- Add support for PROXY protocol in pop3
- Add support for PROXY protocol in imap
- Add build support for libproxyprotocol
- Add libproxyprotocol
- Fix some typos
- Fix underlinking treewide and enable more compile/link warnings
- Enable additional compiler feature flags for security
- Switch build to use GCC 10 to prepare for ASLR
- Bring back compiler optimization in release builds
- Clang-format unformatted files
- Fix failed to cast warnings
- Fix incorrect logical operator usage
- Run clang-format on unformatted files
- Fix "fail" typo in error messages
- Print SQL errors in case of query failure
- Give feedback if the query exceeds the limit
- Move fetch keys to common util
- Move restriction function to common util
- Print SQL errors in case of query failure
- Move fetch admin function to common util
- Give feedback if the query exceeds the limit
- Move form_where_clause function to common util
- Fix warning about MACRO being redefined
v0.16.0 (2022-08-23)¶
- Fix invalid memory access in restriction check
- Improve logging of new incoming connections
- Improve logging of authentication with password failures
- Fix SQL regression when fetchin mlist display name
- Use real mlist display name in nspi and zcore
- Revert "Use real mlist display name in nspi and zcore"
- Optimize org_table functions
- Create macros for magic numbers and use snprintf
- Optimize mlist_table functions
- Create macros for magic numbers and use snprintf
- Optimize user_alias_table functions
- Create macros for magic numbers and use snprintf
- Use real mlist display name in nspi and zcore
- Add different ensure fail conditions
- Don't fail if exp does not exist
- Add "display" field for mlist table
- Don't use quotes in cfg files
- Change func signature to uint8_t instead of char
- Return the correct number of copied chars
- Copy the remaining plain text to the html pointer
- Add editorconfig for new mlist_expand bounce templates
- Improve wording in bounce messages
- Fix typo in error message
- Add support for organization wide mlist expansion
- Create macros for same consts
- Add query_rows_ex function
- Add count of aliases and domains to table
- Enable mlist_expand hook for delivery
- Fix potential infinite loop in mlist row update
- Fix crash when updating mlist row with anything which is not a string array
- Dereference string array pointers in mlist
- Always install entitled_users plugin config
- Add cfg files for entitled_users
- Use libsodium to generate a random value
- Fix string overflow in users table when creating mlist
- Add abkt aliases vi symbolic links and improve docs
- Implement function "nsp_interface_get_templateinfo" for exchange nsp
- Fix sql query failure due to missing space
- Don't count aliases as active users
- Resolve warnings in related files
- Don't encapsulate plain text in
tag
- Add hescape library
- Remove incorrect parentheses in RFC822 FETCH args
v0.15.0 (2022-07-14)¶
- Aggregate all orders before comparing
- Don't fail on parsing error, skip entry instead
- Don't compare username to customer_login
- Add missing NULL checks to method var
- Bring back anti spam plugin based on headers
- Fix typo
- Add adminrpc table storing active users of an org
- Use active users to ensure in entitled_users
- Remove "contact system admin" string
- Add function to get active users of an org
- Upgrade ttlcache from v2 to v3
- Update oidc-go to v0.3.4
- Skip
HTML tag and trim white spaces - Don't change messages's uid on notification change
- Fix endless loop when parsing ical empty lines
- Always perform entitled_users check in zcore
- Change command log to verbose
- Don't clear mid if midb result is successful
- Add configuration support
- Implement ensure functionality
- Use entitled users in pop3
- Use entitled users in imap
- Use entitled users in http
- Use entitled users in zcore
- Add function to get organization from username
- Bootstrap entitled users plugin
- Properly format markdown table for domain privilege bits
- Remove domain subsystem plugin
- Remove unused archive system
- Remove obsolet archive_agent plugin
- Return org table domains sorted
- Add Domain privlege bit VRYFYD
- Remove "Sender" in mail header when user chooses alias as the "From"
- Avoids 64bit integer overflow when the message is going to be delivered in a deferred way in function 'rop_submitmessage'
- Fix simple warnings
- Add suffix search to adminrpc
- Unload memory after flag sync is done
- Update domain privilige bit docs
- Fix crash when processing flag sync error
- Remove obsolete billing plugin
- Update shared e4a Go library to latest
- Use entitlement for license claim aggregation
- Fix regression when formatting EX locinfo to string
v0.14.2 (2022-05-02)¶
- Fix segfault on ensure check while internal claim refresh
- Fix privilege bit value documentation
v0.14.1 (2022-04-20)¶
- Reformat C code treewide to allow 200 chars per line
- Increase allowed line length to 200 for C code
- Allow user aliases as "From" address while message submission
- Fix const char warning and clang-format
- Set PR_TODO_ITEM_FLAGS to zero in CompleteFlag
v0.14.0 (2022-04-14)¶
- Improve flag_sync debug logging
- Bump Go version to Go 1.18
- Enable flag_sync sevice plugin for midb on install
- Call flag sync service on midb message flag changes
- Add flag sync between midb and exmdb
- Implement flag_sync SetFlag and CompleteFlag handlers
- Implement flag_sync SetLastVerb handler
- Implement flag_sync plugin basics
- Introduce new flag_sync service
- Ensure to free oidc c result error char if any i set
- Refactor Go code to be able to share code
- Fix calendar item sub type parsing
- Use clang-format to clean-up unformatted files
- Add 'forwarded' flag support for IMAP
v0.13.0 (2022-04-04)¶
- Fix missing bounce template variables
- Use crlf line breaks for all bounce templates
- Use complete set of fields in bounce templates
- Remove duplicated notify bounce messages
- Fetch user id with SRV_PASSWORD logon method
- Improve English text of built-in mail message templates
- Remove all built-in non ascii message templates
- Only ensure zcore logon when forced
- Don't log error if the pcpid item already exists
- Fix warnings and typos
- Add entitlement checks to zcore
- Add entitlement checks to http
- Add entitlement checks to pop3
- Add entitlement checks to imap
v0.12.0 (2022-03-31)¶
- Avoid installing imap_code.txt data file twice
- Keep existing meeting request participants on modify
- Require x5c claim in offline license certificate licenses
- Move static functions to the same place
- Add fallback search for locale
- Fix locale fallback function
- Initialize entitlement in zcore, dac service at startup
- Add license validation
- Use proper entitle SSE event names
- Initialize entitlement in http, imap and pop3 service at startup
- Pass build version correctly to entitlment library
- Fix simple warnings
- Add fallback to locale search
- Bootstrap entitlement
- Remove function "respond_empty" in mod_activesync plugin
- Build with Go 1.17
- Use CI token for internal Go dependencies
- Update translations to the languages we actually want to maintain
- Remove fixed folder and imap language catalogs and use the built ones
- Add Gettext translation support for folder names
- Clang-format file
- Fix array out of bounds error
- Fix invalid comparison with proper assignment
- Fix alias log parameter
- Fix non void no return warnings
- Do not clean user info when it is NULL
- Check if the user id in the session matches the db
- Add support for PT_MV_STRING in message content restriction
- Remove pproptags of FTS_ITEM in "fts engine"
- Fix invalid comparison of uint with NULL
- Fix log messages
- Fix incorrect pointer and integer comparison
- Fix result of an assignment as a condition warning
- Fixes simple bug
- Changes schema of function "zarafa_server_messageidtoentryid"
- Fix warnings
- Check unload store result and properly log errors
- Do not set config values
- Don't save settings to the config file
- Send access denied error code
- Fix simple warnings
- Add user access check function
v0.11.0 (2022-03-08)¶
- Add new parameter b_rule when evaluating message restrictions
- Fix warnings in fastcgi
- Add logging to fastcgi
- Add redis error handling and retry mechanism
- Fix assignment warnings
- Format file with clang-format
- Clean-up remaining old style logging
- Fixes in moh_nsp, "[MS-OXNSPI] 2.2.9.2 ID Type is the constant 0x87" should be error
- Add PROP_TAG_DIRECTORY to store object in zcore
v0.10.0 (2022-02-28)¶
- Integrate fts functionality into exmdb_provider
- Make common_util_get_username_from_id availabe for use
- Add hiredis C library as third party
- Looko for decendant folders truly recursive
- Fix double list pointer use in midb
- Add debug log when user storage files are created
- Fix grammar in error messages
- Fix syntax error in SQL query
- Fix parameter order in function call
- Add msync command to sync db with eml
- Add unload_db result to response
- Move non static functions bellow static functions
- Require number of imap 'APPEND' commands to be 3 or more
- Include exmdb server response code in internal server response log message
- Don't send cryptic error e-mails
- Set max tries to wait for common utils init
- Increment plast_propid after parsing appointment
- Write to the socket only when the cmd is completed
- Fix typos to clarify imap error messages
- Log if a command in midb fails to run
- Remove indexer daemon
- Add PR_ACCESS for contents table object in zcore
- Filters alias addresses in 'direct_user_list' and 'user_table' of 'management' plugin
- Remove obsolete top level redirect FastCGI configuration
- Pass all headers to FastCGI client
- Convert remaining DOS line endings in .c .and .h files to Unix line endings
- Fixes strptime format string in imap
- Extracts time from 'Received' MIME field for 'APPEND' command
- Include version and build date in build outputs
- Fix typo in enum value
- Initialize length before getting buffer
- Add en-gb locale translations where missing
- Log failed rpc responses
- Log when attempting to open a database fails
- Increase storage table vMap limit to 4095
- Increase internal exmdb provider thread wait limit from 5 to 20
- Increase internal midb db waiting thread limit from 5 to 20
- Log all IMAP BAD literal size too large errors
- Log debug details when file pointer ulimit (rlimit) is too low at startup
- Add PROP_TAG_ATTACHMENTHIDDEN to inline attachments
- Remove thumnail service rewrite
- Fix parameter in hash table add function call
- Allow 64k storage table sub directories
- Fix incorrect memory allocation in RTF parser
- Fix typo in word sibling
- Check if log level is enabled before logging
- Change custom log functions to MACROS
- Update hash tables' documentation
- Use enum errors in remaining hash table functions
- Add enum error codes to hash table
- Dynamically enlarge long hash tables
- Remove obsolete code to enlarge ip4 tables
- Dynamically enlarge ip4 hash tables
- Remove obsolete code to enlarge str tables
- Dynamically enlarge str hash tables
- Remove obsolete code to enlarge int tables
- Dynamically enlarge int hash tables
- Adds UTC timezone definition to MAPI object when parsing all-day-event meeting request
- Fixes all-day-event bug in oxcical.c
- Frees fastcgi socket to avoid socket leaks in mod_activesync
- Fixes socket and memory leaks in mod_activesync
- Only register event proc uppon successful loading
- Improve logging message when plugin fails to load
- Change config name to fix a typo
- Add rewrite for thumbnail service
- Add missing exmdb_client_get_delegate_list to exchange_emsmdb
v0.9.2 (2022-01-04)¶
- Build without compiler optimizations
- Allow override of compiler flags
v0.9.1 (2021-12-30)¶
- Do not store NULL objects
- Use the right variable to create the path
- Explicitly return true
- Prevent race condition when stopping RPC parser
- Fixes recurrence parsing error in oxcical.c
v0.9.0 (2021-12-20)¶
- Fix http segfault when context is NULL for incoming requests from Outlook
- Automatically update message's PR_MESSAGE_DELIVERY_TIME if its UNSENT bit is set in PR_MESSAGE_FLAGS
- Add ORDER BY clause to search table functions
- Add order by clause to queryrows functions
- Check and log mkdir errors
- Improve debug build support
- Add missing semicolon
- Increase char arrays to fit generated passwords
- Fix translation of the German junk folder
- Config variable must be a character pointer
- Properly shutdown the console_server
- Only initialize services after parsing all configs
- Make sure we free all services on all errors
- Use pthread_cond_waitd to sleep threads
- Improve OIDC library logging by adding log level support
- Hashed arrays must fit the required hash length
- Switch CI compiler from gcc-9 to clang-10
- Switch CI linter format check stage from Debian to Ubuntu
- Fix build with gcc 10 and newer
- Compile with -Wno-format-nonliteral
- Fix build with modern compile
- Do not expose the hash algorithm outside util
- Replace MD5 hashing with yescrypt
- Do not expose the user exists to the clients
- Install a couple of missing data files to avoid error log messages on startup
- Don't send a NULL pointer to oidc auth
- Validate OIDC session if it already has one
- Add logoff dispatch to rpc_parser
- Add an expiration timestamp to every session
- Add logoff function
- Add logging to the logon function in zcore
- Add support for multiple sessions in zcore
- Add config for specific umask and gid for sockets
- Remove calls to chmod
- Remove umask calls
- Set appropriate log level
- Don't print both prefix and tag if they are equal
- Change prefix separator to a colon
- Add a prefix to log messages' scope for execs
- Enable log lvl runtime check
- Flip log level values
- Remove log plugin and system log
- Remove log plugin references
- Replace log_info function with e4a log in rsyncd
- Replace log plugin with e4a log in smtp parser
- Replace log plugin with e4a log in smtp deliverer
- Replace log plugin with e4a log in relay agent
- Replace log plugin with e4a log in php mailbox
- Replace log plugin with e4a log in message ins
- Replace log plugin with e4a log in mail approving
- Replace log plugin with e4a log in smtp dispatch
- Replace log plugin with e4a log in exmdb local
- Replace log plugin with e4a log in domain log
- Replace log plugin with e4a log in transporter log
- Replace log plugin with e4a log in alias log
- Replace log plugin with e4a log in smtp clone
- Replace log plugin with e4a log in pop3
- Replace log plugin with e4a log in imap
- Replace log plugin with e4a log in common util
- Replace log plugin with e4a log in http parser
- Add e4a_log function with level param
- Replace log_plugin direct usage with e4a_log
- Separate the log's fields with a space
- Rename tag to scope
- Remove brackets from log tag
- Add documentation for the e4a logger
- Add env variable to set time and src when logging
- Set a log tag per target
- Append log info at the tail of the message
- Move timestamp to the start of the log
v0.8.0 (2021-11-12)¶
- Modifies PROP_TAG_MESSAGEFLAGS in exmdb_provider and zcore
- Allow OIDC to be disabled and disable by default
- Properly set oidc log tag
- Increase OIDC discovery default expiration to 1 hour
- Implement oidc service plugin and use it in zcore
- Implements https://gitlab.com/exchange4all/system/incubating/c-system/-/issues/110
- Log Debug and Verbose messages with right level
- Rename folder to Exchange4all
- Remove debug_info function
- Replace debug_info with e4a logging
- Replace printfs in service-system with e4a logging
- Replace printfs in mta-system with e4a logging
- Replace printfs in mra-system with e4a logging
- Replace printfs in library with e4a logging
- Replace printfs in core-system with e4a logging
- Replace printfs in archive-system with e4a logging
- Replace printfs in plugins with e4a logging
- Replace printfs in event with e4a logging
- Replace printfs in adminrpc with e4a logging
- Fixes spelling mistake in exmdb_provider.cfg
- Fixes spelling mistakes in exmdb_provider service plugin
- Add logging to admin_interface
- Add logging to adminrpc rpc_parser
- Add adminrpc logging tag
- Add logging to alias_table
- Add logging to class_table
- Add logging to common_util
- Add logging with direct_user_list
- Add logging to domain_list
- Add logging to domain_row
- Add logging to domain_table
- Add logging to folder_table
- Add logging to group_table
- Add logging to management main
- Add logging to mlist_table
- Add logging to org_table
- Add logging permission_table
- Add logging to storage_table
- Add logging to user_alias_table
- Add logging to user_class_list
- Add logging to user_list
- Add logging to user_table
- Add logging to management plugin
- Fixes connection leaks of RPC-OVER-HTTP out channel
- Allowes the property PROP_TAG_CONVERSATIONID of message obeject to be modifiable when it's new
- Add e4a logging
- Move zf_log to the library folder
- Change zf_log ctx to allow more granular control
- Format zf_log to fit our style
- Use find to be less shell dependant
v0.7.0 (2021-10-26)¶
- Fixes the bug when parsing PidLidIntendedBusyStatus from ical
- Mod activesync improvement
- Adds windows_size and more_available parameters into zcore ICS context config function to control size of returned collection
- Install ip_filter configuration as found in source
- Fixes bug of unloading chunked data of request in mod_fastcgi.c
- Moves "VALARM" paragraph into "VEVENT" in oxcical.c
- Addes (special-use) support to LSUB command of IMAP
- Fix bugs in (special-use) of LIST command
- Increase default FASTCGI_MAX_SIZE
- Prevent message total size of store to be less than 0
- duplicated "sqlite3_prepare_v2" will cause serious memory leaks of "dac" process
- Make sure the buffer has enough space
- Sort user alias get_table result by aliasname
- Do not perform string ops before initializing it
- Add zf_log logging libary
- Make sure the error code is valid
- Slightly increase buffer to fit null terminator
- Increase the maximum byte size of various users table fields to 128
- Add database migration for larger cols in users table
- Use the correct structure in the mysql function
- Sort group table by groupname
- Sort org table by title
- Switch primary MariaDB database storage engine to Aria
- Add MySQL DB migration for domain without end date support
- Discard "NOT NULL" restriction on "end_day" column of "domains" table in "management" plugin
v0.6.0 (2021-09-15)¶
- Addes error logging in mod_activesync plugin
- Auto use MySQL unix socket for Goose
- Move database initialization to migration and implement it using Goose
- Add goose database migration tool
- Add -p to mkdir to allow install to exisiting
- Fixes missing parameter of printf in file main.c of zcore
- Change default permission of var data
- Fix bug of amidb, wchich could causes SIGSEGV in function "scan_work_func"
- Create data del.queue for dac user data delete
- Implement X-ActiveSync-Ping-FolderID ping mechanism in mod_activesync
- Sort user table gettable result by username
- Sort domain table gettable results by domainname
- Cure buffer overflows in imap fetch command
- Add privilege bit names
- Fix format and definition of privilege bits
- Fix property PR_USER_NAME of store object in zcore
- Change length of X-E4A-ZCORE-SESSION to 19 in mod-activesync
- Add doc for privilege_bits of user and domain
- Compare all bytes of password buffer in zarafa_server_logon
- Compare all bytes of password buffer in zarafa_server_logon
- Add time-constant comparison in zarafa_server_logon
- Change X-E4A-ZCORE-SESSION to X-E4a-Zcore-Session
- Change header ZCORE-SESSION in mod_activesync to X-E4A-ZCORE-SESSION and add usleep in "zarafa_server_logon"
- Add a new "service password" mechanism in zcore to ensure granted clients to logon zcore with that password
- Change "warning" to "notice" in "str_filter" and "ip_filter" service plugin
v0.5.0 (2021-08-19)¶
- Add "environ" into "execve" to pass parent env varaiables into freebusy process in zcore
- Fix freebusy command bugs in zcore
- Modify functions "make_gmtime", "make_gmtm" to libc standard "timegm", "gmtime_r"
- Disable compiler optimziations for timezone library
- Move timezone code to dedicated lib
- Change "close(dirp)" to "closedir(dirp)"
- Update mod_activesync default configuration so it actually works
- Also forward mod_activesync HTTP headers in Apache format
- Change "bussiness_phone" to "business_phone"
- Set listen backlog to 1024 for all listening sockets
- Fix stupid bugs in adac_processor.c
- Add FastCGI header forwarding wildcard support and use standard Apache header format for all forwarded headers
- Fix saving rule error in zcore, convert zrule to normal rule
- Make sure the buffer is NULL by default
- Use the correct b_private
- Fetch number of threads from config file
- Fail if message count is zero or message is NULL
- Fail if we can't set permission
- Fail if we receive an unexcepted table type
- Use the right string for SSL_Write
- Fail if we find unexpected SMTP MODE
- Fail if we get unexpected forward data
- Fail on default
- Assign value to sql_len
- Initialize variable before performing operations
- Add missing get_rpc_info function call
- Initialize pbin to NULL
- Add missing unicode check
- Return false on default
- Add default value to num variable
- Inialize pvalue to NULL so we avoid errors
- Throw convert error if picture type is unexpected
- Add sanity else check
- Add 127.0.0.1 to ip filter default white list
- Fix indentation white space in http data files
- Add FORCE option to initialize script
- Don't put a connection that doesn't exist
- Make sure the strings aren't NULL
- Don't bother getting props if prop array is NULL
- Check if ptable_ids is not NULL
- Add missing error return
- Function should fail if value is NULL
- Remove impossible to meet condition
- Run for loop inside if to avoid angry compiler
- Check if pmsg1 is not NULL before using it
- Make sure the messages aren't NULL
- Use the correct rule variable
- Make sure nodes and parent nodes aren't NULL
- tmp should never be NULL
v0.4.0 (2021-08-04)¶
- Remove debug from changelog script
- Add option for outbound SMTP delivery via smart host
- Create storage folder world readable by default
- Add GDB support to bin script
- Fix wrong rewrite for as endpoint
- Initialize pinfo variable
- Add missing greater than comparison
- Initialize lastch and check if it is not zero
- Initialize tag_access before performing operations
- Do not allow negative tape units
- Fail in case of unexpected value in switch
- Assign value to correct propval
- Fail if the condition is different than expected
- Set correct default path of ActiveSync implementation endpoint for mod_activesync
- Return false on default branch
- Fetch row before trying to use value
- Assign pextfwddlgt and use ext_actions instead
- Return false on default branch as well
- Always assign a value to pnode_last
- Read DATA_FILE_PATH from config file instead of hard code "../data"
- Move from herculiz naming to Exchange 4 All naming treewide
- Move rest of "grid" naming to Exchange 4 All naming
- Fix simple bug in "emsmdb_interface_connect_ex"
- Update push endpoint to use new location
- Rectify spelling errors "rinning" in prompting string of cidb, event and timer
- Link moh_nsp with exchange_nsp so it does not crash
- Resolve symbolic links for default BASEDIR
- Fix invalid BASEDIR export for service
v0.3.0 (2021-07-26)¶
- Use build system to create distinct so files for plugins
- Remove "rpc_lib" from repository and move "ndr.c" to "common" library
- Install amidb service
- Use service.cfg for amidb service
- Strip RPATH in CI builds but not in local builds
- Use public endpoint of eas
- Install smtp data folder
- Set smtp service to inbound only mode by default
- Install mysql_adaptor service into smtp
- IP bit range should not be higher than 32
- Make sure psorts count isn't zero
- Remove useless parameter in function "pdu_processor_auth_request"
- Remove ntlm support from MS-RPC
- Make style more consistent with overall codebase
- Check for null to avoid potential seg fault
- Use the length of the property to allocate buffer
- Make sure we actually have data to write
- Check if we actually found items in the list file
- By default set number of read bytes to zero
- Assign missing variables on unexpected SMTP error
- Initialize num variable
- Treat unexpected SMTP error as a permanent error
- Make sure array contains null character by default
- Assing multi_num to zero if no valid type is found
- Compare the correct variable
- Check permissions by default
- Check permissions after they are retrieved
- Don't write garbage if status won't fit checks
- Use the correct variable in the while loop
- Assign result to status instead of subtracting
- Initialize pb_aync earlier
- Result should contain a proper value
- Initialize variable before comparing
- Initialize sad count variable
- Initialize array's first position
- Assume UTC by default for DTEND
- Frequency value should always be valid
- Check line_len before performing bitwise operation
- Initialize found_tag to prevent garbage comparison
- Make sure length never has garbage after switch
- Initialize lastch variable
- Remove nonsensical garbage comparison
- Don't shift negative values as its undefined
v0.2.1 (2021-07-20)¶
- Require CMake 3.14 or higher
- Enable relative paths in the build
RPATH - Publish dist artifact as generic package when its a tag
v0.2.0 (2021-07-20)¶
- Add trailing slash to path list paths
- Use bin script wrapped command to timer/submit.php in default config
- Add missing white space
- Install additional scripts for initialization
- Create storage base folder
- Add initialize script for storage initialization
- Delegate configured env variables to sub scripts
- Use whole scripts folder in development setup example
- Move fmtstorage script to scripts folder
- Add sanitizer and tools support to CMake build script
- Add options to control build script behavior
- Add clang-tidy script and config
- Add ARGS to build script to make setting cmake options possible
- Santize the fmtstorage script
- Make the create_queue script less dangerous
- Always create log file at log_plugin run
- Remove FILES_NUM setting from log_plugin
- Remove date part from log_plugin log file names
- Remove log_plugin clean up thread
- Add env variable to set log_plugin to always flush
- Install missing cfg files for delivery and smtp daemons
- Fix imap data folder install
- Clear RUNNING_IDENTITY from all cfg files on install
- Fix syntax error on MySQL files
- Create /run dir in binscript when it does not exist
- Also remove rpath from libraries and plugins
- Use mysqlclient via pkg-config as build dependency
- Remove supervisor from admin-system
- Rewrite guid.c to get rid of GPL license and fix stupid bug in util.c
- Install additional required config and data files
- Update default log_plugin log file location treewide
- Install delivery service by default
- Use windows line endings for remote_postman messages
- Use windows line endings for exmdb_local messages
- Rewrite qp_decode and qp_decode_ex without GPL license
- Install smtp service by default
- Remove bogus umask and reformat queue create helper script
- Install pop3 service by default
- Keep track of characters written when reading RTF
- Assign variable to make sure array access is valid
- Install imap service by default
- Merge event_proxy features from mra-system
- Add CI only rules to run CI on specific cases only
- Don't return garbage status by default
- Check for NULL before returning
- Assign var to make sure it won't return garbage
- Fix stupid bugs in all "exmdb_client.c"
- Install MySQL database init SQL script
- Install empty cidb_list as required
- Install midb service
- Fix up develop setup symlink fu
- Don't crash httpd if opening rewrite.txt fails
- Add more steps to the development setup instructions
- Run CI stages in parallel
- Install freebusy and rtfkit tools
- Allow e4a script to run service tools
- Add missing dev setup step for libexec
- Remove obsolete session service
- Remove mpc anonymous_keyword plugin
- Use clang-10 for static analyzer by default
- Fix copy/paste depenency issue for libz
- Add scope to README
- Fix installer so it installs to non-existing directory
- Add hint about scan-build to README
- Support to run scan-build directly
- Add a brief dev setup instructions
- Switch over to e4a paths treewide
- Change default install into system subdirectory
- Remove preconfirured defaults for old webmeetings
- Remove pre-configured defaults for obsolete admin-ui
- Add gitlab-ci.yml to .gitignore
- Remove built-in antispam and antivirus support
- Enable mod_proxy http hpm plugin by default
- Keep admin pan broadcast plugin disabled by default
- Minor formatting & shellcheck fixes
v0.1.1 (2021-07-02)¶
- Include distro and platform in dist tarball name
- Add install helper and utilities
- Rename duplicated sqlite3 script to avoid filename conflict