Commit Graph

61 Commits

Author SHA1 Message Date
Wez Furlong 4c71090669 docs: standardize the header before the generated list of functions 2023-03-14 10:17:55 -07:00
Wez Furlong b56bed5060 docs: fix admonish syntax, explain the global variable thing better 2023-03-11 23:06:59 -07:00
Wez Furlong 269e0702b4 add SMTP AUTH PLAIN support
Verified via:

```
swaks ... --auth plain --tls --auth-user scott --auth-password tiger
```
2023-03-11 16:23:49 -07:00
Mike Hillyer 2a4c53f953 Removing extra trailing line 2023-03-10 23:27:42 -05:00
Wez Furlong 258d9f8f64 docs: add a bit of an explanation about queueing 2023-03-07 08:27:44 -07:00
Wez Furlong 96350031dc add index pages for redis and sqlite 2023-03-06 20:19:16 -07:00
Wez Furlong 7054fb31c9 switch to using human time for the queue related time intervals 2023-03-06 19:33:05 -07:00
Wez Furlong 00c253a9dd add maildir support
This is to facilitate end-to-end testing to validate that the
right bits come out at the end.
2023-03-06 19:05:49 -07:00
Wez Furlong cd5f7efbb0 docs: link to ARF rfc, add note about extensions: 2023-03-05 20:37:45 -07:00
Wez Furlong c6292440d0 docs: fix a typo and add a missing paragraph 2023-03-05 20:34:29 -07:00
Wez Furlong 1bfa3a42af Add custom logging 2023-03-05 20:29:14 -07:00
Wez Furlong a0e73b72b1 allow logging selected meta and headers to the logs 2023-03-05 15:58:19 -07:00
Wez Furlong 1ac929e6b2 add max_segment_duration option to the logger 2023-03-05 15:25:08 -07:00
Wez Furlong 0ca585bd5a Optionally use redis for throttles 2023-03-05 10:39:56 -07:00
Wez Furlong ca78839a59 docs: add missing require 2023-03-05 09:59:06 -07:00
Wez Furlong eaaddbb6b6 add redis client 2023-03-05 09:57:03 -07:00
Wez Furlong 2cf3d2387c add sqlite data access
A bit of a big commit because I wanted sqlite queries to run
async and there isn't a sane way to tell in mlua whether a
given context is safe to yield for an await, which meant making
every case where we call into lua be fully async.

This adds a simple but powerful binding to sqlite that performs
its IO in a blocking tokio thread pool, and returns the results
back to lua.

There is no implicit caching of queries, and no implicit connection
pooling.
2023-03-04 18:07:31 -07:00
Wez Furlong c184214253 allow loading TLS key+cert from hashicorp vault
refactor to allow reusing the same key loader logic for dkim, smtp
and http.
2023-03-04 11:01:35 -07:00
Wez Furlong 38e60f9274 rename vault object fields to have vault_ prefix
This disambiguates for future alternative credential storage
systems.
2023-03-04 10:29:25 -07:00
Wez Furlong c93c9af2eb refine default list of meta fields for supplemental trace header 2023-03-04 10:21:45 -07:00
Wez Furlong 52f7ab6150 add prohibited_hosts and skip_hosts for outbound resolving
While in that part of the code, handle null MX destination domains
(such as `example.com) more nicely.
2023-03-04 10:09:17 -07:00
Wez Furlong 7eb33d2ca5 make smtp server read timeout configurable
client_timeout is the config, and it defaults to 1m
2023-03-04 07:52:53 -07:00
Wez Furlong 6204642270 add trace headers configuration and link to ARF parsing 2023-03-04 07:22:02 -07:00
Wez Furlong 61f974d066 adjust listener domains config to support more relaying options
a domain can now specify:

* relay_from: mail from the domain is allowed to relay anywhere
  if the peer matches the cidr list
* relay_to: mail from anywhere is allowed to relay to the domain
* log_arf: ARF FBL reports are allowed to be received and their
  contents will be logged
* log_oob: oob bounces are allowed to be received and their
  contents will be logged
2023-03-03 22:53:56 -07:00
Wez Furlong 03c3484cd7 rename fbl -> arf
The spec is talking about ARF, so let's use that terminology
2023-03-03 14:34:06 -07:00
Wez Furlong 523492da26 docs: fixup dkim signing 2023-03-03 10:56:22 -07:00
Wez Furlong aa460f52d0 docs: fix typo 2023-03-03 10:34:23 -07:00
Wez Furlong 7d76b3d9d7 add support for retrieving signing keys from hashicorp vault 2023-03-03 10:32:16 -07:00
Wez Furlong ef7fa59355 synthesize OOB log records from OOB reports
* When logging the reception of a message, if we can parse it
  as an rfc3464 oob report, then synthesize OOB records for
  each recipient
* Add config to allow relaying for domains for which bounces
  are received, so that we can accept their message content.
* If the domain config allows bounces but not relaying, then
  the message will not be spooled or queued after reception;
  it will be dropped with no additional logging.
2023-03-03 06:53:33 -07:00
Wez Furlong da5f2433c0 add rfc3464 delivery status report parser 2023-03-02 14:46:30 -07:00
Wez Furlong d5b13a263b Add kumo.configure_bounce_classifier
and connect it to the logger
2023-03-02 08:59:03 -07:00
Wez Furlong 3d521a6468 fix reporting of bounce totals
A significant portion are bounced as they move through the queues,
not just those swept up in the direct application of the API call.

Pass in a shared hash map to track the counts and report on that
at the end of the call instead.
2023-03-01 19:57:47 -07:00
Wez Furlong f48e6b1416 Add API for administratively bouncing mail 2023-03-01 16:40:26 -07:00
Wez Furlong cd7ba3a2bb make smtp client timeouts configurable by command 2023-03-01 12:19:45 -07:00
Wez Furlong 2b0ba702cb add scheduling constraints
This is implemented by allowing the Message:set_due method to
load the message metadata to consult the scheduling constraints,
which should mean that all scheduling updates have the constraints
applied to them.
2023-03-01 09:43:48 -07:00
Wez Furlong 557fff650d implement max_deliveries_per_connection 2023-02-28 15:12:15 -07:00
Wez Furlong a691d7afcc docs: note about the unspecified pool as the default 2023-02-28 13:58:50 -07:00
Wez Furlong c275c696ff implement message and connection rate throttles
These use the local/in-process throttles.
Seems to work in my very light testing so far.
2023-02-28 13:56:58 -07:00
Wez Furlong 50eabe6f98 docs: update get_egress_path_config parameters 2023-02-28 11:47:54 -07:00
Wez Furlong f912fab58b docs: egress source, egress path etc. 2023-02-28 10:31:00 -07:00
Wez Furlong 9ab1727792 rename: dest_site -> egress path 2023-02-28 09:56:20 -07:00
Wez Furlong 93ff9e1991 adjust dest_site to queue based on source->site
There needs to be another pass over this for naming,
but this brings us closer to the state shown in the
diagram in the readme.
2023-02-28 06:29:26 -07:00
Wez Furlong a6a4bdd37c allow specifying remote smtp port in site config 2023-02-26 22:46:45 -07:00
Wez Furlong 9338de3d06 delay ready queue when target site is persistently unavailable
Tidy up the logging around this; move some error logs to debug level,
especially since we log message events to the log file for that purpose;
there is no need to log errors to the console for this.
2023-02-26 22:26:03 -07:00
Wez Furlong 0eefb02bed make destination site queues per-tenant
To facilitate this, formatlize the `campaign:tenant@domain` naming
and add a helper type to parse and format that tuple of information
to make it easier to work with in the code.

Adjust the get_x_config events to accept those parameters.
2023-02-26 19:59:56 -07:00
Wez Furlong 6dfb44012e add some header manipulation functions 2023-02-26 15:01:05 -07:00
Wez Furlong 73f1c179f0 rename http_message_injected -> generated
that better reflects when it is being called
2023-02-26 10:35:07 -07:00
Wez Furlong 1935f21953 add http_message_injected event for signing http injected mail 2023-02-26 10:23:49 -07:00
Wez Furlong fcb665f841 docs: note that the message has a Received header 2023-02-26 09:43:48 -07:00
Wez Furlong b8c319e2b3 use the builder's from/to/reply-to header formatting 2023-02-26 09:40:43 -07:00