Перейти к содержимому


Фото
* * * * * 1 Голосов

Lua помощь


  • Please log in to reply
57 ответов в этой теме

#21 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 20 Март 2019 - 14:03

точнее вот так
 
noreply@sidex.ru
mkgk\.ru
xpstsrostum\.ru
.*\.sidex\.ru
 
на домены не срабатывает


#22 Boris Savelev

Boris Savelev

    Member

  • Dr.Web Staff
  • 152 Сообщений:

Отправлено 20 Март 2019 - 20:57

а можете поотлаживать, например выводить ctx.from?

 

в логах есть что-нибудь?

 

if regex.search(blacklist, ctx.message.header.value('from').decoded, regex.ignore_case) then

 

или вот так попробовать. возможно от milter что-то не так прилетает в from



#23 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 21 Март 2019 - 09:59

Если я добавлю в начале процедуры код dw.notice(ctx.from)

то в логе буду видеть это поле, такое будет считаться отладкой?

 

Прошу не смеяться, я не программист.



#24 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 21 Март 2019 - 10:15

Вот вывод лога, есть какието не понятные адреса (я выделил шрифт) - 

 

ar 21 10:04:04 daemon drweb-maild[1971]: Milter client ff3e-089b-670d: Lua: Soobsheniye ot: bounce-mc.us10_38424549.420493-ahlkradevich=mail.ru@mail171.suw14.mcdlv.net
Mar 21 10:04:12 daemon drweb-maild[1971]: Milter client ce7f-a39a-09d5: Lua: Soobsheniye ot: k.goncharuk@lgadubai.com
Mar 21 10:04:12 daemon drweb-maild[1971]: Milter client 25a3-1689-a0c5: Lua: Soobsheniye ot: prvs=0983e29712=smolokknskayasn@zaotv.ru
Mar 21 10:04:15 daemon drweb-maild[1971]: Milter client 324e-3ff3-938d: Lua: Soobsheniye ot: maritmnmour@senterplus.spb.ru
Mar 21 10:04:26 daemon drweb-maild[1971]: Milter client a413-30f3-d576: Lua: Soobsheniye ot: bounce-mc.us10_38102309.140717-dfina.kardpova=travelmart.ru@mail8.suw151.rsgsv.net
Mar 21 10:04:33 daemon drweb-maild[1971]: Milter client defc-9fca-b943: Lua: Soobsheniye ot: Irina.Chlljeerrnikova@travelmart.ru
Mar 21 10:04:33 daemon drweb-maild[1971]: Milter client cc9e-a184-32b0: Lua: Soobsheniye ot: check@kickboxio.net
Mar 21 10:04:38 daemon drweb-maild[1971]: Milter client 7ae0-7d23-2ea4: Lua: Soobsheniye ot: olgerea.bodrrikova@syneoshealth.com
Mar 21 10:04:43 daemon drweb-maild[1971]: Milter client 60b3-5a7e-47d1: Lua: Soobsheniye ot: yfpoqbp@moonblushe.eu


#25 Denis G.

Denis G.

    Newbie

  • Dr.Web Staff
  • 17 Сообщений:

Отправлено 21 Март 2019 - 13:02

Судя по наличию bounce это автоответ от почтового сервера. Такое возможно, например, если было отправлено письмо по несуществующему адресу. (Подробнее тут: https://en.wikipedia.org/wiki/Bounce_message)

 

Чтобы понять, что не работает, нужно посмотреть на лог, при таком хуке:

local dw = require 'drweb'
local rx = require 'drweb.regex'

local whitelist = dw.load_array('/opt/drweb.com/lists/whitemails.txt')
local blacklist = dw.load_array('/opt/drweb.com/lists/blackmails.txt')

function milter_hook(ctx)
  if regex.search(blacklist, ctx.from, regex.ignore_case) then
    dw.notice("'" .. ctx.from .. "'" .. ' is in blacklist')
    return {action='reject', code='541', text='blacklist'}
  else
    dw.notice("'" .. ctx.from .. "'" .. ' is NOT in blacklist')
  end

  return {action = 'accept'}
end

И указать на места, где неправильно происходит обработка from и соответствующие паттерны из blacklist.

Кстати, вот такая строка ".*\.sidex\.ru" в blacklist будет покрывать только поддомены sidex.ru и не будет работать для писем c sidex.ru, для этого нужно было бы указать просто "sidex\.ru"



#26 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 21 Март 2019 - 15:52

Последний комментарий понятен, я просто пробовал разные варианты.



#27 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 21 Март 2019 - 18:16

Получается вот такая штука,

 

Received: by smtp368.emlone.com id hiejeu2erpkk for <мой адрес>; Thu, 21 Mar 2019 14:59:55 +0000 (envelope-from <postman2067062@justeml.com>)
From: =?UTF-8?B?0KLRgNGD0LTQvtGD0YHRgtGA0L7QudGB?= =?UTF-8?B?0YLQstC+INC4INC60LDRgNGM0LXRgNCw?= <golovin@mkgk.ru>
 
У себя в почтовой программе я вижу что письмо от golovin@mkgk.ru а в логах сервера от postman2067062@justeml.com.
 
Тоесть я блокировал не тот домен.
Наверно по незнанию что можно делать такие подмены.


#28 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 22 Март 2019 - 09:45

Вот так клиент принял сообщение -

 

Message-ID: <89733A05B6624E4D9194DD647015223B@wlpbrass.ru>
Reply-To: =?windows-1251?B?yOLg7SDK4PDv7uI=?= <info@wlpbrass.ru>
From: =?windows-1251?B?yOLg7SDK4PDv7uI=?= <info@wlpbrass.ru>
 
Лог на сервере -
 
Mar 21 22:53:59 daemon postfix/smtpd[380]: connect from mail.wlpbrass.ru[91.239.215.114]
Mar 21 22:54:00 daemon drweb-maild[1971]: Milter client d7ed-87b0-26e7: Lua: Soobsheniye ot: info@wlpbrass.ru
 
В блек листе - 
 
wlpbrass\.ru
 
Не работает блокировка по домену получается.


#29 Aleksandra K.

Aleksandra K.

    Newbie

  • Dr.Web Staff
  • 33 Сообщений:

Отправлено 22 Март 2019 - 14:40

Приветствую.

 

Приложите хук сюда, на котором проверялась блокировка по домену?

 

Пробовали рекомендацию из https://forum.drweb.com/index.php?showtopic=331517&page=2#entry866248 :

 

if regex.search(blacklist, ctx.message.header.value('from').decoded, regex.ignore_case) then



#30 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 27 Март 2019 - 10:02

Работает вот такая конструкция.
 
local dw = require "drweb"
local regex = require "drweb.regex"
local whitelist = dw.load_array('/opt/drweb.com/lists/whitemails.txt')
local blacklist = dw.load_array('/opt/drweb.com/lists/blackmails.txt')
function milter_hook(ctx)
    -- Stop checks BLACKLIST
    if regex.search(blacklist, ctx.from, regex.ignore_case) then
        dw.notice("'" .. ctx.from .. "'" .. ' is in blacklist')
return {action='reject'}
    end
    -- Check if the message contains threats from specified categories, reject it if so
    if ctx.message.has_threat({category = {"known_virus", "virus_modification", "unknown_virus", "adware",
        "dialer", "joke", "riskware", "hacktool"}}) then
        dw.notice("Virus inside")
        return {action = 'reject'}
    else
dw.notice("'" .. ctx.from .. "'" .. ' is NOT in blacklist')
end
    -- Stop checks WHITELIST
if regex.match(whitelist, ctx.from, regex.ignore_case) then
        dw.notice("Whitelist")
return {action='accept'}
    end
    -- 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
    -- Check if the message contains URL threats from specified categories, reject it if so
    if ctx.message.has_url({category = {"infection_source", "cryptocurrency_mining_pools"}}) then
       dw.notice("URL threats")
       return {action = 'reject'}
    end
        -- 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
    -- Assign X-AntiVirus header
    ctx.modifier.add_header_field("X-AntiVirus", "Checked by Dr.Web [MailD version: ]")
    -- Accept the message with all scheduled transformations applied
   return {action = 'accept'}
end

Сообщение было изменено Konstantin Yudin: 27 Март 2019 - 13:43


#31 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 27 Март 2019 - 10:08

Скажите пожалуйста, если не затруднит, как написать такой вариант - 

 

если письмо идет с определенного IP то accept.

 

Спасибо!



#32 Denis G.

Denis G.

    Newbie

  • Dr.Web Staff
  • 17 Сообщений:

Отправлено 27 Март 2019 - 13:03

Например так:

-- вернуть accept, если ip равен 192.168.123.123
if ctx.sender.ip == dw.ip('192.168.123.123') then 
    return {action='accept'}
end

Где то сверху должна быть строчка local dw = require 'drweb', для того чтобы это работало.


Сообщение было изменено Denis G.: 27 Март 2019 - 13:05


#33 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 28 Март 2019 - 10:00

Спасибо!



#34 Aleksandra

Aleksandra

    VIP

  • Helpers
  • 2 187 Сообщений:

Отправлено 08 Апрель 2019 - 09:11

Вопрос появился на счет хидеров. Хотела добавить...

-- Assign X-AntiVirus header
    ctx.modifier.add_header_field("X-AntiVirus", "Checked by Dr.Web [MailD version: ]")

А откуда он возьмет версию?

 

 

 

 


Версия Сервера Dr.Web 12.00.0 (27-06-2019 05:00:00)
Linux 4.14.119-200.el7.x86_64 x86_64; ; glibc 2.17

#35 Boris Savelev

Boris Savelev

    Member

  • Dr.Web Staff
  • 152 Сообщений:

Отправлено 08 Апрель 2019 - 10:02

да, пока ее взять неоткуда. в хуке по умолчанию версия подставляется, но в измененном ее пока взять негде. Добавим в будущих версиях.


Сообщение было изменено Boris Savelev: 08 Апрель 2019 - 10:02


#36 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 24 Апрель 2019 - 15:30

Умные люди, в процессе эксплуатации возник еще вопрос. очень буду благодарен если дадите совет как написать конструкцию для следующих целей - 

 

необходимо проверять поле ctx.to на наличие адреса в белом списке, если там есть - пропускаем.

Сейчас есть конструкция для поля ctx.from но разница насколько я понимаю в типе полей, to - это array.

 

Вот такое сейчас рабоатет

-- Stop checks WHITELIST
if regex.search(whitelist, ctx.from, regex.ignore_case) then
        dw.notice("Whitelist")
return {action='accept'}
    end
 
Вот как тоже самое написать для ctx.to, в лоб если подменить не работает.


#37 Aleksandra

Aleksandra

    VIP

  • Helpers
  • 2 187 Сообщений:

Отправлено 24 Апрель 2019 - 15:47

Умные люди, в процессе эксплуатации возник еще вопрос. очень буду благодарен если дадите совет как написать конструкцию для следующих целей - 
 
необходимо проверять поле ctx.to на наличие адреса в белом списке, если там есть - пропускаем.
Сейчас есть конструкция для поля ctx.from но разница насколько я понимаю в типе полей, to - это array.

Два почтовых сервера, сложные конструкции и обвязки это зло. Настройте нормально postfix, большая часть проблем просто отпадет.
Версия Сервера Dr.Web 12.00.0 (27-06-2019 05:00:00)
Linux 4.14.119-200.el7.x86_64 x86_64; ; glibc 2.17

#38 Alexander.M

Alexander.M

    Newbie

  • Dr.Web Staff
  • 4 Сообщений:

Отправлено 24 Апрель 2019 - 16:22

 

Умные люди, в процессе эксплуатации возник еще вопрос. очень буду благодарен если дадите совет как написать конструкцию для следующих целей - 

 

необходимо проверять поле ctx.to на наличие адреса в белом списке, если там есть - пропускаем.

Сейчас есть конструкция для поля ctx.from но разница насколько я понимаю в типе полей, to - это array.

 

Вот такое сейчас рабоатет

-- Stop checks WHITELIST
if regex.search(whitelist, ctx.from, regex.ignore_case) then
        dw.notice("Whitelist")
return {action='accept'}
    end
 
Вот как тоже самое написать для ctx.to, в лоб если подменить не работает.

 

 

обойти циклом массив

for _, to in ipairs(ctx.to) do
    if regex.search(whitelist, to, regex.ignore_case) then
        dw.notice("Whitelist")
        return {action='accept'}
    end
end


Сообщение было изменено Alexander.M: 24 Апрель 2019 - 16:22


#39 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 25 Апрель 2019 - 10:07

 

Умные люди, в процессе эксплуатации возник еще вопрос. очень буду благодарен если дадите совет как написать конструкцию для следующих целей - 
 
необходимо проверять поле ctx.to на наличие адреса в белом списке, если там есть - пропускаем.
Сейчас есть конструкция для поля ctx.from но разница насколько я понимаю в типе полей, to - это array.

Два почтовых сервера, сложные конструкции и обвязки это зло. Настройте нормально postfix, большая часть проблем просто отпадет.

 

не пойму причем здесь настройка постфикса и антиспам? Если письмо режет антиспам дрвеба как на него повлиять постфиксом?



#40 radionuk2

radionuk2

    Newbie

  • Posters
  • 22 Сообщений:

Отправлено 25 Апрель 2019 - 10:55

 

 

Умные люди, в процессе эксплуатации возник еще вопрос. очень буду благодарен если дадите совет как написать конструкцию для следующих целей - 

 

необходимо проверять поле ctx.to на наличие адреса в белом списке, если там есть - пропускаем.

Сейчас есть конструкция для поля ctx.from но разница насколько я понимаю в типе полей, to - это array.

 

Вот такое сейчас рабоатет

-- Stop checks WHITELIST
if regex.search(whitelist, ctx.from, regex.ignore_case) then
        dw.notice("Whitelist")
return {action='accept'}
    end
 
Вот как тоже самое написать для ctx.to, в лоб если подменить не работает.

 

 

обойти циклом массив

for _, to in ipairs(ctx.to) do
    if regex.search(whitelist, to, regex.ignore_case) then
        dw.notice("Whitelist")
        return {action='accept'}
    end
end

 

Спасибо! Применил на боевой конфигурации, тестируем, на первый взгляд все работает!




Читают тему: 0

0 пользователей, 0 гостей, 0 скрытых