Releases
3.0.0
Compare
Sorry, something went wrong.
No results found
3.0.0 (2025-12-01)
Features
add "postal:update" task (b35eea6 )
add health server and prometheus metrics to worker (a2eb70e )
add helm env var config exporter (8938988 )
add option to delay starting processes until all migrations are run (1c5ff5a )
add prometheus metrics to smtp server (2e7b36c )
add prometheus metrics to worker (bea7450 )
add sha256 signatures to outgoing http requests (#2874 ) (96d7365 )
automatically remove queued messages with stale locks (#2872 ) (d84152e )
configurable trusted proxies for web requests (3785c99 )
include list-unsubscribe-post header in dkim signatures (e1bae60 ), closes #2789 #2788
load signing key path from POSTAL_SIGNING_KEY_PATH (4a46f69 )
more consistent logging (044058d )
new background work process (dc8e895 )
new configuration system (and schema) (#2819 ) (0163ac3 )
only accept RFC-compliant End-of-DATA sequence (0140dc4 )
openid connect support (#2873 ) (5ed94f6 )
privacy mode (15f9671 )
prometheus: add postal_message_queue_latency metric (ee8d829 )
remove strip_received_headers config option (ed2e62b )
support for additional SMTP client options (0daa667 )
support for configuring postal with environment variables (854aa5e )
worker: allow number of threads to be configured (7e2accc )
worker: scale connection pool with worker threads (ea542a0 )
Bug Fixes
add ruby platform to gemfile (1fceef7 )
adds new connection pool which will discard failed clients (54306a9 ), closes #2780
default to listening on all addresses when using legacy config (48f6494 )
don't override paths in dockerfile (9399e32 )
don't use authentication on org & server deletion (be45652 )
don't use indifferent access for job params (2bad645 ), closes #2477 #2714 #2476 #2500
duplicate string before modifying it to prevent frozen string errors (f0a8aca )
ensure encoding is set for message db (ae30cc7 )
explicitly disable TLS & starttls for unknown SSL modes (42ab5b3 ), closes #2564
extract x-postal-tag before holding (6b2bf90 ), closes #2684
fix postal version command (4fa88ac )
fix bug in smtp server when exceptions occur (9dd00f6 )
fix bug with received header in SMTP server (ba5bfbd )
fix issue running message pruning task (3a33e53 )
fix issue with sending mail when smtp relays are configured (6dd6e29 )
fix smtp TLS (defb511 )
fixed typo (rfc number) (2f62baa )
fixes postal default-dkim-record (58dddeb )
fixes error messages in web ui (71f51db )
fixes issue starting application in production mode (4528a14 )
fixes issue with SMTP sender with address endpoints (2621a19 )
fixes potential issue if machine hostname cannot be determined (0fcf778 )
fixes typo in on track domains page (77bd77b )
health_server: use rackup handler instead of rack handler (7c47422 )
ignore message DB migrations in autoloader (3fb40e4 )
legacy-api: allow _expansions to be provided as true to return all expansions (39f704c ), closes #2932
mail view encoding issue #2462 (#2596 ) (59f4478 )
match IPv4 mapped IPv6 addresses when searching for SMTP-IP credentials (8b525d0 )
message-dequeuer: ability to disable batching (4fcb9e9 )
message-dequeuer: ensure SMTP endpoints are sent to SMTP sender appropriately (e2d642c ), closes #2853
move tracking middleware before host authorization (49cceaa ), closes #2415
oidc scopes are invalid when concatenated (#3332 ) (9c5f96a )
raise an error if MX lookup times out during sending (fadca88 ), closes #2833
raise NotImplementedError when no call method on a scheduled task (2b0919c )
re-add reconnect: true to database (7bc5230 )
remove support for setting the 'ssl' option for app-level smtp use (658aa71 )
remove user email verification (e05f0b3 )
retry mysql connections on message DB pool (f9f7fb3 )
set correct component in health server log lines (a7a9a18 )
smtp-sender: ensure relays without a host are excluded (3a56ec8 )
smtp-sender: fixes SMTPSender.smtp_relays (b3264b9 )
smtp-server: add additional information to cram-md5 log entries (9982bb8 )
smtp-server: fixes proxy protocol (9240612 )
smtp-server: listen on all interfaces by default (d1e5b68 ), closes #2852
smtp-server: remove ::ffff: from the start of ipv4 addresses (0dc7359 )
smtp-server: reset ansi sequence after logging (9bf6152 )
translate unicode domain names to Punycode for compatibility with DNS (#2823 ) (be0df7b )
truncate output and details in deliveries to 250 characters (694240d ), closes #2831
typo in process logging (#3212 ) (b7e5232 )
typo in the credentials page (fd3c7cc )
ui: fixes typo on queue page (33513a7 )
unescape in URLs which are stored for tracking (1da1182 ), closes #2568 #907 #115
update raw headers after changing messages to during parsing (2834e2c ), closes #2816
update url for v2 config (#3225 ) (e00098b )
update wording about tracking domain cnames (0d3eccb ), closes #2808
upgrade nokogiri (f05c2e4 )
use correct method for disconnecting smtp connections (7c23994 )
use local resolver for DNS tests (github actions blocks DNS seemingly) (a4d039c )
use utc timestamps when determining raw table names (ce19bf7 )
web-server: allow for trusted proxies not be set (4e1deb2 )
Documentation
add message_db.encoding to config docs (0c1f925 )
add new repo readme welcome image (afa1726 )
add quick contributing instructions (8d21adc )
process.rb: add help about time unit used by metric (#3339 ) (f5325c4 )
update docs for how IP address allocation works (07eb152 ), closes #2209
update readme (df096ab )
update SECURITY policy (cfc1c9b )
Styles
rubocop: disable complexity cops for now (930cf39 )
rubocop: disable Style/SpecialGlobalVars (be97f43 )
rubocop: disable Style/StringConcatenation cop (d508772 )
rubocop: Layout/* (0e0aca0 )
rubocop: Layout/EmptyLineAfterMagicComment (0e4ed5c )
rubocop: Layout/EmptyLines (0cf35a8 )
rubocop: Layout/EmptyLinesAroundBlockBody (cfd8d63 )
rubocop: Layout/LeadingCommentSpace (59f299b )
rubocop: Layout/LineLength (e142d0d )
rubocop: Layout/MultilineMethodCallBraceLayout (a5d5ba5 )
rubocop: Lint/DuplicateBranch (a1dc0f7 )
rubocop: Lint/DuplicateMethods (bab6346 )
rubocop: Lint/IneffectiveAccessModifier (6ad56ee )
rubocop: Lint/MissingSuper (4674e63 )
rubocop: Lint/RedundantStringCoercion (12a5ef3 )
rubocop: Lint/ShadowedException (0966b44 )
rubocop: Lint/ShadowingOuterLocalVariable (7119e86 )
rubocop: Lint/SuppressedException (278ef08 )
rubocop: Lint/UnderscorePrefixedVariableName (ec7dcf4 )
rubocop: Lint/UnusedBlockArgument (ee94e4e )
rubocop: Lint/UselessAssignment (7590a46 )
rubocop: Naming/FileName (919a601 )
rubocop: Naming/MemoizedInstanceVariableName (9563f30 )
rubocop: relax method length and block nexting for now (b0ac9ef )
rubocop: remaining offences (ec63666 )
rubocop: Security/YAMLLoad (389ea77 )
rubocop: Style/AndOr (b9f3f31 )
rubocop: Style/ClassAndModuleChildren (e896f46 )
rubocop: Style/For (04a3483 )
rubocop: Style/FrozenStringLiteralComment (6ab36c0 )
rubocop: Style/GlobalStdStream (75be690 )
rubocop: Style/GlobalVars (157d114 )
rubocop: Style/HashEachMethods (c995027 )
rubocop: Style/HashExcept (83ac764 )
rubocop: Style/IdenticalConditionalBranches (6a58ecf )
rubocop: Style/MissingRespondToMissing (ffcb707 )
rubocop: Style/MultilineBlockChain (c6326a6 )
rubocop: Style/MutableConstant (129dffa )
rubocop: Style/NumericPredicate (c558f1c )
rubocop: Style/PreferredHashMethods (013b3ea )
rubocop: Style/SafeNavigation (00a02f2 )
rubocop: Style/SelectByRegexp (9ce28a4 )
rubocop: Style/StringLiterals (b4cc812 )
rubocop: Style/TrailingCommaInArrayLiteral (4e13577 )
rubocop: Style/WordArray (bd85920 )
rubocop: update rubocop rules (6d4dea7 )
rubocop: use _ when not using a variable in helm config exporter (2c20ba6 )
Miscellaneous Chores
add annotations to factories and models specs (ed6da11 )
add arm64 platform (de88201 )
add binstubs for bundle and rspec (41f6cf4 )
add script for generating smtp TLS certificates (6eb16c3 )
add script to send html emails to a local SMTP server (8794a2f )
allow config location message to be suppressed (f760cdb )
annotate models (6214892 )
build: fixes docker login action credentials (8810856 )
build: improve build process, add release please (#2414 ) (5222263 )
config-docs: update docs for latest oidc defaults (364eba6 )
config-docs: update proxy protocol to mention v1 (45dd8aa )
consolidate platforms in Gemfile (7963c8a )
container: add the branch name to the container (bee5098 )
deps: upgrade puma, net-imap and other deps (c03c44b )
dockerfile: reduce container size (86de372 )
gha: upgrade github checkout action, don't create arm images for CI, add qemu (a9ade3c )
github-actions: add 'docs' label to exclude from staleness checks (57b72fb )
github-actions: add action to close stale issues and PRs (d90a456 )
github-actions: allow stale action to be run on demand (559b08d )
github-actions: don't generate commit- tags (d65bbe0 )
github-actions: don't run for dependabot or release-please PRs and fetch whole repo (adaf2b0 )
github-actions: include a version string on branch-*/latest images (64bc7dc )
hide further config messages (1c67f72 )
main: release 2.1.5 (#2461 ) (64cab2e )
main: release 2.1.6 (#2765 ) (26aae29 )
main: release 2.2.0 (#2766 ) (ff901e9 )
main: release 2.2.1 (#2773 ) (304828a )
main: release 2.2.2 (#2783 ) (19e3bc2 )
main: release 2.3.0 (b8bab1b )
main: release 2.3.1 (#2812 ) (18ba714 )
main: release 2.3.2 (343292b )
main: release 3.0.0 (7030fd5 )
main: release 3.0.1 (7fd538d )
main: release 3.0.2 (93cbe31 )
main: release 3.1.0 (4acfffd )
main: release 3.1.1 (#2859 ) (4c27bae )
main: release 3.2.0 (#2867 ) (8e71dd0 )
main: release 3.2.1 (#2877 ) (144af20 )
main: release 3.2.2 (#2878 ) (6a1ff56 )
main: release 3.3.0 (#2887 ) (eded789 )
main: release 3.3.1 (#2890 ) (a3fab36 )
main: release 3.3.2 (#2892 ) (c12f30e )
main: release 3.3.3 (#2933 ) (d510499 )
main: release 3.3.4 (#3014 ) (da90e75 )
reduce threads for bundling in docker (5b022b9 )
regenerate config docs (5d8213a )
release 3.0.0 (47b203c )
remove -j4 from bundle install as it shouldn't be needed (0b468f9 )
remove non-breaking spaces from comments (27b7ced )
remove old example messages (9db781c ), closes #2635 #2627
remove version from docker-compose.yml (c78000c )
removing arm64 support until we can get a reasonable build pipeline sorted (e8e44f5 )
silence message DB migrations during provisioning (c83601a )
suppress config location on default-dkim-record (aa76aae )
ui: display branch in footer if present (1823617 )
update CHANGELOG about v3 (fd33e21 )
update MIT-LICENCE (dbd0e27 )
update release please to include more categories in changelog (e156c21 )
upgrade bundler to 2.5.6 (1ae8ef6 )
upgrade puma (3f1343b )
upgrade rails to 6.1.7.6 (409a4a2 )
upgrade rails to 7.0 and other dependencies (ecd09a2 )
upgrade resolv to 0.6.2 (d00d978 )
upgrade ruby to 3.2.2 and nodejs to 20.x (72715fe )
upgrade to rails 7.1 and ruby 3.4 (#3457 ) (ab6d443 )
upgrade uri gem to 1.0.3 (f193b8e )
Code Refactoring
be less verbose with message DB migrations (90d3a3f )
change domain used for dns resolver testing (87d35d7 )
move app/util/* to app/lib/ (eb246bb )
move lib/postal/received_header to app/lib/received_header (e3bc9da )
move lib/postal/reply_separator to app/lib/reply_separator (5cc9eb3 )
move lib/postal/smtp_server to app/lib/smtp_server (321ab95 )
move lib/postal/user_creator to app/util/user_creator (64b2704 )
move Postal::BounceMessage to app/models/bounce_message (05d2ec4 )
move Postal::DKIMHeader to app/util/dkim_header (77faf88 )
move Postal::QueryString to app/util/query_string (870b26c )
move senders in to app/senders/ (73a55a5 )
move tracking middleware (b8ad732 )
move worker from lib/worker to app/lib/worker (93fc120 )
refactor DNS resolution (1a41586 )
refactor log use within SMTP server (cae4b63 ), closes #2794 #2791
refactor the SMTP sender (633c509 )
refactor webhook deliveries (e0403ba )
refactors message dequeueing (#2810 ) (a44e1f9 )
remove explicit autoload (0f9882f )
remove moonrope but maintain legacy API actions (#2889 ) (4d9654d )
remove Postal::Job.perform method (990b575 )
remove Postal.database_url (96ba4b8 )
remove reloading on the smtp server (c3c304e )
remove token logins (b89e0a9 )
remove unnecessary modules (38465de )
remove unused UserController#join method (1ca18db )
switch to use SecureRandom for random strings (ce30c07 )
versioning: improve how current version and branch is determined and set (07c6b31 )
Tests
add initial tests for Postal::SMTPServer::Client (dece1d4 )
add smtp sender test for MX lookup timeouts (e4638a0 )
add test for multiline headers (77e818a )
add tests for DNSResolver (8765d8e )
add tests for message unqueueing (b4016f6 )
add tests for Server model (2023200 )
add tests for the legacy API (3d208d6 )
additional tests for batched messages when unqueueing messages (8b61100 )
FactoryBot.lint will lint all registered factories (25d7d66 )
fix test that was failing due to time differences (465f4d8 )
move Postal::RpecHelpers to spec/helpers (ee86311 )
move TestLogger to spec/helpers (3bbbc70 )
remove FACTORIES_EXCLUDED_FROM_LINT (1cf665a )
rename database spec file (b9edcf5 )
smtp-sender: add more tests for AUTH LOGIN (22dcd49 )
Continuous Integration
require tests to pass before building latest package (1cc350b )
use dynamic repository path for container registry (e1c40e3 )
You can鈥檛 perform that action at this time.