Notable changes to Mailpit will be documented in this file.
- Update caniemail database
- Update node dependencies
- Update Go dependencies
- Delete multiple POP3 messages in single action
- Handle POP3 RSET command
- Update node dependencies
- Update Go dependencies
- Add pagination & limits to URL parameters (#303)
- Update node dependencies
- Update Go dependencies
- Clone new Docker images to ghcr.io (#302)
- Update Go dependencies
- Update node dependencies
- iCalendar (ICS) viewer (#298)
- Add dot stuffing for POP3 (#300)
- Update node dependencies
- Replace invalid Windows username characters in sendmail (#294)
- Update node dependencies
- Update Go dependencies
- Simplify JSON HTTP responses
- Return queued Message ID in SMTP response (#293)
- 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
- 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
- Clearer error messages for read/write permission failures (#281)
- Prevent error when two identical tags are added at the exact same time (#283)
- 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
- Option to auto relay for matching recipient expression only (#274)
- Add UI settings screen
- Add delay to close database on fatal exit (#280)
- Update caniemail test database
- Update node dependencies
- Update Go dependencies
- Switch database flag/env to
--database
/MP_DATABASE
- 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)
- 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
- Code cleanup, remove redundant functionality
- Add labels to Docker image (#267)
- Add readyz subcommand for Docker healthcheck (#270)
- Update node dependencies
- Update Go dependencies
- Add SMTP TLS option (#265)
- Enforce SMTP STARTTLS by default if authentication is set
- Update caniemail test data
- Reorder CLI flags to group by related functionality
- Allow setting SMTP relay configuration values via environment variables (#262)
- 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)
- Tag names now allow
.
and must be a minimum of 1 character - Update node dependencies
- Update Go dependencies
- Option to enforce TitleCasing for all newly created tags
- Set message tags using plus addressing (#253)
- Handle null values in Mailpit settings, set DeletedSize=0 if null
- 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
- Optional POP3 server (#249)
- Include Reply-To information in message summaries for message list & websocket events
- 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
- Add reply-to: search filter (#247)
- Update caniemail data
- Update node modules
- Update Go modules
- Bump actions build requirement versions
- Update esbuild
- Add option to log output to file (#246)
- Update node dependencies
- Update Go dependencies
- Add TLSRequired option for smtpd (#241)
- Workaround for specific field searches containing unicode characters (#239)
- Only show number of messages ignored statistics if
--ignore-duplicate-ids
is set
- Compress compiled assets with
npm run build
- Update Go modules
- Update node modules
- 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)
- Display multiple whitespace characters in message subject & recipient names (#238)
- Sendmail support for
-f 'Name <email[@example](https://github.com/example).com>'
format
- Significantly increase database performance using WAL (Write-Ahead-Log)
- Standardize error logging & formatting
- Add option to only allow SMTP recipients matching a regular expression (disable open-relay behaviour #219)
- 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
- Update node modules
- Run tests on Linux, Windows & Mac
- Automatically refresh connected browsers if Mailpit is upgraded (version change)
- 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
- Update node modules
- Update Go modules
- Refresh search results when search resubmitted or active tag filter clicked
- Fix regression to support for search query params to all
/latest
endpoints (#206)
- Update node modules
- Update Go modules
- Add new
ingest
subcommand to import an email file or maildir folder over SMTP
- Allow multiple tags to be searched using Ctrl-click (#216)
- Allow ID "latest" for message summary, headers, raw version & HTML/link checks
- Add configuration option to set maximum SMTP recipients (#205)
- Update node modules
- Update Go modules
- Remove JS debug information for favicon
- Update caniemail library & add
hr
element test
- Add @ as valid character for webroot (#215)
- New favicon notification badge to fix rendering issues (#210)
- Update node modules
- Update Go modules
- Add favicon fallback font (sans-serif) for unread count
- Clearer log messages for bound SMTP & HTTP addresses
- Allow port binding using hostname
- Update node modules
- Update Go modules
- Enable tag colors by default
- Use NextReader() instead of ReadMessage() for websocket reading (#207)
- Prevent JavaScript error if message is missing
From
header (#209)
- Update node modules
- Update Go modules
- 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)
- Correctly close websockets on client disconnect (#207)
- Update node modules
- Update Go modules
- Update documentation links
- Correctly display "About" modal when update check fails (resolves #199)
- Update node modules
- Update Go modules
- Update caniemail test data
- Fix column width in search view
- 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
- Enable delete button when new messages arrive
- Update node modules
- Downgrade microcosm-cc/bluemonday, revert to Go 1.20
- Update Go modules & minimum Go version (1.21)
- Update node modules
- Update Go modules
- Display message previews on separate line (#175)
- 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
- Remove some flags deprecated 08/2022
- Set auth credentials directly from environment variables
- Update node modules
- Update Go modules
- Add option to delete a message after release
- Update internal/storage import paths
- Move storage package to internal/storage
- Update internal import paths
- Move utils/* packages to internal/*
- Add endpoints for integration tests
- Add more API tests
- Add tests for ArgsParser & CleanTag
- 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
- Delete all messages matching search when more than 1000 results
- Update node modules
- Add message tag tests
- Add search delete tests
- Reset pagination when returning to inbox from search
- Update caniemail data
- Update Go modules
- Set 404 page when loading a non-existent message
- Link email addresses in message summary to search
- Better support for mobile screen sizes
- Remove redundant
Read
status from message (always true) - Delete by search filter
- Add endpoint to return all tags in use
- Improved search parser
- New search filter
[!]is:tagged
- Correctly escape certain characters in search (eg:
'
)
- Update minimum Go version to 1.20
- Update Go modules
- Update node modules
- Bump Go version to 1.21
- Rewrite web UI, add URL routing and components
- Correctly decode proxy links containing HTML entities (screenshots)
- HTML screenshots
- Update node modules
- Group message tabs on mobile
- Update wangyoucao577/go-release-action@v1.39
- Link check to test message links
- Workaround for non-RFC-compliant message headers containing
- Update Go libs
- Set hostname in page meta title to identify Mailpit instance
- Add pagination to swagger search documentation
- 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
- Update node modules
- Update Go modules
- Update brew installation instructions
- HTML check to test & score mail client compatibility with HTML emails
- Add basePath to swagger.json if webroot is specified
- Update node modules
- Update Go modules
- Update swagger docs
- 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 Go modules
- Update node modules
- Wrap HTML source lines
- Dark mode color adjustments
- Update dark mode loading background color
- Ignore SMTP relay error when one of multiple recipients doesn't exist
- Set raw message Content-Type to UTF-8
- Define Vue build options in esbuild
- Update node modules
- Update Go modules
- Theme toggler - auto, light and dark themes
- 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
- Sort tags before saving
- Add option to enable tag colors based on tag name hash
- Display message tags below subject in message overview
- 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
- Update node modules
- Update Go modules
- Check for secure context instead of HTTPS (#114)
- Update node modules
- Update Go modules
- Remove "Noto Color Emoji" from default bootstrap font list
- Return blank 200 response for OPTIONS requests (CORS)
- Correctly escape JS cid regex
- Update node modules
- Update Go modules
- Fix Date display when message doesn't contain a Date header
- Add allowlist to filter recipients before relaying messages (#109)
- Add
-S
short flag for sendmail--smtp-addr
- Fix auto-deletion cron
- Set Access-Control-Allow-Headers when --api-cors is set
- Include correct start value in search reponse
- Option to ignore duplicate Message-IDs
- Update node modules
- Update Go modules
- Update swagger field descriptions
- Style Undisclosed recipients in message view
- 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)
- Enable cross-origin resource sharing (CORS) configuration
- Message relay / release
- Include Return-Path in message summary data
- Inject/update Bcc header for missing addresses when SMTP recipients do not match messsage headers
- Update Go modules
- Update node modules
- Display Return-Path if different to the From address
- Message release functionality
- Add Docker image tag for major/minor version
- Update listen regex to allow IPv6 addresses (#85)
- Mobile and tablet HTML preview toggle in desktop mode
- Enable SMTP auth flags to be set via env
- Include Reply-To in message summary (including Web UI)
- Tab to view formatted message headers
- Add 'o', 'b' & 's' ignored flags for sendmail
- Update Go modules
- Update node modules
- Return received datetime when message does not contain a date header
- Fix JavaScript error when adding the first tag manually
- 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
- 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)
- Expose default ports (1025/tcp 8025/tcp)
- Expand custom webroot path to include a-z A-Z 0-9 _ . - and /
- Fix search with existing emails
- Update node modules
- 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
- Restore notification icon
- Compress SVG icons
- Add Kubernetes API health (livez/readyz) endpoints
- Upgrade to esbuild 0.17.5
- Correctly index missing 'From' header in database
- Update node modules
- Update go modules
- 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
- Append trailing slash to custom webroot for UI & API
- Upgrade esbuild & axios
- Rename "results" to "result" when singular message returned
- Remove duplicate bootstrap CSS
- Update go modules
- Update node modules
- Delay 200ms to set
target="_blank"
for all rendered email links
- Return empty arrays rather than null for message To, CC, BCC, Inlines & Attachments
- Message tags and auto-tagging
- 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
- Add limit and start parameters to search
- Prevent double message index request on websocket connect
- 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
- Add API tests
- Changes to use new data API
- Hide delete all / mark all read in message view
- Normalize running binary name detection (Windows)
- Workaround for Safari source matching bug blocking event listener
- Add documentation link (wiki)
- Switch to esbuild-sass-plugin
- Support for inline images using filenames instead of cid
- Add --quiet flag to display only errors
- Add restrictive HTTP Content-Security-Policy
- Minor UI color change & unread count position adjustment
- Add favicon unread message counter
- Remove left & right borders (message list)
- 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 axllent#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
- Enable testing on feature branches
- Database total/unread statistics tests
- Mobile compatibility improvements & functionality
- 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
- Include read status in search results
- HTTPS option for web UI
- Memory & physical database tests
- Fix total/unread count after failed message inserts
- Add project links to help in CLI
- Command flag should be
--auth-file
- Disable CGO when building multi-arch binaries
- Basic authentication support
- Update to clover-v2.0.0-alpha.2 to fix sorting
- Add search tests
- 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
- Unread statistics