⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.23
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
doc
/
opendkim-2.11.0
/
View File Name :
authheaders-check-setup-hook.lua
-- Copyright (c) 2010 Jozsef Kovacs and Alex Beregszaszi -- -- Development kindly sponsored by Datira (www.datira.com), -- a professional hosting company. -- -- License: MIT -- local logging_enabled = 1 local function logger (logwhat) if logging_enabled == 1 then odkim.log(ctx, "LUA-SETUP "..logwhat) end end local function signer (domain) if odkim.sign(ctx, domain) == 1 then logger("Signing requested") else logger("Signing failed") end end -- Get SASL username local author = odkim.get_mtasymbol(ctx, "{auth_authen}") -- Incoming mail (without sasl username), verify only if author == nil then odkim.verify(ctx) return nil end logger("SASL username: "..author) -- Sign mail using the key associated to the envelope sender domain local mailfromdomain = odkim.get_fromdomain(ctx) local mailfrom = odkim.get_mtasymbol(ctx, "{mail_addr}") local headerfromaddr = odkim.get_header(ctx, "From", 0) logger("Mail from domain: "..mailfromdomain) logger("Mail from address: "..mailfrom) logger("Header from address: "..headerfromaddr) -- TODO: regexp email matching for headerfromaddr if string.find(headerfromaddr, mailfrom) ~= nil then -- If we have a direct match, sign the mail if author == mailfrom then signer(mailfromdomain) return nil end -- Check for additional possible sender aliases -- requires luasql-mysql require "luasql.mysql" local sql = luasql.mysql() if sql ~= nil then local conn = sql:connect("dbname", "dbuser", "dbpass", "db.example.com") if conn ~= nil then local cur = conn:execute(string.format("select * from alias where address=\"%s\" and goto like \"%%%s%%\"", mailfrom, author)) if cur ~= nil then if cur:numrows() > 0 then cur:close() conn:close() sql:close() logger("Alias found in SQL") signer(mailfromdomain) return nil end logger("No alias in SQL") cur:close() end conn:close() odkim.set_result(ctx, SMFIS_REJECT) return nil end sql:close() -- temporary failure: hope to process it again and SQL is available the second time odkim.set_result(ctx, SMFIS_TEMPFAIL) return nil end end -- If we got this far we have a forged sender associated to the sasl username odkim.set_result(ctx, SMFIS_REJECT) return nil