local kumo = require 'kumo' local utils = require 'policy-extras.policy_utils' local shaping = require 'policy-extras.shaping' local queue_module = require 'policy-extras.queue' local listener_domains = require 'policy-extras.listener_domains' local sources = require 'policy-extras.sources' local log_hooks = require 'policy-extras.log_hooks' local dkim_sign = require 'policy-extras.dkim_sign' sources:setup { '/opt/kumomta/etc/policy/sources.toml' } local dkim_signer = dkim_sign:setup { '/opt/kumomta/etc/policy/dkim_data.toml' } local shaper = shaping:setup_with_automation { extra_files = { '/opt/kumomta/etc/policy/shaping.toml' }, } log_hooks:new_json { name = 'webhook', url = 'https://hooks.domain.net', log_parameters = { headers = { 'From', 'To', 'Subject', 'X-Tenant' }, per_record = { Any = { enable = true }, }, }, } # hooks do not work, will research after dkim issue local queue_helper = queue_module:setup { '/opt/kumomta/etc/policy/queues.toml' } kumo.on('init', function() kumo.define_spool { name = 'data', path = '/var/spool/kumomta/data', } kumo.define_spool { name = 'meta', path = '/var/spool/kumomta/meta', } -- shaper.setup_publish() kumo.configure_local_logs { log_dir = '/var/log/kumomta', max_segment_duration = '1 minute', } kumo.configure_bounce_classifier { files = { '/opt/kumomta/share/bounce_classifier/iana.toml', }, } for _, port in ipairs { 25, 587 } do kumo.start_esmtp_listener { listen = '0:' .. tostring(port), hostname = 'planbnow.net', relay_hosts = { '127.0.0.1', '22.22.22.22/27', }, } end end) kumo.on('get_listener_domain', listener_domains:setup { '/opt/kumomta/etc/policy/listener_domains.toml' }) kumo.on('get_egress_path_config', shaper.get_egress_path_config) kumo.on('smtp_server_message_received', function(msg) local failed = msg:check_fix_conformance( 'MISSING_COLON_VALUE', 'LINE_TOO_LONG|NAME_ENDS_WITH_SPACE|NEEDS_TRANSFER_ENCODING|NON_CANONICAL_LINE_ENDINGS|MISSING_DATE_HEADER|MISSING_MESSAGE_ID_HEADER|MISSING_MIME_VERSION' ) if failed then kumo.reject(552, string.format('5.6.0 %s', failed)) end queue_helper:apply(msg) dkim_signer(msg) end)