You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
suricata/doc/userguide/lua/libs/smtp.rst

106 lines
2.0 KiB
ReStructuredText

SMTP
####
.. role:: example-rule-emphasis
SMTP transaction details are exposed to Lua scripts with the
``suricata.smtp`` library, for example::
local smtp = require("suricata.smtp")
Setup
*****
If your purpose is to create a logging script, initialize the buffer as:
::
function init (args)
local needs = {}
needs["protocol"] = "smtp"
return needs
end
Otherwise if a detection script::
function init (args)
return {}
end
API
***
Transaction
===========
SMTP is transaction based, and the current transaction must be
obtained before use::
local tx, err = smtp.get_tx()
if tx == nil then
print(err)
end
All other functions are methods on the transaction table.
Transaction Methods
===================
``get_mime_field(name)``
------------------------
Get a specific MIME header field by name from the SMTP transaction.
Example::
local tx = smtp.get_tx()
local encoding = tx:get_mime_field("Content-Transfer-Encoding")
if encoding ~= nil then
print("Encoding: " .. subject)
end
``get_mime_list()``
-------------------
Get all the MIME header field names from the SMTP transaction as a
table.
Example::
local tx = smtp.get_tx()
local mime_fields = tx:get_mime_list()
if mime_fields ~= nil then
for i, name in pairs(mime_fields) do
local value = tx:get_mime_field(name)
print(name .. ": " .. value)
end
end
``get_mail_from()``
-------------------
Get the sender email address from the MAIL FROM command.
Example::
local tx = smtp.get_tx()
local mail_from = tx:get_mail_from()
if mail_from ~= nil then
print("Sender: " .. mail_from)
end
``get_rcpt_list()``
-------------------
Get all recipient email addresses from RCPT TO commands as a table.
Example::
local tx = smtp.get_tx()
local recipients = tx:get_rcpt_list()
if recipients ~= nil then
for i, recipient in pairs(recipients) do
print("Recipient " .. i .. ": " .. recipient)
end
end