We've been hoping that mkdocs-material will ship the much anticipated search enhancements for some time, but it's time to recognize that we need to do something to improve the search results with how things work right now. This is a big commit that changes the titles of the various pages from the code-annotated synopsis to just the name of the function. This makes it much easier now to match things like `kumo.reject` directly, but `reject` remains awkward to find. I think this is the best that we can do at this time. A few functions have been annotated with the `status: deprecated` to show as deprecated in the toc/nav (shows with a little trash can next to the name).
1.5 KiB
smtp_server_message_received
kumo.on('smtp_server_message_received', function(message, conn_meta) end)
Called by the ESMTP server after receiving the message data, but before responding to the client in the live SMTP session.
If the client issued multiple "RCPT TO" commands in the same transaction,
each one will result in a separate message being created, and this event
will be triggered for each of them.
The event handler will be passed a Message object.
The Message will always have a Received header prepended that captures trace
information about the sender.
{{since('2023.08.22-4d895015', indent=True)}} The conn_meta parameter represents the connection metadata and can be used to share state between the various SMTP listener event handlers. See Connection Metadata for more information.
This event is the best place to carry out a number of important policy decisions:
- DKIM signing via message:dkim_sign.
- Assigning the
"campaign","tenant"and/or"queue"meta values via msg:set_meta
-- Called once the body has been received.
-- For multi-recipient mail, this is called for each recipient.
kumo.on('smtp_server_message_received', function(msg)
local signer = kumo.dkim.rsa_sha256_signer {
domain = msg:from_header().domain,
selector = 'default',
headers = { 'From', 'To', 'Subject' },
key = 'example-private-dkim-key.pem',
}
msg:dkim_sign(signer)
end)