Commit Graph

32 Commits

Author SHA1 Message Date
Wez Furlong c1f950f52e docker: install ca-certificates in the image
refs: https://github.com/KumoCorp/kumomta/issues/356
2025-03-17 08:59:59 -07:00
Wez Furlong 96ff9902df docker: add label to container kumomta image 2024-06-12 14:52:23 -07:00
Daniel Schaaff d8cc6d9881 switch to debian bookworm for runtime image
This matches the os used in cargo chef and should help minimize
breakage.

fix typo
2024-05-29 11:16:36 -07:00
Daniel Schaaff f7747d094a remove apt cache after package installs 2024-05-29 11:16:36 -07:00
Wez Furlong 884aa0a093 docker: add /opt/kumomta/sbin to default path 2024-03-01 13:42:39 -07:00
Wez Furlong 0b09ddbd98 redis: update README to reference our new redis docker image 2024-02-29 12:37:42 -07:00
Wez Furlong e0f4177e4b redis: fixup filename for armv7 download 2024-02-29 12:32:13 -07:00
Wez Furlong b3be73f132 add docker image build for redis + redis_cell
This updates the Dockerfile to support multi architecture image
builds (amd64, arm64 and armv7), and adds some automation to build
them in parallel and stitch them together into a single multi-arch
image.
2024-02-29 12:19:57 -07:00
Wez Furlong e6973c2a04 slim down some deps
This helps to remove "false" deps on things like openssl; now that
is linked in only to those components that need it (eg: things that
use unbound for dnssec, or the smtp client for DANE).

This makes the binaries other than kumod (which still has max deps)
a few MB smaller; not a massive win, but nice all the same.
2023-12-22 10:24:30 -07:00
Wez Furlong cb5ebe0ab4 Add Dockerfile for minimal image build
This uses alpine to build and the docker scratch image for installation,
resulting in an image of 150MB in size, compared to the 251MB size of
our current ubuntu based image.

I think we can shrink things down a bit more; for example, the kcli
utility pulls in the message crate for some of its types, but ends up
linking in openssl and other deps.  Splitting out the types into a
message-types crate might help to reduce the size of that executable.
Similarly, the other executables seem to have more stuff linked in
than is strictly needed.
2023-12-21 21:15:49 -07:00
Wez Furlong 2b73a48e18 docker: copy the docker runner script into the image 2023-12-15 06:47:23 -07:00
Wez Furlong a923bf967a ci: almost there 2023-09-17 13:56:06 -07:00
Wez Furlong 6b2309a579 ci: copy deb into docker build 2023-09-17 13:48:11 -07:00
Wez Furlong b448818f8a ci: just install deb in the docker image
goal is to avoid replicating another copy of the installation
instructions for docker
2023-09-17 13:39:05 -07:00
Wez Furlong bee953cc30 ci: another stab at docker build 2023-09-17 11:12:54 -07:00
Wez Furlong 7304783981 ci: try alternative docker image build 2023-09-17 10:59:58 -07:00
Wez Furlong ba262ff006 ci: maybe fix docker build for kafka 2023-09-13 09:35:19 -07:00
Wez Furlong 81e64c65aa dkim: enable openssl rsa signing by default
This requires a fix to the docker build to avoid broken ssl
linkage.
2023-06-16 12:01:35 -07:00
Wez Furlong 8625d9d182 ship proxy-server in the kumo rpms and docker image
In the future I want to add separate packages for just the proxy
server, but for now this is the most expedient way to deliver
the binary.

refs: https://github.com/KumoCorp/kumomta/issues/45
2023-06-07 15:24:06 -07:00
Wez Furlong 22451330f4 CLI: add kcli command for interacting with admin http endpoints
```console
$ kcli --help
KumoMTA CLI.

Full docs available at: <https://docs.kumomta.com>

Usage: kcli --endpoint <ENDPOINT> <COMMAND>

Commands:
  bounce
          Administratively bounce messages in matching queues
  set-log-filter
          Changes the diagnostic log filter
  help
          Print this message or the help of the given subcommand(s)

Options:
      --endpoint <ENDPOINT>
          URL to reach the KumoMTA HTTP API

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version
```

```console
$ kcli bounce --help
Administratively bounce messages in matching queues.

Each individual message that is bounced will generate a log record capturing the event and then be removed from the spool.

Make sure that you mean it, as there is no going back!

The bounce will be applied immediately to queued messages, and the directive will remain in effect for the duration specified, causing newly received messages or messages that were in a transient state at the time the directive was received, to also be bounced as they are placed back into the matching queue(s).

Usage: kcli --endpoint <ENDPOINT> bounce [OPTIONS] --reason <REASON>

Options:
      --domain <DOMAIN>
          The domain name to match. If omitted, any domains will match!

      --campaign <CAMPAIGN>
          The campaign name to match. If omitted, any campaigns will match!

      --tenant <TENANT>
          The tenant name to match. If omitted, any tenant will match!

      --reason <REASON>
          The reason to log in the delivery logs

      --everything
          Purge all queues

      --duration <DURATION>
          The duration over which matching messages will continue to bounce. The default is '5m'

  -h, --help
          Print help (see a summary with '-h')
```

```console
$ kcli set-log-filter --help
Changes the diagnostic log filter

See <https://docs.kumomta.com/reference/kumo/set_diagnostic_log_filter/> for more information about the log filter syntax.

Usage: kcli --endpoint <ENDPOINT> set-log-filter <FILTER>

Arguments:
  <FILTER>

Options:
  -h, --help  Print help
```

refs: https://github.com/KumoCorp/kumomta/issues/55
2023-06-07 12:09:07 -07:00
Wez Furlong 7c812e8b30 fix a couple more policy paths 2023-03-29 07:02:46 -07:00
Wez Furlong eec9b5ad77 update docker for new default policy file location 2023-03-14 20:16:13 -07:00
Wez Furlong c2cb5b798b fix centos7 build, adjust docker to use /opt/kumomta
Revert building static/bundled sqlite, as the logic deep in sqlite3-src
makes no attempt to deal with this mess on centos7:

  = note: /opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: /__w/kumomta/kumomta/target/release/deps/libsqlite3_src-b3c44e6f34aac065.rlib(sqlite3.o):(.data.rel.aSyscall+0xb0): undefined reference to `fcntl64'
          collect2: error: ld returned 1 exit status

(I don't blame it!)

Deal with that in the docker image by simply installing sqlite
in the docker image.

And since I'm touching the docker stuff, adjust its install
path and layout to match that of the rpm and deb packages.
2023-03-14 14:14:37 -07:00
Wez Furlong 8c618c7bc6 ci: refine docker build 2023-03-13 18:27:03 -07:00
Wez Furlong 831bfe9aab docs: skeleton for building the docs
Rather than edit SUMMARY.md, you edit docs/generate-toc.py
and it will flesh out sections based on the list of files
in a directory.
2023-02-25 10:50:58 -07:00
Wez Furlong af653a489f make docker build work with older versions of docker 2023-02-23 10:16:48 -07:00
Wez Furlong 2cba4196c5 revise docker build; move away from musl/alpine
A downside of pulling in rocksdb is that it is a pretty big
C++ library and musl/alpine don't really get on with it.

Switch to using the latest ubuntu LTS image as our base.
2023-02-23 10:07:29 -07:00
Wez Furlong 602e9721c9 CI: fixup path for rename from smtpd -> kumod 2023-02-23 07:57:08 -07:00
Wez Furlong 6b85cfb2ee CI: don't require a tty to build docker image 2023-02-23 07:38:12 -07:00
Wez Furlong 42b173eac5 CI: take a run at building the docker image 2023-02-23 07:36:48 -07:00
Wez Furlong d8021a0ebf add redis build with redis-cell 2023-02-20 06:10:20 +00:00
Wez Furlong bda38adf90 restructure docker build bits
This makes it a bit easier to add other docker images
for other things in the future
2023-02-20 02:47:59 +00:00