v4.3.24
Security fix release for Coolify 4.3. Apply it with: curl -fsSL https://cdn.coollabs.io/coolify/patch.sh | sudo bash
Security fix release for Coolify 4.3. Apply it with: curl -fsSL https://cdn.coollabs.io/coolify/patch.sh | sudo bash
Important
Instances on 4.0 to 4.3 that stay on their version can apply the security fix release of their line with curl -fsSL https://cdn.coollabs.io/coolify/patch.sh | sudo bash.
The Asterisk Development Team would like to announce
the release of Certified asterisk-22.8-cert5.
The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/certified-22.8-cert5
and
https://downloads.asterisk.org/pub/telephony/certified-asterisk
Repository: https://github.com/asterisk/asterisk
Tag: certified-22.8-cert5
This release resolves issues reported by the community
and would have not been possible without your participation.
Thank You!
The Asterisk Development Team would like to announce
the release of Certified asterisk-20.7-cert12.
The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/certified-20.7-cert12
and
https://downloads.asterisk.org/pub/telephony/certified-asterisk
Repository: https://github.com/asterisk/asterisk
Tag: certified-20.7-cert12
This release resolves issues reported by the community
and would have not been possible without your participation.
Thank You!
If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.
APPEND and COPY/MOVE into another account's mailbox do not change the JMAP EmailDelivery state.SEARCH RETURN with MIN or MAX alongside ALL returns only the minimum and maximum in ALL, and SAVE combined with MIN or MAX and ALL or COUNT saves only the minimum and maximum instead of every match.VTIMEZONE definitions it carries, so an occurrence moved by an external organizer can reference a TZID (for example W. Europe Standard Time) the stored event no longer defines, and Apple Calendar shows both the original and the moved occurrence.http://127.0.0.1:45678) are not matched against registered loopback URIs on any port and are rejected by dynamic client registration.PROPFIND allprop returns DAV:current-user-principal, so Windows Explorer shows every file and folder under the account name.
The PostgreSQL Global Development Group announces that the first release candidate of PostgreSQL 19 is now available for download. As a release candidate, PostgreSQL 19 RC 1 will be mostly identical to the initial release of PostgreSQL 19, though some more fixes may be applied prior to the general availability of PostgreSQL 19.
The next scheduled update release for supported versions of PostgreSQL, on November 12, 2026, will include a large number of fixes. Because of this, the release team decided to include these fixes in PostgreSQL 19 before its general availability. This means a second release candidate, PostgreSQL 19 RC 2, will be available on the same day as the update release.
The planned date for the general availability of PostgreSQL 19 is November 19, 2026. Please see the "Release Schedule" section for more details.
To upgrade to PostgreSQL 19 RC 1 from earlier versions of PostgreSQL, you will
need to use a major version upgrade strategy, e.g. pg_upgrade or
pg_dump / pg_restore. For more information, please visit the documentation
section on upgrading:
https://www.postgresql.org/docs/19/upgrading.html
Several bug fixes were applied to PostgreSQL 19 during the Beta 4 period. These include:
REPACK (CONCURRENTLY).pg_plan_advice.NULL.wal_level is set to replica.postgres_fdw
statistics import to run as the owner of the foreign table instead of the user
running ANALYZE.COPY (query) TO ... (FORMAT json)
to use the query's column names, including aliases, as the JSON keys instead of
the table's column names.For a detailed list of fixes, please visit the open items page.
This is the first release candidate for PostgreSQL 19. The release team plans to issue a second release candidate, PostgreSQL 19 RC 2, on November 12, 2026. Unless an issue is discovered that requires a delay or an additional release candidate, PostgreSQL 19 should be made generally available on November 19, 2026.
For further information please see the Beta Testing page.
If you have corrections or suggestions for this release announcement, please send them to the pgsql-www@lists.postgresql.org public mailing list.
njs-1.0.2 version has been released, with fixes for memory exhaustion vulnerability when parsing malformed XML (CVE-2026-101025), and inconsistent XML attribute values affecting signed XML validation (CVE-2026-101019).
nginx-1.30.6 stable and nginx-1.31.7 mainline versions have been released, with fixes for buffer overflow vulnerability when using alias with rewrite (CVE-2026-15176), buffer overflow vulnerability when evaluating string expressions with variables (CVE-2026-93479), request body injection vulnerability in HTTP/3 (CVE-2026-95101), session forgery vulnerability when using TLS session ticket key rotation (CVE-2026-97629), and use-after-free vulnerability when using ngx_http_ssi_module with AIO (CVE-2026-97205).
Graphics improvements
Misc UX
APIs
Expressions
Variables
Controls
Misc
Full Changelog: v5.0.7...v5.1.0
If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.
sd_notify support.Mailbox/set allows moving a mailbox under a parent that already has a child with the same name, and rejects renames that only change the case of a mailbox name with alreadyExists.hickory-resolver patched fork at https://github.com/stalwartlabs/hickory-dns.SMFIP_NOHDRS without SMFIP_NOEOH, so the transaction stalls until it times out.claimUsername claim but has an email claim, the account is built from email without consulting the userinfo endpoint.onSuccessUpdateEmail and onSuccessDestroyEmail entries in EmailSubmission/set that name an existing submission by id update or destroy the Email with the same id instead of the submission's own Email.VacationResponse/set that only sets isEnabled on an account without a vacation response activates an empty Sieve script.
Full Changelog: v4.4.5...v4.4.6
Full Changelog: v4.4.4...v4.4.5
Full Changelog: v4.4.3...v4.4.4
General
API
Media-Over-QUIC
RTSP
RTMP
HLS
WebRTC
Dependencies
Binaries are compiled from source code by the Release workflow, which is a fully-visible process that prevents any change or external interference in produced artifacts.
Checksums of binaries are also published in a public blockchain by using GitHub Attestations, and they can be verified by running:
ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx
You can verify checksums of binaries by downloading checksums.sha256 and running:
cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check
Full Changelog: v4.4.2...v4.4.3
The Asterisk Development Team would like to announce
release candidate 2 of asterisk-24.0.0.
The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/24.0.0-rc2
and
https://downloads.asterisk.org/pub/telephony/asterisk
Repository: https://github.com/asterisk/asterisk
Tag: 24.0.0-rc2
This release resolves issues reported by the community
and would have not been possible without your participation.
Thank You!
Joshua C. Colp (2):
Mike Bradeen (1):
Audiohooks: Fix whisper framehook timer leak and masquerade handling
Author: Mike Bradeen
Date: 2026-09-25
Resolves several issues with the framehook added to allow whispering without
an underlying stream.
The timer is now owned by the audiohook list rather than the framehook. It is
retired on both channels during a masquerade and recreated when the audiohook(s)
are moved.
If the timer cannot be started, whisper audio is still mixed into the outbound
media as it was previously (requiring an underlying stream.)
An audiohook that cannot be moved to the new channel is now left DONE so that
its owner does not wait on it forever.
Resolves: #2134
DeveloperNote: ast_channel_fd_add() now returns -1 if it fails to allocate
space for the descriptor.
extstate/pjsip: Handle lack of or late loading of presence state.
Author: Joshua C. Colp
Date: 2026-09-25
The extension state implementation is stateful resulting in state
not being updated if a presence state provider does not publish an
update after loading. To handle providers which don't do this we
query for updated state if we are asked for it and the existing
state is invalid. This ensures that if the presence state provider
is loaded later we will get the updated state when asked.
The func_presencestate module is written to publish the persisted
custom presence states at load time. This failed for entries with
a not_set state as this resulted in querying the presence provider
that was not yet registered. The provider is now registered before
this ensuring the update can be published.
This change also fixes an issue in PJSIP where a SUBSCRIBE for a
hint that had an invalid presence state configuration would not
send an initial NOTIFY. We now treat an invalid presence state as
not set instead.
Fixes: #2179
extstate: Include causing device channel details in legacy callbacks.
Author: Joshua C. Colp
Date: 2026-09-29
When a legacy extension state callback registers it can optionally
do so in a way that it will receive the channel(s) that have caused
a device to ring. This is used in PJSIP for the dialog-info+xml
support so that phones can display who is calling the monitored
extension.
An issue was introduced in the extension state rewrite where this
did not occur for the actual device that caused the extension state
update. It was only being done for additional devices that could be
involved. This has been fixed so that it is now done for the causing
device.
Fixes: #2186
The Asterisk Development Team would like to announce
release candidate 2 of asterisk-23.6.0.
The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/23.6.0-rc2
and
https://downloads.asterisk.org/pub/telephony/asterisk
Repository: https://github.com/asterisk/asterisk
Tag: 23.6.0-rc2
This release resolves issues reported by the community
and would have not been possible without your participation.
Thank You!
Joshua C. Colp (2):
Mike Bradeen (1):
Audiohooks: Fix whisper framehook timer leak and masquerade handling
Author: Mike Bradeen
Date: 2026-09-25
Resolves several issues with the framehook added to allow whispering without
an underlying stream.
The timer is now owned by the audiohook list rather than the framehook. It is
retired on both channels during a masquerade and recreated when the audiohook(s)
are moved.
If the timer cannot be started, whisper audio is still mixed into the outbound
media as it was previously (requiring an underlying stream.)
An audiohook that cannot be moved to the new channel is now left DONE so that
its owner does not wait on it forever.
Resolves: #2134
DeveloperNote: ast_channel_fd_add() now returns -1 if it fails to allocate
space for the descriptor.
extstate/pjsip: Handle lack of or late loading of presence state.
Author: Joshua C. Colp
Date: 2026-09-25
The extension state implementation is stateful resulting in state
not being updated if a presence state provider does not publish an
update after loading. To handle providers which don't do this we
query for updated state if we are asked for it and the existing
state is invalid. This ensures that if the presence state provider
is loaded later we will get the updated state when asked.
The func_presencestate module is written to publish the persisted
custom presence states at load time. This failed for entries with
a not_set state as this resulted in querying the presence provider
that was not yet registered. The provider is now registered before
this ensuring the update can be published.
This change also fixes an issue in PJSIP where a SUBSCRIBE for a
hint that had an invalid presence state configuration would not
send an initial NOTIFY. We now treat an invalid presence state as
not set instead.
Fixes: #2179
extstate: Include causing device channel details in legacy callbacks.
Author: Joshua C. Colp
Date: 2026-09-29
When a legacy extension state callback registers it can optionally
do so in a way that it will receive the channel(s) that have caused
a device to ring. This is used in PJSIP for the dialog-info+xml
support so that phones can display who is calling the monitored
extension.
An issue was introduced in the extension state rewrite where this
did not occur for the actual device that caused the extension state
update. It was only being done for additional devices that could be
involved. This has been fixed so that it is now done for the causing
device.
Fixes: #2186
The Asterisk Development Team would like to announce
release candidate 2 of asterisk-22.12.0.
The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/22.12.0-rc2
and
https://downloads.asterisk.org/pub/telephony/asterisk
Repository: https://github.com/asterisk/asterisk
Tag: 22.12.0-rc2
This release resolves issues reported by the community
and would have not been possible without your participation.
Thank You!
Joshua C. Colp (2):
Mike Bradeen (1):
Audiohooks: Fix whisper framehook timer leak and masquerade handling
Author: Mike Bradeen
Date: 2026-09-25
Resolves several issues with the framehook added to allow whispering without
an underlying stream.
The timer is now owned by the audiohook list rather than the framehook. It is
retired on both channels during a masquerade and recreated when the audiohook(s)
are moved.
If the timer cannot be started, whisper audio is still mixed into the outbound
media as it was previously (requiring an underlying stream.)
An audiohook that cannot be moved to the new channel is now left DONE so that
its owner does not wait on it forever.
Resolves: #2134
DeveloperNote: ast_channel_fd_add() now returns -1 if it fails to allocate
space for the descriptor.
extstate/pjsip: Handle lack of or late loading of presence state.
Author: Joshua C. Colp
Date: 2026-09-25
The extension state implementation is stateful resulting in state
not being updated if a presence state provider does not publish an
update after loading. To handle providers which don't do this we
query for updated state if we are asked for it and the existing
state is invalid. This ensures that if the presence state provider
is loaded later we will get the updated state when asked.
The func_presencestate module is written to publish the persisted
custom presence states at load time. This failed for entries with
a not_set state as this resulted in querying the presence provider
that was not yet registered. The provider is now registered before
this ensuring the update can be published.
This change also fixes an issue in PJSIP where a SUBSCRIBE for a
hint that had an invalid presence state configuration would not
send an initial NOTIFY. We now treat an invalid presence state as
not set instead.
Fixes: #2179
extstate: Include causing device channel details in legacy callbacks.
Author: Joshua C. Colp
Date: 2026-09-29
When a legacy extension state callback registers it can optionally
do so in a way that it will receive the channel(s) that have caused
a device to ring. This is used in PJSIP for the dialog-info+xml
support so that phones can display who is calling the monitored
extension.
An issue was introduced in the extension state rewrite where this
did not occur for the actual device that caused the extension state
update. It was only being done for additional devices that could be
involved. This has been fixed so that it is now done for the causing
device.
Fixes: #2186
The Asterisk Development Team would like to announce
release candidate 2 of asterisk-20.22.0.
The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/20.22.0-rc2
and
https://downloads.asterisk.org/pub/telephony/asterisk
Repository: https://github.com/asterisk/asterisk
Tag: 20.22.0-rc2
This release resolves issues reported by the community
and would have not been possible without your participation.
Thank You!
Joshua C. Colp (2):
Mike Bradeen (1):
Audiohooks: Fix whisper framehook timer leak and masquerade handling
Author: Mike Bradeen
Date: 2026-09-25
Resolves several issues with the framehook added to allow whispering without
an underlying stream.
The timer is now owned by the audiohook list rather than the framehook. It is
retired on both channels during a masquerade and recreated when the audiohook(s)
are moved.
If the timer cannot be started, whisper audio is still mixed into the outbound
media as it was previously (requiring an underlying stream.)
An audiohook that cannot be moved to the new channel is now left DONE so that
its owner does not wait on it forever.
Resolves: #2134
DeveloperNote: ast_channel_fd_add() now returns -1 if it fails to allocate
space for the descriptor.
extstate/pjsip: Handle lack of or late loading of presence state.
Author: Joshua C. Colp
Date: 2026-09-25
The extension state implementation is stateful resulting in state
not being updated if a presence state provider does not publish an
update after loading. To handle providers which don't do this we
query for updated state if we are asked for it and the existing
state is invalid. This ensures that if the presence state provider
is loaded later we will get the updated state when asked.
The func_presencestate module is written to publish the persisted
custom presence states at load time. This failed for entries with
a not_set state as this resulted in querying the presence provider
that was not yet registered. The provider is now registered before
this ensuring the update can be published.
This change also fixes an issue in PJSIP where a SUBSCRIBE for a
hint that had an invalid presence state configuration would not
send an initial NOTIFY. We now treat an invalid presence state as
not set instead.
Fixes: #2179
extstate: Include causing device channel details in legacy callbacks.
Author: Joshua C. Colp
Date: 2026-09-29
When a legacy extension state callback registers it can optionally
do so in a way that it will receive the channel(s) that have caused
a device to ring. This is used in PJSIP for the dialog-info+xml
support so that phones can display who is calling the monitored
extension.
An issue was introduced in the extension state rewrite where this
did not occur for the actual device that caused the extension state
update. It was only being done for additional devices that could be
involved. This has been fixed so that it is now done for the causing
device.
Fixes: #2186
Full Changelog: v4.4.1...v4.4.2
SCHEDULED_JOBS_DISPATCH_MODE to select sequential or concurrent schedule dispatch. Self-hosted instances used sequential dispatch by default to reduce CPU and memory use; cloud instances kept concurrent dispatch.Full Changelog: v4.4.0...v4.4.1
This release adds built in traffic analytics for Traefik and Caddy, experimental support for SQLite as a database, readable container names with a configurable container prefix, third-party secret managers, Cloudflare DNS management, OpenID Connect sign-in, GitHub Actions runners on build servers, and Docker registry logins. It also includes many fixes.
|
|
|
Container name prefix for generated names (#11704)
custom_container_name_prefix in the API. It is slugified, limited to 30 characters, and unique per server. Rolling updates keep working compared to the custom container name (consistent mode) which loses rolling updates.| before | after | |
|---|---|---|
| single container app (prefix: shop-api) | k9p2m4x7q1w3e5r6t8y0u2i4-20260908T141530 |
shop-api-20260908T141530 |
compose service web (prefix: shop-api) |
web-k9p2m4x7q1w3e5r6t8y0u2i4-20260908T141530 |
web-shop-api-20260908T141530 |
Split action buttons (#11409)
Autofocus on auth forms (#11324)
Third-party secret managers (#11474)
{{vault.KEY}} references are resolved during deployment and database start. Values are never stored in Coolify's database and are redacted from deployment logs.Team audit log (#11462, #11788)
GET /audit-events in the API.Database import API (#11699)
POST /databases/{uuid}/imports/uploads, POST /databases/{uuid}/imports, GET /databases/{uuid}/imports/{activity_id}, and the same under /services/{uuid}/databases/{database_uuid}/imports.write permission. An import from a server path also needs deploy.Cloudflare integration tokens (#11359)
Cloudflare DNS record management (#11699)
OpenID Connect single sign-on (#10543)
https://login.microsoftonline.com/<tenant ID>/v2.0 as the issuer URL and add the optional ID token claims email and xms_edov to the app registration. xms_edov counts as a verified email.Alpine Linux server support (#6189)
apk.Copy environment variable values (#11379)
$SERVICE_* references resolve to their actual value, except references to locked shared variables. Locked variables have no copy button.Named volumes (#7591)
Server roles for deployments and builds
server_role in the API. The deprecated is_build_server field still works.GitHub Actions self-hosted runners (beta) (#12054)
Docker registry logins (#12048)
docker login on the server and does not store the token.GET /servers/{uuid}/registries, POST /servers/{uuid}/registries, POST /servers/{uuid}/registries/{registry}/check, and DELETE /servers/{uuid}/registries/{registry}.Docker images page (#11689)
Traefik ACME certificates (#12015)
acme.json on the new TLS Certificates page in the server's Proxy menu. Deleting does not revoke the certificate, and the server shows that the proxy needs a restart.acme.json before every change and keeps the last 10 backups, which can be restored or deleted on the same page.Account deletion (#12088)
Preview deployments API
GET /applications/{uuid}/previews and GET /applications/{uuid}/previews/{pull_request_id} return preview deployments. POST /applications/{uuid}/previews opens or redeploys the preview of a pull request and needs the deploy permission.Reopen the live deployment log (#11783)
Application settings filter (#11783)
Use variables such as ${NETWORK:-coolify} or ${COMPOSE_PROJECT_NAME}_default in Compose network names of applications and services, including a service's networks: list. A network name that is a single variable is added as an editable environment variable.
Delete a server from its cloud provider (Hetzner, Vultr, or DigitalOcean) through the API with delete_from_provider=true on DELETE /servers/{uuid}. (#12026)
Give additional users access to the Horizon dashboard with the HORIZON_ALLOWED_EMAILS environment variable (#9354)
Show pending team invitations on the dashboard.
Test S3 storages that were marked unusable again every hour, so they become usable on their own once the connection works.
Generate a random manual webhook secret with one click.
Show a warning icon on the server Proxy menu when the proxy is not running.
Link the Healthcheck row in the status summary of applications and databases to the healthcheck page.
Add a favicon, an Apple touch icon, and a web app manifest.
Add OAuth settings to auto-join new OAuth users to the root team and to disable password registration while OAuth is on. The login page then shows "Only OAuth registration is enabled."
Add a shared copy component which is used across resource (#11368)
coolify-realtime (Soketi) container is no longer used; existing proxy routes and port settings keep working, and a soketi override in docker-compose.custom.yml is still accepted. (#10530, #11935)<uuid>-20260908T141530) instead of HHMMSS plus microseconds (the old suffix is still recognized). (#11702)coolify.applicationUuid, coolify.serviceUuid, coolify.service.subUuid, and coolify.databaseUuid instead of numeric ID labels. Existing containers keep working and get the new labels on the next deploy or restart.replace_existing in the API) restores the previous --clean behavior. PostgreSQL archive restores also skip owners and privileges unless "Keep owners and privileges" (keep_owners) is set. (#11699)restore_mysql_users), and SQLite restores can pick the target file (sqlite_database). The import form shows the exact restore script.php artisan oauth:rekey <provider> --from=<old URL or tenant> so linked accounts keep working.email_verified: true. Add a scope mapping in Authentik under Customization β Property Mappings that returns {"email": request.user.email, "email_verified": True}, and use it on the provider instead of the default email mapping.* allows any Workspace account.REDIS_PASSWORD environment variable sets the server password and the connection URLs. Databases created before this release keep their stored password unless the variable reads a secret manager.[A-Za-z_][A-Za-z0-9_.]*. Existing runtime-only variables with other names, such as my-var, still deploy with a warning and a suggested name, while invalid build-time names stop image builds. (#11917)server_disk_usage_notification_interval_hours in the API. A new alert is sent earlier when usage dropped at least 5 points below the threshold and rises again.SSH_COMMAND_TIMEOUT=0 or an invalid value no longer removes the time limit of remote commands. The default of 3600 seconds is used instead.Host headerPUT /user/profile-information route, which changed the account email without verificationdocker run -e values (#11917)deploy permission for mounts outside it (#11911, #11943, #11944, #11993)read:sensitive permission for the log endpoints and scheduled task output in the APIread:sensitive permissiondeploy permission for instant_deploy in the API and accept only known API token permissions (#11969, #11981)league/commonmark to 2.10.3, which fixes GHSA-8rr7-cvq3-gmfhcustom_internal_name turns consistent naming on, and sending it with is_consistent_container_name_enabled: false returns 422.web-shop-api instead of web-<uuid>.kill -9 on the server with a process ID from the Coolify container./data/coolify.--format templates, are no longer rewritten with sudo.--restart unless-stopped, so Docker restarts it after a crash or reboot.php artisan scheduled:diagnostics no longer changes scheduler state.server.crt and server.key for PostgreSQL, MySQL, MariaDB, Redis, KeyDB, and Dragonfly instead of server.pem, so these databases start again, and the CA file on the server matches the CA that signed the certificate..gz archives instead of piping them into the client, and dump-all MySQL restores emit valid shell environment variables. (#11699)409 in the API). Long imports are no longer cut off by the 10-minute task timeout.external are used as declared instead of being renamed to <uuid>_<name>. Existing resources keep their old volume, the deployment log explains how to switch, and the storage page lists external volumes. Preview deployments keep their own volume.driver, driver_opts, and labels when Coolify renames them (volumes created before the upgrade keep their settings), NFS and CIFS volumes are no longer dropped from a service that has other volumes, and ../ bind sources resolve to the parent directory.GET /applications/{uuid}/logs respects service_name and returns 404 when no running container matches. (#12066)POST /deploy with pull_request_id builds the pull request instead of the base branch for deploy key and public repository applications.422 for invalid input), accept numeric resource limits, and read instant_deploy as a boolean.GET /servers/{uuid}/domains?uuid=<application uuid> filters by application instead of returning 404.PATCH /security/keys/{uuid} instead of PATCH /security/keys.HEAD.docker.io/grafana/grafana. (#10617)& instead of &.git:// repository URL no longer crash when showing commit links./data/coolify, and it waits for the Docker daemon on OpenRC.DELETE../data instead of ./media. (#8791)LISTEN and HUB_URL. (#11647)VIKUNJA_SERVICE_SECRET. (#10331)affine.budibase/database image. (#9828)denoKV to deno-kv, and the old key still works in the API and for existing services.BASE_URL no longer includes the port, which caused CSP errors. (#11682)wget.Show Livewire component and view. (#11615)DuskServiceProvider, and the laravel/dusk dependency. Browser tests use the Pest browser plugin.laravel/nightwatch dependency, the Nightwatch agent service in the Coolify container, and the NIGHTWATCH_ENABLED setting.PROXY_CONNECT_NETWORKS_INTERVAL_SECONDS setting.TrustHosts middleware, which never checked the host.
New uNmINeD development snapshot is available for download!
Changes:
Notes:
Setting up isometric mode:
If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.
MaskedEmail with emailDomain fails with forbidden for every domain when the account has addresses on more than one domain.mobilesync), are answered with the Outlook settings instead of error 601.LOGIN and AUTHENTICATE with a wrong, expired or unknown app password or API key are answered with an untagged NO, so clients keep waiting for the command to complete until the connection times out.NO before the connection is closed.DkimManagement task is created for them.PYZOR.match expression are never enforced, including the global queue quota created on first start.LOG, LOG.old.*) grows without limit because log rotation and retention are left at RocksDB defaults.
Full Changelog: v5.0.6...v5.0.7
Security:
Security:
OnClientValidatePassword, or error text and UIDs sent by remote servers) could break out of their string. With either script language, a rule's "Run function" name could carry code. This would allow an attacker to run arbitrary code in the hMailServer process. Values are now escaped, and rule function names may only contain letters, digits and underscores.If you are unable to install this version, disable JScript execution and do not give end-users access to the hMailServer COM API.
Archived hMailServer builds, from 4.1.1 to 5.6.9 build 2607. These versions are no longer supported and are kept for reference only. Use the latest release for new installations.
If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.
TLSA records are looked up for every MX host, including hosts whose zone is not DNSSEC signed.PushSubscription created within the verification rate limit window of another one on the same account never receives its PushVerification, since the blocked verification is dropped instead of being sent once the window expires.aud claim is derived from a hand-written parse of the push URL, so a crafted push URL can make the server sign a token for a push service other than the one the request is sent to.Email/import rejects a blobId that refers to a Blob/upload creation id in the same request ("#u0") with Invalid blob id..Email/set with a full mailboxIds object identical to the current mailboxes, together with a keyword change, stores the message with IMAP UID 0, so IMAP clients stop seeing it.outboundMta role stops replying to DATA and to JMAP submissions once about 1024 messages have been queued on it.DATA stage Sieve script does not see headers added by milters or MTA hooks, and discards every milter and MTA hook change when it edits the message.DELETE and switch to chunks only after a timeout.COPY and MOVE fail with NO [CONTACTADMIN] when another session changes the same message at the same time.<Encryption>TLS</Encryption>, which Outlook reads as STARTTLS.