commit 84608a8b760c5b56e8912fc2645cf8cb00a75e66
Author: Marcos Talau <talau@debian.org>
Date: Sun Jul 19 13:00:37 2026 -0300
debian/salsa-ci.yml: Add to provide CI tests for Salsa
commit ef771c1088790805eef6cdac130a7103ca762e94
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sat Jun 13 17:56:52 2026 +0100
Update changelog for release 1.18.0-1
commit 297dae50560420cf4da1c24148c0d8f4a10c768b
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sat Jun 13 17:48:36 2026 +0100
New upstream release (1.18.0)
commit a055fbab52d9fad05f26c62d7bbba3e78555d0c9
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sat Jun 13 17:47:03 2026 +0100
Drop 0001-test-Update-expected-strings-to-Go-1.25.11-1.26.4.patch
0001-test-Update-expected-strings-to-Go-1.25.11-1.26.4.patch is now
redundant, as it's included in upstream 1.18.0.
commit e10c3967abced4fc482839777a46faa765654ed4
Merge: dceac32 ca2538b
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sat Jun 13 17:42:09 2026 +0100
Merge tag 'upstream/1.18.0' into debian/sid
upstream/1.18.0
commit ca2538b9745a448170dbd078c65b97c8821c33f9
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Jun 7 12:25:56 2026 +0100
docs: v1.18.0 release notes
commit ab2a6e7eb3dccfbf6b314f5510758aa7e6d84e2a
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Jun 7 00:07:42 2026 +0100
test: Update expected strings to Go 1.25.11/1.26.4
In Go 1.25.11/1.26.4, net/textproto error formatting was changed, and
now the message is quoted. This is to protect from general string
injections.
See https://go-review.googlesource.com/c/go/+/778182 and
ec1c380418ec6a0da28d4519872e2b81ba9152ba.
After this change, the error strings from net/textproto (and net/smtp
which uses it) now include quotes.
For chasquid, the only user-observable change in the server is that the
errors included in the DSN messages are now quoted, which should not be
a problem.
However, some of the tests which validate error strings need to be
adjusted.
The patch also updates go.mod to set the Go version to match this new
minimum.
commit 2b8f20684203ebd7debe963fa42617b04f45e6d5
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Fri May 22 09:18:12 2026 +0100
modules: Update Go dependencies
commit e8730a8eba9c060c78be481c5518ac64156eb935
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Fri May 8 12:53:57 2026 +0100
modules: Update Go dependencies, and min Go version is now 1.25.0
commit 953d380424d4342bc0b302d35dd60299d577079c
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Mon Apr 6 19:31:58 2026 +0100
make: Auto-format Python files, and update existing
This patch adds extends `make fmt` to auto-format Python files using
`black`, and also runs it on the existing files.
commit e78d5043e37f1f45a3191324122b65fb08b5c212
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Mon Apr 6 19:27:56 2026 +0100
maillog: Remove unnecessary newlines
This patch removes the unnecessary newlines in the maillog printf calls.
Note that the library will trim them anyway, so this is only for code
readability, but the logs should be unchanged.
commit 013af62116cc617cb90ac2a9f35aa05888e19149
Author: xrstf <git@xrstf.de>
Date: Mon Apr 6 17:39:51 2026 +0200
maillog: Fix empty lines in the authentication log entries
In maillog.Auth, we currently have a newline in the log entry args.
The blitiri.com.ar/go/log package handles trailing newlines, but only in
the format parameter, not in the args.
Because of this, the authentication log entries in the maillog currently
end with an extra newline.
This patch fixes the problem by removing the unnecessary newline from
the message.
https://github.com/albertito/chasquid/pull/82
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message.
commit af7b1d895cb50597aecadb520bbf340e989e808d
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Mon Feb 2 19:20:08 2026 +0000
test: Add a Prometheus integration test
This patch adds a Prometheus integration test, that runs a Prometheus
instance which scrapes chasquid, and then does a basic query to ensure
the scraping is working correctly.
commit 1a4c672ac32330718797183ec4ef9f1bb2a75fa2
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Mon Feb 2 19:21:41 2026 +0000
expvarom: Remove empty newlines and comments to conform to stricter parsing
The openmetrics format doesn't support empty newlines or miscellaneous
comments, and the Prometheus parser has become more strict over time,
which is now causing scraping errors.
This patch fixes those issues by adjusting to the stricter openmetrics
format.
Thanks to Jakub Ječmínek for reporting this issue!
commit b4c429a3358dbd1d71b75a37140a8be10e105f27
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Feb 1 12:52:16 2026 +0000
docker: Update Dovecot config to 2.4
Debian 13, the new stable version, updated Dovecot from 2.3 to 2.4.
Unfortunately, the new Dovecot version introduced several changes to the
configuration file that are not backwards-compatible.
https://doc.dovecot.org/2.4.2/installation/upgrade/2.3-to-2.4.html
This patch updates our docker's Dovecot config to the new version.
Thanks to Ernesto Alfonso (erjoalgo@github) for reporting this problem
in https://github.com/albertito/chasquid/issues/80.
commit f11d2d364e9c833439ca396de4d66748f394df35
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Feb 1 12:15:10 2026 +0000
docker: Add $SKIP_CERT_CHECK for debugging
When running the container, there is a check to make sure we have at
least one certificate. This is very useful to detect a common problem
early, with a friendly error message.
However, when debugging, sometimes we want to skip that check and run
anyways. So this patch introduces a $SKIP_CERT_CHECK variable that can
be used to skip that check.
commit 6c80b55979154c3f4125cd5b52384d56bbf3f52b
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Feb 1 11:54:19 2026 +0000
docker: Remove unnecessary "go get" command
We no longer need to do "go get" before "go install" in modern Go
versions, so this patches removes that (now) unnecessary command.
commit 45071cba6f0afd172c22a61aec1186ab5086b84d
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Feb 1 10:48:52 2026 +0000
docker: Use a specific Debian version
When Debian releases a new stable version, there could be breaking
changes that mean Docker build stops working.
New Debian stable versions are infrequent enough that it is better to
just do them by hand, to avoid accidentally breaking builds (and
subsequently having to fix them in a rush).
Thanks to Ernesto Alfonso (erjoalgo@github) for reporting this problem
in https://github.com/albertito/chasquid/issues/80.
commit d9f53411b53abd4c88b0b757b3642da7908b414c
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Nov 30 00:27:35 2025 +0000
docs: v1.17.0 release notes
commit 5116c5873d7b6dae3f660050600b5f9aa11d4074
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Nov 30 00:21:36 2025 +0000
modules: Update Go dependencies
commit 1a014be277db77b84a3f363c34a84ab244cd47de
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Fri Oct 24 12:43:51 2025 +0100
internal/dkim: Apply gofmt -s
A run of `gofmt -s` found two instances where a struct definition could
be simplified. This patch applies those suggestions.
commit 40edb42848361cfab650e9f789bfd56a2bb502d2
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Fri Oct 24 12:42:35 2025 +0100
test/t-22-forward_via: Group shell redirections
This patch groups a series of commands that redirect to a file into a
single grouped redirect, for readability reasons.
Suggested by shellcheck SC2129.
commit 5c2566c9b16299009b1405a9b5115fae2df55dc7
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Fri Oct 24 12:34:58 2025 +0100
Fix non-constant format string in calls to Printf-like functions
In a few places, we call Printf-like functions, but for the format we
use either non-format messages (which is not tidy, but okay), or
variable messages (which can be problematic if they contain %-format
directives).
The patch fixes the calls by either moving to Print-like functions, or
using `Printf("%s", message)` instead.
These were found by a combination of `go vet` (which complains about
"non-constant format string in call"), and manual inspection.
commit 3776186288a4096cb1eaae0b80b3ba1b181ec92a
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Fri Oct 24 12:26:16 2025 +0100
protobuf: Regenerate with protoc-gen-go v1.36.10
Regenerate the protobuf auto-generated files using an updated version of
protoc-gen-go.
commit 6118e1f0514fc7fb5daf942feb249599bbaf0b81
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Fri Oct 24 12:23:50 2025 +0100
modules: Update Go dependencies, and min Go version is now 1.24.0
commit f7e0e9fe65d54b8e88001af0e5ebfa37cb78b621
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Fri Oct 24 12:00:18 2025 +0100
Minor cleanups for staticcheck issues
staticcheck found a couple of minor code cleanup improvements, like
unused variables or an out-of-order defer, mostly in tests.
This patch fixes those problems by making the necessary adjustments.
They're all fairly small, and should not change the logic in any
significant way.
commit 7a4a4e4b34c15eb976249b44997b70038713e114
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sat Oct 18 15:21:29 2025 +0000
tests: Fix "text file busy" race condition in go-build-cached
There are a couple of places in the tests when we attempt to build and
run simultaneously. Here, if the build is slow, there is a race where
"text file busy" can appear.
To fix this, build to a temporary file with a random name, then
atomically rename it to the final binary name.
commit 08273ea90128d08e9a52504a7aaff388642faf68
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sat Oct 18 12:10:24 2025 +0100
queue: Sync the files written on Put
When we put something in the queue and respond "250 ok" to the client,
that is taken as accepting the email.
As part of putting something in the queue, we write it to disk, but
today we don't do an fsync on that file.
That leaves a gap where a badly timed crash on some systems could lead
to the file being empty, causing us to lose an email that we accepted.
To elliminate (or drastically reduce on some filesystems) the chances of
that situation, we call fsync on the file that gets written when we put
something in the queue.
Thanks to nolanl@github for reporting this in
https://github.com/albertito/chasquid/issues/78.
commit 7d56f1b4b410b38d60114dc4d83f5737c2abbd90
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Oct 12 11:49:35 2025 +0100
fail2ban: Use more targeted regexp to catch errors
The current fail2ban regexp catches all SMTP connection errors.
This works fine, but includes connection errors, that can be caused by
transient external causes, and accidentally delay email delivery.
This patch changes the regexp to be more targeted towards specific SMTP
errors that are likely to be caused by deliberate actions.
The expression was cross-checked with a few month of errors to confirm
it should not have false positives, and that it correctly left
connection errors alone.
Thanks to pepperbob@github for reporting this in
https://github.com/albertito/chasquid/issues/77.
commit 45bc70ee334037319f0afd0ce454bffd944e5dba
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Thu Oct 2 10:45:26 2025 +0100
smtpsrv: Fix "Received" header format when including the IP address
When constructing the "Received" header, in some cases we want to
include the remote IP address in addition to the EHLO domain.
The way we did that is not fully compliant with RFC 5321 (section 4.4),
and this has the potential to confuse some tools that parse the header.
This patch fixes this problem by adjusting the order of the two pieces
of data, which makes it comply with the RFC.
Before:
Received: from [1.2.3.4] (ehlo.domain.example.com)
After:
Received: from ehlo.domain.example.com ([1.2.3.4])
Thanks to nolanl@github for reporting this problem in
https://github.com/albertito/chasquid/issues/76.
commit eeb2deb7f608372ce20920a0dfd843162b2d191e
Author: ThinkChaos <ThinkChaos@users.noreply.github.com>
Date: Mon Aug 11 18:48:39 2025 -0400
courier: Don't hardcode path to `sleep` binary in the tests
On NixOS, `/bin` is basically empty and this causes the courier tests
(which invoke `/bin/sleep`) to fail.
This patch fixes the tests by removing the hardcoded path.
https://github.com/albertito/chasquid/pull/73
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message.
commit 6b66731850d11fef8798d96c14bf4956a60fbf0d
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Mon Aug 4 14:21:49 2025 +0400
docker: Use fixed UID/GID for daemon users
Currently, we rely on Debian to pick a UID and GID for daemon users.
However, those numbers can change as software evolves over time, in
particular as the base distribution changes.
Because those IDs are relevant in the data volume, which has a lifetime
independent from the daemon container, it is important that they don't
change.
Other projects have run into this issue over the years too, this is not
a purely theoretical concern.
This patch fixes the UID/GIDs for the daemon users to their current
values, to prevent problems in the future.
See https://github.com/albertito/chasquid/pull/72 for further
discussion.
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message, formatted RUN command line, changed the
dovecot group ID to match the previous value.
commit 84ed777f9521ce3d3bc9227645d8f6046b126178
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Mon Aug 4 01:06:08 2025 +0400
docker: Use debian:stable-slim as the base, to reduce size
Using the "slim" version of the debian:stable image helps reduce size,
while having no impact on runtime usability or performance. The main
differences are around locale and manpages.
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message.
commit cf18565b80995dcb35499b9c6b8450dfde120312
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Mon Aug 4 11:11:50 2025 +0100
docker: Use supervisord to launch chasquid and dovecot
Today, we launch dovecot in the background and chasquid in the
foreground using sudo.
This means that dovecot failures won't propagate, and signals to the
container (e.g. to stop it) also don't get propagated to dovecot
(because it's in the background) or chasquid (because they don't go
beyond the sudo process).
Thanks to [Guiorgy@github](https://github.com/Guiorgy) for identifying
the problem, proposing alternatives, help debugging, and discussing this
in https://github.com/albertito/chasquid/pull/70.
commit d0afe102deff47b840bcdb3d385991afd821a92a
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date: Sun Aug 3 17:45:58 2025 +0100
chasquid: Exit with code 0 on SIGINT/SIGTERM
When we get SIGINT or SIGTERM, today chasquid exits with code 1. This
can confuse some of the supervision tools.
In particular, Docker and Kubernetes expect exit 0 upon an intentional
stop.
And systemd, the Restart= semantics make a difference with 0 and non-0,
and exiting with 1 prevents users from making that distinction.
This patch changes the SIGINT/SIGTERM exit code to 0, to make it easier
for users to set up things as desired in those environments.
Thanks to [Guiorgy@github](https://github.com/Guiorgy) for reporting
this problem in https://github.com/albertito/chasquid/pull/70.
commit a9c1f88bd97a433c3451a3573901193f9cc205d4
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Sun Aug 3 00:41:09 2025 +0400
docker: Define the $AUTO_CERTS environment variable in the Dockerfile
For readability and clarity, define the $AUTO_CERTS environment variable
in the Dockerfile.
https://github.com/albertito/chasquid/pull/68
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message.
commit 2e6bc52f6a9db7172604c51b265e500d3f0876f8
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Sun Aug 3 00:40:39 2025 +0400
docker: Set DEBIAN_FRONTEND only during build
From the Dockerfile docs:
> Environment variable persistence can cause unexpected side effects.
> For example, setting ENV DEBIAN_FRONTEND=noninteractive changes the
> behavior of apt-get, and may confuse users of your image.
>
> If an environment variable is only needed during build, and not in the
> final image, consider setting a value for a single command instead.
So this patch adjusts the use of the DEBIAN_FRONTEND variable to match
the documented best practice.
https://github.com/albertito/chasquid/pull/68
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message.
commit c6e3fb42b0881e974a8dfff278e31ba2eab67316
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Sat Aug 2 22:06:59 2025 +0400
docker: Cleanup apt packages and cache in build
This patch makes Docker build clean up the apt packages and cache, to
reduce the size of the final image.
https://github.com/albertito/chasquid/pull/68
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message.
commit 68ba0d2600b5b25abe8e91fb4bca5a07fc30d586
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Sat Aug 2 22:06:04 2025 +0400
docker: Reduce Docker image layers
This patch halves the Docker image layers by following the best practice
of grouping some of the related commands together.
https://github.com/albertito/chasquid/pull/68
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message, adjust comment location.
commit 3ff26fa1451d8ef8bb885fe36f4ad695a9158fe9
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Sat Aug 2 21:55:53 2025 +0400
docker: Fix Dockerfile style warnings
This patch fixes some Dockerfile style warnings:
- `WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match`
- `LegacyKeyValueFormat: "ENV key=value" should be used instead of
legacy "ENV key value" format`
https://github.com/albertito/chasquid/pull/68
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message.
commit ad7975c82680de20b8e913aae511944aa06fb115
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Sat Aug 2 23:07:53 2025 +0400
docker: Use `--rm` in the example about adding users
When creating containers to run a single one-off command that alters a
volume, the `--rm` option is needed, otherwise that container is left
around and can cause confusion later on.
https://github.com/albertito/chasquid/pull/69
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message.
commit d82380901c798bc6befe5c1db2ac54c80a17268b
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Sat Aug 2 21:53:28 2025 +0400
docker: Add instructions for cross-compiling
This patch adds instructions on how to cross-compile the Docker build.
https://github.com/albertito/chasquid/pull/67
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message.
commit 2b9d1faabf5b1d74c2c27c09d105b63205fa8a3d
Author: Guiorgy <Guiorgy123@gmail.com>
Date: Sat Aug 2 21:20:24 2025 +0400
docker: Force Unix line endings on docker/ files
When using git on Windows, git may try to "fix" line endings to CRLF.
Then, when building the Docker image, the files copied can end up having
the wrong line ending, which causes scripts to fail to run.
This patch fixes the problem by using .gitattributes to indicate to git
which line ending to use for the files in the docker/ directory.
https://github.com/albertito/chasquid/pull/66
Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
Adjusted commit message, extended comment on .gitattributes.
There is 1 open security issue in bookworm.
You can find information about how to handle this issue in the security team's documentation.