Notable changes to Mailpit will be documented in this file.
- Update caniemail database
- Update node dependencies
- Update Go dependencies
- Make symlink detection more specific to contain "sendmail" in the name (#391)
- Fix external CSS stylesheet loading in HTML preview (#388)
- Update Go dependencies
- Minor UI tweaks
- Mute Dart Sass deprecation notices
- Update node dependencies
- Upgrade Alpine packages on Docker build
- Add swagger examples & API code restructure
- Add additional ignored flags to sendmail (#384)
- Remove legacy Tags column from message DB table
- Update Go dependencies
- Update node dependencies
- Fix browser notification request on Edge (#89)
- Add ability to search by size smaller or larger than a value (eg:
larger:1M
/smaller:2.5M
) - Add ability to search for messages containing inline images (
has:inline
)
- Update Go dependencies
- Separate attachments and inline images in download nav and badges (#379)
- Experimental Unix socket support for HTTPD & SMTPD (#373)
- Allow multiple item selection on macOS with Cmd-click (#378)
- Update caniemail database
- SQL error deleting a tag while using tenant-id (#374)
- Add tenantIDs to tests
- Bump Go compile version to 1.23
- Update node modules
- Update swagger file tests
- Code cleanup
- Update Go dependencies
- Update minimum Go version (1.22.0)
- Update node dependencies
- Update node modules
- Use consistent margins for Mailpit label if set
- Improve tag detection in UI
- Improve link detection in the HTML preview
- Use correct parameter order in SpamAssassin socket detection (#364)
- Update Go modules
- Update node modules
- Upgrade vue-css-donut-chart & related charts
- Relax URL detection in link check tool (#357)
- Update caniemail database
- Update node dependencies
- Update Go dependencies
- Do not recenter selected messages in sidebar on every new message
- Disable automatic HTML/Text character detection when charset is provided (#348)
- Web UI notifications of smtpd & POP3 errors (#347)
- Update Go dependencies
- Update node dependencies
- Add debug database storage logging
- Add smtpd server logging in the CLI (#347)
- Shift inbox pagination to inbox component
- Live load up to 100 new messages in sidebar (#336)
- Show icon attachment in new side navigation message listing (#345)
- Correctly decode X-Tags message headers (RFC 2047) (#344)
- Add option to control message retention by age (#338)
- UI: List messages in side nav when viewing message for easy navigation (#336)
- Update caniemail database
- Update Go dependencies
- Update node dependencies
- Make internal tagging methods private
- Prevent potential JavaScript errors caused by race condition
- Better regexp to detect tags in search
- Prevent Vue race condition to initialize dayjs relativeTime plugin
- API: Return
text/plain
header for message delete request
- Update Go dependencies
- Display nicer noscript message when JavaScript is disabled
- Security: Prevent bypass of Contend Security Policy using stored XSS, and sanitize preview HTML data (DOMPurify)
- Update Go dependencies
- Update Inbox "Delete All" count when new messages are detected (#334)
- Add optional relay recipient blocklist (#333)
- Update Go dependencies
- Equal column widths in About modal
- Bump esbuild to version 0.23.0
- Bump esbuild from 0.21.5 to 0.22.0 (#326)
- Bump docker/build-push-action from 5 to 6 (#327)
- Add ability to rename and delete tags globally
- Add option to disable auto-tagging for plus-addresses & X-Tags (#323)
- Update node dependencies
- Update Go dependencies
- Add optional label to identify Mailpit instance (#316)
- Refactor JavaScript, use arrow functions instead of "self" aliasing
- Handle websocket errors caused by persistent connection failures (#319)
- Add POP3 integration tests
- Update caniemail database
- Update node dependencies
- Update Go dependencies
- Delete multiple POP3 messages in single action
- Handle POP3 RSET command
- Add pagination & limits to URL parameters (#303)
- Update node dependencies
- Update Go dependencies
- Update node dependencies
- Update Go dependencies
- Clone new Docker images to ghcr.io (#302)
- iCalendar (ICS) viewer (#298)
- Update Go dependencies
- Update node dependencies
- Add dot stuffing for POP3 (#300)
- Update node dependencies
- Replace invalid Windows username characters in sendmail (#294)
- Return queued Message ID in SMTP response (#293)
- Update node dependencies
- Update Go dependencies
- Simplify JSON HTTP responses
- API endpoint for sending (#278)
- Set tagging filters via a config file
- Search filter support for auto-tagging
- New search filter prefix
addressed:
includes From, To, Cc, Bcc & Reply-To
- Update node dependencies
- Update Go dependencies
- Update go-release-action
- JSON key case-consistency for posted API data (backwards-compatible)
- Remove function duplication - use common tools.InArray()
- Improve tag sorting in web UI, ignore casing
- Replace moment JS library with dayjs
- Auto-update relative received message times
- Update node dependencies
- Update Go dependencies
- Clearer error messages for read/write permission failures (#281)
- Prevent error when two identical tags are added at the exact same time (#283)
- Option to auto relay for matching recipient expression only (#274)
- Add UI settings screen
- Update caniemail database
- Update node dependencies
- Update Go dependencies
- Auto-rotate thumbnail images based on exif data
- Replace disintegration/imaging with kovidgoyal/imaging to fix CVE-2023-36308
- Update API documentation regarding date/time searches & timezones
- Move Link check & HTML check features out of beta
- Remove deprecated --disable-html-check option
- Add delay to close database on fatal exit (#280)
- Search support for before: and after: dates (#252)
- Add optional tenant ID to isolate data in shared databases (#254)
- Option to use rqlite database storage (#254)
- Update caniemail test database
- Update node dependencies
- Update Go dependencies
- Switch database flag/env to
--database
/MP_DATABASE
- Remove duplicated authentication check (#276)
- Prevent conditional JS error when global mailbox tag list is modified via auto/plus-address tagging while viewing a message
- Extract plus addresses from email addresses only, not names
- Add readyz subcommand for Docker healthcheck (#270)
- Code cleanup, remove redundant functionality
- Add labels to Docker image (#267)
- Add SMTP TLS option (#265)
- Update node dependencies
- Update Go dependencies
- Enforce SMTP STARTTLS by default if authentication is set
- Allow setting SMTP relay configuration values via environment variables (#262)
- Update caniemail test data
- Reorder CLI flags to group by related functionality
- Update node dependencies
- Update Go dependencies
- Prevent crash when calculating deleted space percentage (divide by zero)
- Allow setting of multiple message tags via plus addresses (#253)
- Prevent runtime error when calculating total messages size of empty table (#263)
- Option to enforce TitleCasing for all newly created tags
- Set message tags using plus addressing (#253)
- Tag names now allow
.
and must be a minimum of 1 character - Update node dependencies
- Update Go dependencies
- Handle null values in Mailpit settings, set DeletedSize=0 if null
- Optional POP3 server (#249)
- Update node dependencies
- Update Go dependencies
- Refactor storage library
- Security improvements (gosec)
- Switch to short uuid format for database IDs
- Better handling of automatic database compression (vacuuming) after deleting messages
- Add edge Docker images for latest unreleased features
- Add reply-to: search filter (#247)
- Update node dependencies
- Update Go dependencies
- Compress database only when >= 1% of total message size has been deleted
- Update "About" modal layout when new version is available
- Include Reply-To information in message summaries for message list & websocket events
- Add option to log output to file (#246)
- Update caniemail data
- Update node modules
- Update Go modules
- Bump actions build requirement versions
- Update esbuild
- Add TLSRequired option for smtpd (#241)
- Update node dependencies
- Update Go dependencies
- Only show number of messages ignored statistics if
--ignore-duplicate-ids
is set
- Workaround for specific field searches containing unicode characters (#239)
- Add option to disable SMTP reverse DNS (rDNS) lookup (#230)
- Display List-Unsubscribe & List-Unsubscribe-Post header info with syntax validation (#236)
- Add optional SpamAssassin integration to display scores (#233)
- Compress compiled assets with
npm run build
- Update Go modules
- Update node modules
- Display multiple whitespace characters in message subject & recipient names (#238)
- Sendmail support for
-f 'Name <email[@example](https://github.com/example).com>'
format
- Add option to only allow SMTP recipients matching a regular expression (disable open-relay behaviour #219)
- Significantly increase database performance using WAL (Write-Ahead-Log)
- Standardize error logging & formatting
- Automatically refresh connected browsers if Mailpit is upgraded (version change)
- Update node modules
- Log total deleted messages when auto-pruning messages (--max)
- Prevent rare error from websocket connection (unexpected non-whitespace character)
- Log total deleted messages when deleting all messages from search
- Run tests on Linux, Windows & Mac
- Include runtime statistics in API (info) & UI (About)
- Use memory pointer for internal message parsing & storage
- Update caniemail test data
- Convert to many-to-many message tag relationships
- Standardize error logging & formatting
- Refresh search results when search resubmitted or active tag filter clicked
- Update node modules
- Update Go modules
- Allow multiple tags to be searched using Ctrl-click (#216)
- Update node modules
- Update Go modules
- Fix regression to support for search query params to all
/latest
endpoints (#206)
- Add new
ingest
subcommand to import an email file or maildir folder over SMTP
- Add configuration option to set maximum SMTP recipients (#205)
- Allow ID "latest" for message summary, headers, raw version & HTML/link checks
- Update node modules
- Update Go modules
- Remove JS debug information for favicon
- Add @ as valid character for webroot (#215)
- Update caniemail library & add
hr
element test
- Update node modules
- Update Go modules
- New favicon notification badge to fix rendering issues (#210)
- Allow port binding using hostname
- Add favicon fallback font (sans-serif) for unread count
- Clearer log messages for bound SMTP & HTTP addresses
- Enable tag colors by default
- Update node modules
- Update Go modules
- Use NextReader() instead of ReadMessage() for websocket reading (#207)
- Update node modules
- Update Go modules
- Prevent JavaScript error if message is missing
From
header (#209)
- Revert BinaryResponse type to string
- Support search query params to /latest endpoints (#206)
- Option to allow untrusted HTTPS certificates for screenshots & link checking (#204)
- Add URL redirect (
/view/latest
) to view latest message in web UI (#166)
- Update node modules
- Update Go modules
- Correctly close websockets on client disconnect (#207)
- Fix column width in search view
- Update node modules
- Update Go modules
- Update caniemail test data
- Correctly display "About" modal when update check fails (resolves #199)
- Update documentation links
- Move html2text module to internal/html2text
- update node modules
- Update Go modules
- Replace satori/go.uuid with github.com/google/uuid (#190)
- Replace html2text modules with simplified internal function
- Update node modules
- Update Go modules
- Update swagger documentation
- Add test to validate swagger.json
- Add html2text tests
- Update node modules
- Downgrade microcosm-cc/bluemonday, revert to Go 1.20
- Update Go modules & minimum Go version (1.21)
- Enable delete button when new messages arrive
- Display message previews on separate line (#175)
- Update node modules
- Update Go modules
- Add
reindex
subcommand to reindex all messages - Display email previews (#175)
- HTML message preview background color when switching themes in Chrome
- Correctly detect tags in search (UI)
- Add message summary tests
- Add snippet tests
- Set auth credentials directly from environment variables
- Remove some flags deprecated 08/2022
- Add option to delete a message after release
- Update node modules
- Update Go modules
- Update internal/storage import paths
- Move storage package to internal/storage
- Update internal import paths
- Move utils/* packages to internal/*
- Do not show excluded search tags as "current" in nav
- Display "Loading messages" instead of "No results" while loading results
- Only queue broadcast events if clients are connected
- Add endpoints for integration tests
- Add more API tests
- Add tests for ArgsParser & CleanTag
- Reset pagination when returning to inbox from search
- Update node modules
- Delete all messages matching search when more than 1000 results
- Add message tag tests
- Add search delete tests
- Update caniemail data
- Set 404 page when loading a non-existent message
- Link email addresses in message summary to search
- Better support for mobile screen sizes
- Update Go modules
- Improved search parser
- New search filter
[!]is:tagged
- Rewrite web UI, add URL routing and components
- Remove redundant
Read
status from message (always true) - Delete by search filter
- Add endpoint to return all tags in use
- Update minimum Go version to 1.20
- Update Go modules
- Update node modules
- Correctly escape certain characters in search (eg:
'
)
- Bump Go version to 1.21
- Correctly decode proxy links containing HTML entities (screenshots)
- HTML screenshots
- Group message tabs on mobile
- Update node modules
- Link check to test message links
- Workaround for non-RFC-compliant message headers containing
- Set hostname in page meta title to identify Mailpit instance
- Update Go libs
- Update wangyoucao577/go-release-action@v1.39
- Update node modules
- Update Go modules
- Check/set message Reply-To using SMTP FROM
- Exclude "sendmail" from recipients list when using
mailpit sendmail <options>
- Exclude <script type="application/json"> from HTML check tests
- Add pagination to swagger search documentation
- HTML check to test & score mail client compatibility with HTML emails
- Add flag to block all access to remote CSS and fonts (CSP)
- Remove
<base />
tag if set in HTML preview - Pagination support for search, all results
- Update node modules
- Update Go modules
- Add basePath to swagger.json if webroot is specified
- Update brew installation instructions
- Update swagger docs
- Wrap HTML source lines
- Dark mode color adjustments
- Update dark mode loading background color
- Update Go modules
- Update node modules
- Theme toggler - auto, light and dark themes
- Ignore SMTP relay error when one of multiple recipients doesn't exist
- Set raw message Content-Type to UTF-8
- Update node modules
- Update Go modules
- Define Vue build options in esbuild
- Clearer SMTP error messages
- Update Go modules
- Upgrade node modules
- More accurate clickable hyperlink logic in plain text messages
- Convert links into clickable hyperlinks in plain text message content
- Update node modules
- Only display sendmail help when sendmail subcommand is invoked
- Add option to enable tag colors based on tag name hash
- Display message tags below subject in message overview
- Sort tags before saving
- Add single dash arguments support to sendmail command (#123)
- Fix sendmail/startup panic
- Add
sendmail -bs
functionality
- Add ability to delete or mark search results read
- Set tags via X-Tags message header
- Update node modules
- Add SMTP LOGIN authentication method for message relay
- Add Message-Id to MessageSummary (#116)
- Update swagger field descriptions, add MessageID
- Check for secure context instead of HTTPS (#114)
- Update node modules
- Update Go modules
- Remove "Noto Color Emoji" from default bootstrap font list
- Update node modules
- Update Go modules
- Return blank 200 response for OPTIONS requests (CORS)
- Update node modules
- Update Go modules
- Correctly escape JS cid regex
- Add allowlist to filter recipients before relaying messages (#109)
- Add
-S
short flag for sendmail--smtp-addr
- Fix Date display when message doesn't contain a Date header
- Fix auto-deletion cron
- Option to ignore duplicate Message-IDs
- Style Undisclosed recipients in message view
- Set Access-Control-Allow-Headers when --api-cors is set
- Include correct start value in search reponse
- Update node modules
- Update Go modules
- Update swagger field descriptions
- Add Access-Control-Allow-Methods methods when CORS origin is set
- Fix UI images not displaying when multiple cid names overlap
- Display clickable toast notifications for new messages
- If set use return-path address as SMTP from address
- Add API release route again (bad merge)
- Inject/update Bcc header for missing addresses when SMTP recipients do not match messsage headers
- Display Return-Path if different to the From address
- Message release functionality
- Enable cross-origin resource sharing (CORS) configuration
- Message relay / release
- Include Return-Path in message summary data
- Update Go modules
- Update node modules
- Update listen regex to allow IPv6 addresses (#85)
- Add Docker image tag for major/minor version
- Mobile and tablet HTML preview toggle in desktop mode
- Enable SMTP auth flags to be set via env
- Tab to view formatted message headers
- Include Reply-To in message summary (including Web UI)
- Add 'o', 'b' & 's' ignored flags for sendmail
- Update Go modules
- Update node modules
- OpenAPI / Swagger schema
- Download raw message, HTML/text body parts or attachments via single button
- Rename SSL to TLS, add deprecation warnings to flags & ENV variables referring to SSL
- Options to support auth without STARTTLS, and accept any login
- Option to use message dates as received dates (new messages only)
- Return received datetime when message does not contain a date header
- Fix JavaScript error when adding the first tag manually
- Rename SSL to TLS, add deprecation warnings to flags & ENV variables referring to SSL
- Options to support auth without STARTTLS, and accept any login
- Option to use message dates as received dates (new messages only)
- Return received datetime when message does not contain a date header
- Expand custom webroot path to include a-z A-Z 0-9 _ . - and /
- Expose default ports (1025/tcp 8025/tcp)
- Update node modules
- Fix search with existing emails
- Add Cc and Bcc search filters
- Update node modules
- Update Go modules
- Merge pull request #44 from axllent/dependabot/github_actions/wangyoucao577/go-release-action-1.36
- Merge pull request #43 from axllent/dependabot/github_actions/docker/build-push-action-4
- Merge pull request #55 from axllent/dependabot/go_modules/golang.org/x/image-0.5.0
- Merge pull request #42 from shizunge/dependabot
- Compress SVG icons
- Restore notification icon
- Add Kubernetes API health (livez/readyz) endpoints
- Upgrade to esbuild 0.17.5
- Update node modules
- Update go modules
- Correctly index missing 'From' header in database
- Include HTML link text in search data
- Allow tags to be set from MP_TAG environment
- Allow tags to be set from MP_TAG environment
- Temporarily disable arm (32) Docker build
- Rename "results" to "result" when singular message returned
- Upgrade esbuild & axios
- Append trailing slash to custom webroot for UI & API
- Update go modules
- Update node modules
- Remove duplicate bootstrap CSS
- Delay 200ms to set
target="_blank"
for all rendered email links
- Message tags and auto-tagging
- Return empty arrays rather than null for message To, CC, BCC, Inlines & Attachments
- Allow custom webroot
- Provide structs of API v1 responses for use in client code
- Update go modules
- Update node modules
- Broadcast "delete all" action to reload all connected clients
- Load first page if paginated list returns 0 results
- Theme changes
- Bump build action to use node 18
- Fix mail download link
- Prevent double message index request on websocket connect
- Add limit and start parameters to search
- Add API endpoint to return message headers
- Update go modules
- Add API test for raw & message headers
- Update frontend modules
- Add about app modal with version update notification
- Add REST API
- Changes to use new data API
- Hide delete all / mark all read in message view
- Add API tests
- Normalize running binary name detection (Windows)
- Add documentation link (wiki)
- Workaround for Safari source matching bug blocking event listener
- Support for inline images using filenames instead of cid
- Switch to esbuild-sass-plugin
- Add --quiet flag to display only errors
- Minor UI color change & unread count position adjustment
- Add favicon unread message counter
- Remove left & right borders (message list)
- Add restrictive HTTP Content-Security-Policy
- Update message download link
- Allow reverse proxy subdirectories
- Attachment icons and image thumbnails
- HTML source & highlighting
- Add previous/next message links
- Multiple message selection for group actions using shift/ctrl click
- Search parser improvements
- Search parser improvements
- Post data using 'application/json'
- Display unknown recipients as as
Undisclosed recipients
- Update frontend modules & esbuild
- Update frontend modules & esbuild
This release includes a major backend storage change (SQLite) that will render any previously-saved messages useless. Please delete old data to free up space. For more information see #10
- Switch backend storage to use SQLite
- Resize preview iframe on load
- Improved message search - any order & phrase quoting
- Change breakpoints for mobile view of messages
- Resize iframes with viewport resize
- Email compression in storage
- Mobile compatibility improvements & functionality
- Enable testing on feature branches
- Database total/unread statistics tests
- Mark all messages as read
- Better error handling when connection to server is broken
- Add reset search button
- Minor UI tweaks
- Update pagination values when new mail arrives when not on first page
- Merge pull request #6 from KaptinLin/develop
- Optional browser notifications (HTTPS only)
- Don't allow tar files containing a ".."
- Sanitize mailbox names
- Use strconv.Atoi() for safe string to int conversions
- Fix env variable for MP_UI_SSL_KEY
- SMTP STARTTLS & SMTP authentication support
- HTTPS option for web UI
- Include read status in search results
- Memory & physical database tests
- Add project links to help in CLI
- Fix total/unread count after failed message inserts
- Command flag should be
--auth-file
- Disable CGO when building multi-arch binaries
- Basic authentication support
- Add date to console log
- Add space in To fields
- Cater for messages without From email address
- Minor UI & logging changes
- Add space in To fields
- cater for messages without From email address
- Update to clover-v2.0.0-alpha.2 to fix sorting
- Add search tests
- Update to clover-v2.0.0-alpha.2 to fix sorting
- Unread statistics