local kumo = require ‘kumo’
– DKIM signing configuration
local dkim_signing = {
[“blisswave365.com”] = {
selector = “default”,
domain = “blisswave365.com”,
private_key_path = “/etc/opendkim/keys/blisswave365.com/default.private”,
}
}
– Initial setup
kumo.on(‘init’, function()
– Start SMTP listener
kumo.start_esmtp_listener {
listen = ‘0.0.0.0:25’,
}
– Enable debug logging
kumo.set_diagnostic_log_filter ‘kumod=debug’
– Start HTTP listener (for management)
kumo.start_http_listener {
listen = ‘127.0.0.1:8000’,
}
– Define spools
kumo.define_spool {
name = ‘data’,
path = ‘/var/spool/kumomta/data’,
}
kumo.define_spool {
name = ‘meta’,
path = ‘/var/spool/kumomta/meta’,
}
end)
– DKIM signing for outbound mail
kumo.on(‘smtp_message_transaction_received’, function(msg)
local mail_from = msg:get_mail_from()
if mail_from then
local domain = mail_from:domain()
if dkim_signing[domain] then
kumo.dkim_sign(msg, dkim_signing[domain])
end
end
end)
– Egress path (outbound): bind to specific IP for blisswave365.com
kumo.on(‘get_egress_path_config’, function(domain, source_name, site_name)
if domain == “blisswave365.com” then
return kumo.make_egress_path {
enable_tls = ‘OpportunisticInsecure’,
source = {
address = “135.148.41.119”
}
}
end
return kumo.make_egress_path {
enable_tls = ‘OpportunisticInsecure’
}
end)
– Local delivery via Maildir for blisswave365.com
kumo.on(‘get_queue_config’, function(domain, tenant, campaign, routing_domain)
if domain == ‘blisswave365.com’ or routing_domain == ‘blisswave365.com’ then
return kumo.make_queue_config {
protocol = {
maildir_path = ‘/var/mail/vhosts/blisswave365.com/’,
},
}
end
– Optional: reject mail to unknown domains
return kumo.make_queue_config {
protocol = { reject = true }
}
end)