Вам надо на основе какого-то из заголовков, выставляемых MailD, назначать в Exchange SCL (spam confidence level). Exchange в зависимости от SCL может выполнять различные действия:
https://learn.microsoft.com/en-us/exchange/antispam-and-antimalware/antispam-protection/sclВот тут что-то подобное настраивали:
https://serverfault.com/questions/949386/exchange-not-putting-mail-to-junk-despite-scl-header-valueВ MailD заголовки выставляются в MailD.MilterHook.
По умолчанию там есть такой фрагмент:
-- Reject the message if it is likely spam
if ctx.message.spam.score >= 100 then
dw.notice("Spam score: " .. ctx.message.spam.score)
return {action = "reject"}
else
-- Assign X-Drweb-Spam headers in accordance with spam report
ctx.modifier.add_header_field("X-DrWeb-SpamScore", ctx.message.spam.score)
ctx.modifier.add_header_field("X-DrWeb-SpamState", ctx.message.spam.type)
ctx.modifier.add_header_field("X-DrWeb-SpamDetail", ctx.message.spam.reason)
ctx.modifier.add_header_field("X-DrWeb-SpamVersion", ctx.message.spam.version)
end
Тут письма со score >= 100 реджектятся самим MailD. Если хочется, чтобы они всё-таки летели дальше, то можно оставить только выставление заголовков, заменив этот фрагмент на:
-- Assign X-Drweb-Spam headers in accordance with spam report
ctx.modifier.add_header_field("X-DrWeb-SpamScore", ctx.message.spam.score)
ctx.modifier.add_header_field("X-DrWeb-SpamState", ctx.message.spam.type)
ctx.modifier.add_header_field("X-DrWeb-SpamDetail", ctx.message.spam.reason)
ctx.modifier.add_header_field("X-DrWeb-SpamVersion", ctx.message.spam.version)
Можно сделать добавление своего заголовка при определённом score. Возможно, так будет проще потом сделать правило в Exchange:
if ctx.message.spam.score >= 100 then
ctx.modifier.add_header_field("X-Move-To-Junk", "Yes")
end
Можно сделать, чтобы хук располагался в отдельном файле. Так удобнее его править:
# drweb-ctl cfshow --value MailD.MilterHook >/etc/opt/drweb.com/milter.lua
# drweb-ctl cfset MailD.MilterHook /etc/opt/drweb.com/milter.lua
# vim /etc/opt/drweb.com/milter.lua
# drweb-ctl reload