Repository navigation
v3.0.0
·
83 commits
to a682a0621828bbc697d0a7f89f3755f10eda7365
since this release
3.0.0 (2025-06-17)
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_latencymetric (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 versioncommand (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)
- 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 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 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)
- 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)
- 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)
- main: release 3.3.5 (5df480a)
- 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
- 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 ruby to 3.2.2 and nodejs to 20.x (72715fe)
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)