mirror of
https://github.com/mailscope/kumomta.git
synced 2026-08-19 02:48:18 +00:00
81 lines
2.2 KiB
Lua
81 lines
2.2 KiB
Lua
local kumo = require 'kumo'
|
|
package.path = '../../assets/?.lua;' .. package.path
|
|
local shaping = require 'policy-extras.shaping'
|
|
local utils = require 'policy-extras.policy_utils'
|
|
|
|
local TEST_DIR = os.getenv 'KUMOD_TEST_DIR'
|
|
local SINK_PORT = tonumber(os.getenv 'KUMOD_SMTP_SINK_PORT')
|
|
local TSA_URL =
|
|
string.format('http://127.0.0.1:%s', os.getenv 'KUMOD_TSA_PORT')
|
|
|
|
local shaper = shaping:setup_with_automation {
|
|
publish = { TSA_URL },
|
|
subscribe = { TSA_URL },
|
|
cache_ttl = '1 second',
|
|
no_default_files = true,
|
|
extra_files = { 'shaping.toml' },
|
|
pre_filter = true,
|
|
back_pressure = 128000, -- just setting this to verify that the option is passed through
|
|
}
|
|
|
|
kumo.on('init', function()
|
|
kumo.configure_accounting_db_path(TEST_DIR .. '/accounting.db')
|
|
|
|
kumo.start_esmtp_listener {
|
|
listen = '127.0.0.1:0',
|
|
relay_hosts = { '0.0.0.0/0' },
|
|
}
|
|
|
|
kumo.start_http_listener {
|
|
listen = '127.0.0.1:0',
|
|
}
|
|
|
|
kumo.configure_local_logs {
|
|
log_dir = TEST_DIR .. '/logs',
|
|
max_segment_duration = '1s',
|
|
-- aggressively flush log segments; the volume in the test
|
|
-- harness is too low for the purely time based flush to be
|
|
-- effective
|
|
max_file_size = 1,
|
|
}
|
|
|
|
kumo.define_spool {
|
|
name = 'data',
|
|
path = TEST_DIR .. '/data-spool',
|
|
}
|
|
|
|
kumo.define_spool {
|
|
name = 'meta',
|
|
path = TEST_DIR .. '/meta-spool',
|
|
}
|
|
shaper.setup_publish()
|
|
end)
|
|
|
|
kumo.on('get_listener_domain', function(domain, listener, conn_meta)
|
|
return kumo.make_listener_domain {
|
|
relay_to = true,
|
|
log_oob = true,
|
|
log_arf = true,
|
|
}
|
|
end)
|
|
|
|
kumo.on('smtp_server_message_received', function(msg)
|
|
local tenant = msg:get_first_named_header_value 'X-Tenant'
|
|
local campaign = msg:get_first_named_header_value 'X-campaign'
|
|
msg:import_scheduling_header 'X-Schedule'
|
|
print('****** tenant', tenant, 'camp', campaign)
|
|
msg:set_meta('tenant', tenant)
|
|
msg:set_meta('campaign', campaign)
|
|
msg:set_meta('routing_domain', 'localhost')
|
|
end)
|
|
|
|
kumo.on('get_egress_path_config', function(domain, egress_source, site_name)
|
|
-- Redirect to sink port
|
|
local skip_make = true
|
|
local params =
|
|
shaper.get_egress_path_config(domain, egress_source, site_name, skip_make)
|
|
params.smtp_port = SINK_PORT
|
|
params.prohibited_hosts = {}
|
|
return kumo.make_egress_path(params)
|
|
end)
|