Hi, I need to get a success DNS for the sending client. I tried using kumo.generate_rfc3464_message, but I don’t get a successful delivery report. The client requests NOTIFY = success.
Can you tell me if this is possible? I saw a similar question on Discord, but it’s been a while, so maybe something has changed.
1. kumod 2025.12.02-67ee9e96
2. Linux e8d0f75fc73f 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
local domain_helper = listener_domains:setup {
'/opt/kumomta/etc/policy/listener_domains.toml'
}
kumo.on('get_listener_domain', domain_helper)
kumo.on('smtp_server_ehlo', function(domain, conn_meta, extensions)
table.insert(extensions, 'DSN')
table.insert(extensions, 'ENHANCEDSTATUSCODES')
return extensions
end)
kumo.on('smtp_server_message_received', function(msg)
local env_id = msg:id()
local sender = tostring(msg:sender() or "<>")
local rcpt = tostring(msg:recipient() or "<unknown>")
kumo.log_info(string.format(
"Message accepted (success): %s from %s to %s",
env_id,
sender,
rcpt
))
end)
kumo.on('get_queue_config', function(domain)
local mx_list = nil
if domain == 'postfix.local' then
mx_list = { '10.200.0.134:25' }
end
return kumo.make_queue_config {
protocol = { smtp = { mx_list = mx_list } },
retry_interval = '30s',
max_retry_interval = '1m',
max_age = '5m',
}
end)
kumo.on('get_egress_path_config', function()
return kumo.make_egress_path {
enable_tls = 'Opportunistic',
}
end)
kumo.on('delivery_succeeded', function(msg, response)
kumo.log_info('Delivery succeeded for envelope ' .. msg:id())
end)
kumo.on('delivery_failed', function(msg, response)
kumo.log_info('Generating FAILURE DSN for ' .. msg:id())
local dsn_msg = kumo.generate_rfc3464_message {
type = 'failure',
msg = msg,
response = response,
}
if dsn_msg then
local ok, err = pcall(kumo.inject_message, dsn_msg)
if ok then
kumo.log_info('FAILURE DSN injected OK')
else
kumo.log_error('FAILURE DSN inject failed: ' .. tostring(err))
end
else
kumo.log_warn('generate_rfc3464_message returned nil')
end
end)
kumo.on('init', function()
kumo.define_spool { name = 'data', path = '/var/spool/kumomta/data' }
kumo.define_spool { name = 'meta', path = '/var/spool/kumomta/meta' }
kumo.configure_local_logs { log_dir = '/var/log/kumo' }
kumo.configure_bounce_classifier {
files = { '/opt/kumomta/share/bounce_classifier/iana.toml' },
}
kumo.dns.configure_resolver { name_servers = { '10.200.0.133:53' } }
kumo.start_esmtp_listener {
listen = '0.0.0.0:2025',
relay_hosts = { '10.200.0.0/20', '127.0.0.1' },
}
end)