Commit Graph
1524 Commits
Author SHA1 Message Date
Wez Furlong ac7ef32cd3 log_hooks: fix returning the module 2023-11-06 09:50:25 -07:00
Wez Furlong 1c25c0a59b shaping.lua: add extra_files to the TSA inline example 2023-11-06 08:53:34 -07:00
Wez Furlong 951cad53e8 log_hooks: simplify logic and comments a little 2023-11-06 08:46:35 -07:00
Wez Furlong dd93465870 log_hooks: a couple of minor fixes/tweaks 2023-11-06 08:39:31 -07:00
Wez Furlong af92443f7e policy-extras: add log_hooks helper
This should simplify the process of adding log hooks.
2023-11-06 08:31:52 -07:00
Wez Furlong 38179d59c4 docs: fix some broken links 2023-11-06 08:14:11 -07:00
Wez Furlong c1c4ce723e add pre_init event 2023-11-06 08:10:53 -07:00
Wez Furlong 4cb3a4c4e5 cargo update
I had to force-push my dane branch of rust-openssl after a rebase,
which invalidated the commit ref that is included here in Cargo.lock.

Update the deps to allow folks without the stale commit ref to be able
to build.
2023-11-06 06:32:22 -07:00
Wez Furlong 546237d11c deps: trust-dns -> hickory
The project was rebranded relatively recently; switch
to the new version
2023-11-04 10:26:49 -07:00
Wez Furlong e9838cd1a9 new: queue helper
This helps to configure tenant and campaign assignment and scheduled
queue configuration.

refs: https://github.com/KumoCorp/kumomta/issues/90
2023-11-03 13:44:13 -07:00
Wez Furlong 1872dc71a0 shaping: calling shaper.should_enqueue_log_record is no longer required
Allow multiple should_enqueue_log_record hooks to be registered,
and take advantage of that inside the shaping helper.

`shaper.should_enqueue_log_record` no longer needs to be explicitly
plumbed from the config, but we allow calling it still for compatibility
reasons.

We will remove that compatibility after the next stable release.
2023-11-03 08:52:40 -07:00
Wez Furlong 7bb498040b tsa: add some more trace logging
This is helpful when debugging/tracing.
2023-11-03 08:46:36 -07:00
Wez Furlong 3d7007825a shaping: calling shaper.get_queue_config is no longer required
Take advantage of the ability to define multiple get_queue_config
callbacks by internalizing the TSA webhook queue configuration.

`shaper.get_queue_config` no longer needs to be called, and
that fragment of code will continue to "work" by simply not
having an effect so that we don't break folks on upgrade.

We'll remove this compatibility in the release following
the next stable release.
2023-11-02 18:11:17 -07:00
Wez Furlong 929d51deba events: plumbing for registering multiple handlers
Previously, we'd restrict `kumo.on` to allowing just a single
instance of an event to be registered. The purpose of this was
to help surface logical errors where copypasta would result in
a bogus configuration.

With multiple helper lua modules now wanting to take responsibility
for some portion of the event handling, it is becoming more complex
to stitch things together.

It is desirable to allow multiple handlers for certain events,
so that a module can handle just its area of responsibility
without worry other modules about it.

This commit introduces a CallbackSignature type that allows
defining the function signature for event callbacks.

The signature can be pre-created and registered ahead of setting
up any lua contexts, which allows declaring whether an event
can have multiple callbacks registered.

The `get_queue_config` event handler has been set to allow multiple
callbacks.
2023-11-02 18:11:17 -07:00
Tom Mairs f630cbaf09 comments to rebuild after an update 2023-11-02 23:08:53 +00:00
Wez Furlong e176920f74 docs: changelog for #91 2023-11-02 08:35:19 -07:00
Nathalie Caiandncai 8a918177d5 add minijinja_contrib dependency (#91)
Co-authored-by: ncai <ncai@chapsvision.com>
2023-11-02 08:28:57 -07:00
Wez Furlong ffc15f2f74 docs: smtp_client_rewrite_delivery_status: see also memoize 2023-11-01 13:45:05 -07:00
Wez Furlong 10bade362b docs: add version info to rewrite and regex set map 2023-11-01 13:41:34 -07:00
Wez Furlong 343411c3d2 Add event for rewriting a failed smtp response
This will only trigger for messages where we've gotten to MAIL FROM or
later, and where we got a non-250 response.

The event is passed the response + the domain, tenant, campaign and
routing domain.  It can return an alternative response code value
or `null` to indicate no change.
2023-11-01 13:25:15 -07:00
Wez Furlong 8942ef7f86 Add regex_set_map type
This is useful for efficiently matching a string simultaneously against
multiple regular expressions.

The motivating use case is to use it together with the
smtp_client_rewrite_delivery_status event.
2023-11-01 12:52:39 -07:00
Wez Furlong 2b0ef4820f move libunbound to its own repo
You can now find it over at https://github.com/KumoCorp/libunbound-rs
2023-10-30 11:19:17 -07:00
Wez Furlong e731d47c3e rocksdb: trim down the number of retained LOG files
The default is 1000 which is really high. This sets it to 10,
and configures rotation of those daily, so that there should be
no more than 10 days worth of LOG files.
2023-10-27 08:38:06 -07:00
Wez Furlong 8cbc60410d docs: update for dane 2023-10-26 17:03:00 -07:00
Wez Furlong 903189d873 add tls info to Delivery log records
refs: https://github.com/KumoCorp/kumomta/issues/39
refs: https://github.com/KumoCorp/kumomta/issues/8
2023-10-26 17:03:00 -07:00
Wez Furlong 9c951a444d kumod: Add enable_dane option
Adds the ability to enable DANE verification for SMTP.

It is disabled by default because correct operation also
requires working DNSSEC which in turns requires the use
of the unbound resolver.

When enabled, the SMTP client will use the OpenSSL DANE
implementation to verify the peer certificate.

refs: https://github.com/KumoCorp/kumomta/issues/8

```lua
local kumo = require 'kumo'

-- Called on startup to initialize the system
kumo.on('init', function()
  kumo.configure_accounting_db_path '/tmp/acct.db'

  kumo.dns.configure_unbound_resolver {
    options = {
      validate = true, -- enable DNSSEC validation
    },
    -- name_servers = { '1.1.1.1:53' },
  }

  kumo.set_diagnostic_log_filter 'rfc5321=trace,kumod::ready_queue=trace,kumod::smtp_dispatcher=trace,info'
  kumo.start_esmtp_listener {
    listen = '0.0.0.0:2025',
    relay_hosts = { '127.0.0.1', '192.168.1.0/24' },
  }

  kumo.configure_local_logs {
    log_dir = '/var/tmp/kumo-logs',
    max_segment_duration = '1s',
  }

  kumo.start_http_listener {
    listen = '0.0.0.0:8000',
    trusted_hosts = { '127.0.0.1', '::1' },
  }

  kumo.define_spool {
    name = 'data',
    path = '/var/tmp/kumo-spool/data',
    kind = 'RocksDB',
  }

  kumo.define_spool {
    name = 'meta',
    path = '/var/tmp/kumo-spool/meta',
    kind = 'RocksDB',
  }
end)

kumo.on('get_egress_pool', function(pool_name)
  if pool_name == 'pool0' then
    return kumo.make_egress_pool {
      name = 'pool0',
      entries = {
        { name = 'source0' },
      },
    }
  end

  error("I don't know how to configure pool " .. pool_name)
end)

kumo.on('get_egress_source', function(source_name)
  return kumo.make_egress_source {
    name = source_name,
    socks5_proxy_server = '127.0.0.1:5000',
    socks5_proxy_source_address = '0.0.0.0',
  }
end)

kumo.on(
  'get_egress_path_config',
  function(routing_domain, egress_source, site_name)
    print('get_egress_path_config', routing_domain, egress_source, site_name)
    return kumo.make_egress_path {
      enable_tls = 'Disabled',
      enable_dane = true,
      idle_timeout = '5s',
      data_timeout = '10s',
      data_dot_timeout = '15s',
      prohibited_hosts = {},
    }
  end
)

kumo.on('get_queue_config', function(domain, tenant, campaign)
  return kumo.make_queue_config {
    egress_pool = 'pool0',
  }
end)
```
2023-10-26 17:03:00 -07:00
Wez Furlong f3241dc3c7 docs: fix typo 2023-10-26 17:03:00 -07:00
Wez Furlong 0b3c258c28 rfc5321 client: add potential to use openssl for starttls
This code isn't currently reachable (defaults to false), but allows
for a runtime selection between rustls and openssl-based tls.

refs: https://github.com/KumoCorp/kumomta/issues/8
2023-10-26 17:03:00 -07:00
Wez Furlong 8936f001e9 openssl: point to our fork of the rust bindings
This will enable DANE support via openssl in a future commit
2023-10-26 17:03:00 -07:00
Wez Furlong 30731e480c unbreak integration tests
These were broken by 898e08aece
2023-10-26 17:02:30 -07:00
Mike Hillyer ff0869c162 Update TSA page in User Guide to show the use of extra_files 2023-10-26 11:22:16 -04:00
Mike Hillyer 898e08aece Update shaping.toml with feedback provided by mail.com 2023-10-26 08:35:42 -04:00
Wez Furlong fb2cdff808 docs: refine from-source info
Minimize the rust install section to just what is necessary.
Show where the rpms and debs get built, and how to install them.
2023-10-24 13:19:03 -07:00
Wez Furlong f8aaa6f133 cargo update 2023-10-24 11:23:14 -07:00
Wez Furlong 8efd4d5127 docs: clarify install-from-source docs
Avoid referencing implementation details that we may change
(install.sh).

Document what goes where with a bit of explanation.

Remove examples that show launching `kumod &` as we do not recommend
running the service in the background without some kind of supervision
(such as systemd).  Instead, show how how to run the process and leave
it to the reader to decide how they with to deploy it in their
environment.

closes: https://github.com/KumoCorp/kumomta/issues/72
2023-10-24 11:22:00 -07:00
Wez Furlong bec4bc1445 generate-toc.py: format 2023-10-24 11:19:55 -07:00
Tom Mairs 0b36fe4788 Add background/foreground instruction 2023-10-24 00:08:17 +00:00
Tom Mairs 201dee47ac Add instructions to run from sbin 2023-10-24 00:05:36 +00:00
Tom Mairs 7e57b009c1 Fix for console type 2023-10-23 23:45:44 +00:00
Tom Mairs adf3acb9b7 Fix doc highlight type 2023-10-23 23:20:23 +00:00
Tom Mairs 065120c19a add install.sh back in 2023-10-23 23:10:55 +00:00
Tom Mairs bac319829c update with sudo 2023-10-23 17:14:26 +00:00
Mike Hillyer d9dd7ddea7 Change console example to match lua example. 2023-10-20 10:00:59 -04:00
Mike Hillyer 72d93f212d Update troubleshooting page based on Wez's feedback. 2023-10-20 09:34:42 -04:00
Mike Hillyer c8dd0e3f93 Fix path of link to troubleshooting page. 2023-10-19 22:45:47 -04:00
Mike Hillyer a8ae27fffb Add crossreference to troubleshooting page to the starting KumoMTA page. 2023-10-19 22:36:55 -04:00
Mike Hillyer 13fb1b5f0c Typo 2023-10-19 22:33:51 -04:00
Mike Hillyer d433bea3f1 Add troubleshooting page, add cross-reference from Tutorial, remove orphaned integration pages from Tutorial directory. 2023-10-19 22:22:33 -04:00
Mike Hillyer 141beb60f6 Link fix. 2023-10-18 23:16:12 -04:00
Tom Mairs 5909da616a update TOS 2023-10-18 22:29:33 +00:00