# http_message_generated ```lua kumo.on('http_message_generated', function(message, auth_info) end) ``` Called by the HTTP injection API endpoint after generating a message, but prior to injecting it into the queue. The event handler will be passed a [Message](../message/index.md) object, as well as an [AuthInfo](../kumo.aaa/auth_info.md) {{since('2026.03.04-bb93ecb1', inline=True)}} that can be used to implement more granular access control policies. The HTTP injector does not add a `Received` header, but it will pre-set the following meta values in the message: * `"http_auth"` - will hold either the authenticated username or the peer IP address that satisfied the authentication check for the endpoint. This event is the best place to carry out a number of important policy decisions: * DKIM signing via [message:dkim_sign](../message/dkim_sign.md). * Assigning the `"campaign"`, `"tenant"` and/or `"queue"` meta values via [msg:set_meta](../message/set_meta.md) You may use [kumo.reject](../kumo/reject.md) to raise an error to prevent this message from being queued for delivery. ```lua kumo.on('http_message_generated', function(msg, auth_info) 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) ```