Jump to content


Photo
* * * * * 2 votes

Lua помощь


  • Please log in to reply
97 replies to this topic

#41 Denis G.

Denis G.

    Newbie

  • Members
  • 27 Posts:

Posted 25 April 2019 - 11:05

Можно еще так:

if ctx.to.search(whitelist) then
    return {action = 'accept'}
end


#42 Aleksandra

Aleksandra

    VIP

  • Helpers
  • 3,575 Posts:

Posted 25 April 2019 - 11:42

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

Чтобы изначально не принимать всякий спам _ttps://www.linuxbabe.com/mail-server/block-email-spam-postfix

При таких настройках, проблема со спамом практически отпадает и не нужно будет сложные конструкции на lua городить.

Мой кусок конфига:
 

virtual_alias_maps = hash:/etc/postfix/virtual

message_size_limit = 15728640
mailbox_size_limit = 314572800
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = check_sender_access texthash:/etc/postfix/restricted_senders,permit_mynetworks,check_client_access cidr:/etc/postfix/mx_access,permit_auth_destination,permit_sasl_aut
henticated,reject
smtpd_restriction_classes = local_only
local_only = check_recipient_access texthash:/etc/postfix/local_domains, reject

smtpd_sender_restrictions = hash:/etc/postfix/access
smtpd_client_restrictions = check_client_access texthash:/etc/postfix/client_access,reject_unknown_reverse_client_hostname
smtpd_helo_restrictions = reject_non_fqdn_helo_hostname
smtpd_helo_required = yes

smtpd_milters = inet:127.0.0.1:3001

masquerade_domains = mydomain

Мужчины мне ничего не должны, именно поэтому я легко их отпускаю.

#43 radionuk2

radionuk2

    Newbie

  • Posters
  • 29 Posts:

Posted 25 April 2019 - 12:21

 

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

Чтобы изначально не принимать всякий спам _ttps://www.linuxbabe.com/mail-server/block-email-spam-postfix

При таких настройках, проблема со спамом практически отпадает и не нужно будет сложные конструкции на lua городить.

Мой кусок конфига:
 

virtual_alias_maps = hash:/etc/postfix/virtual

message_size_limit = 15728640
mailbox_size_limit = 314572800
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = check_sender_access texthash:/etc/postfix/restricted_senders,permit_mynetworks,check_client_access cidr:/etc/postfix/mx_access,permit_auth_destination,permit_sasl_aut
henticated,reject
smtpd_restriction_classes = local_only
local_only = check_recipient_access texthash:/etc/postfix/local_domains, reject

smtpd_sender_restrictions = hash:/etc/postfix/access
smtpd_client_restrictions = check_client_access texthash:/etc/postfix/client_access,reject_unknown_reverse_client_hostname
smtpd_helo_restrictions = reject_non_fqdn_helo_hostname
smtpd_helo_required = yes

smtpd_milters = inet:127.0.0.1:3001

masquerade_domains = mydomain

Тоесть исходя из Вашего ответа при применении вышеописанных настроек (а они у меня сделаны) СПАМ вообще не будет приходить? Так я понимаю Ваш ответ? Тоесть антиспам от стороннего производителя вообще нет смысла ставить?


 

Можно еще так:

if ctx.to.search(whitelist) then
    return {action = 'accept'}
end

Спасибо!



#44 Aleksandra

Aleksandra

    VIP

  • Helpers
  • 3,575 Posts:

Posted 25 April 2019 - 13:23

Тоесть исходя из Вашего ответа при применении вышеописанных настроек (а они у меня сделаны) СПАМ вообще не будет приходить? Так я понимаю Ваш ответ? Тоесть антиспам от стороннего производителя вообще нет смысла ставить?

Да, спам практически не проходит. Одно письмо в день, не больше. От стороннего смысла нет, так как есть spamassassin.
Мужчины мне ничего не должны, именно поэтому я легко их отпускаю.

#45 radionuk2

radionuk2

    Newbie

  • Posters
  • 29 Posts:

Posted 25 April 2019 - 16:43

 

Тоесть исходя из Вашего ответа при применении вышеописанных настроек (а они у меня сделаны) СПАМ вообще не будет приходить? Так я понимаю Ваш ответ? Тоесть антиспам от стороннего производителя вообще нет смысла ставить?

Да, спам практически не проходит. Одно письмо в день, не больше. От стороннего смысла нет, так как есть spamassassin.

 

Позволю себе не согласиться, объем спама во многом зависит от рода деятельности компании и кол-ва пользователей. У меня стандартные настройки убирают только порядка 60 процентов спама, а вот в комплексе с ДРВЕБОМ примерно 95 процентов.


Edited by radionuk2, 25 April 2019 - 16:44.


#46 evgen-20

evgen-20

    Newbie

  • Posters
  • 5 Posts:

Posted 06 May 2019 - 18:00

Всем привет!

 

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

 

Делал так:

return {action='accept', deleted_recipients=ctx.to, added_recipients={'spam@company.ru'}}

Но в итоге, получателю тоже приходит письмо.



#47 Denis G.

Denis G.

    Newbie

  • Members
  • 27 Posts:

Posted 07 May 2019 - 14:44

Здравствуйте!

 

Конкретно этот функционал сейчас не всегда себя корректно ведет, в бете должно быть поправлено.



#48 evgen-20

evgen-20

    Newbie

  • Posters
  • 5 Posts:

Posted 07 May 2019 - 16:55

Здравствуйте!

 

Конкретно этот функционал сейчас не всегда себя корректно ведет, в бете должно быть поправлено.

 

На бету в продакшене побаиваюсь переходить... Надеюсь в ближайшее время зарелизится...



#49 evgen-20

evgen-20

    Newbie

  • Posters
  • 5 Posts:

Posted 07 May 2019 - 18:52

И еще вопрос, можно ли как-то в лог писать не только отправителя, но и получателя?

Я так понимаю, что из-за того, что ctx.to является массивом, его так просто не запихать. Может есть еще какой-то вариант?



#50 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5,868 Posts:

Posted 07 May 2019 - 19:08

В лог-то Вы вольны писать что вздумается.

Хоть tostring(ctx.to), хоть что-либо в духе

for _, i in pairs(ctx.to) do
  str = str .. (#str and ", " or "") .. i
done

Семь раз отрежь – один раз проверь

#51 evgen-20

evgen-20

    Newbie

  • Posters
  • 5 Posts:

Posted 08 May 2019 - 16:31

Хоть tostring(ctx.to), хоть что-либо в духе

 

 

Попробовал так, получил

	str = tostring(ctx.to)
	if regex.search(whitelist, ctx.from, regex.ignore_case) then
        dw.notice("'" .. ctx.from .. "'" .. str .. " is IN whitelist" )
	return {action='accept'}
        end


2019-May-08 16:27:17 [20881] Notice: Milter client 897a-3716-2151: Lua: '123456789@yandex.ru'table: 0x5631a5d6bb90 is IN whitelist

p.s. ссори не силен в LUA совсем(



#52 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5,868 Posts:

Posted 08 May 2019 - 17:04

Хм, значит tostring только ссылку на таблицу пишет, этого я не помню. Тогда остаётся второй вариант с ручным форматированием таблицы.


Семь раз отрежь – один раз проверь

#53 Denis G.

Denis G.

    Newbie

  • Members
  • 27 Posts:

Posted 08 May 2019 - 18:33

Есть встроенная функция, которая умеет конкатенировать строковые значения из таблицы. Сейчас не могу проверить, но это должно работать:
 

dw.notice('Recipients: ' .. table.concat(ctx.to, ', '))


#54 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5,868 Posts:

Posted 08 May 2019 - 18:37

Точно, эту я проглядел. На вид всё верно.


Семь раз отрежь – один раз проверь

#55 evgen-20

evgen-20

    Newbie

  • Posters
  • 5 Posts:

Posted 13 May 2019 - 10:38

 

Есть встроенная функция, которая умеет конкатенировать строковые значения из таблицы. Сейчас не могу проверить, но это должно работать:
 

dw.notice('Recipients: ' .. table.concat(ctx.to, ', '))

 

Спасибо! Сработало!

А откуда вы берете эту информацию? В документации что-то не нашел ничего( Или это чисто синтаксис LUA?

 

И еще вопрос, а как-то можно добавлять или отнимать балы у писем, есть ли такая функция?



#56 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5,868 Posts:

Posted 13 May 2019 - 11:12

А откуда вы берете эту информацию? В документации что-то не нашел ничего( Или это чисто синтаксис LUA?

Отсюда.

Вот конкретно про table.concat.


Семь раз отрежь – один раз проверь

#57 Denis G.

Denis G.

    Newbie

  • Members
  • 27 Posts:

Posted 13 May 2019 - 11:17

Это библиотека, поставляемая вместе с Lua, подробнее можно ознакомиться тут (либо в оригинале тут).

Баллами, которые доступны в таблице Spam (ctx.message.spam.score и ctx.message.spam.normalized_score), управлять из Lua нельзя. В бете есть возможность управлять баллами с помощью флагов компонента drweb-ase. 

Главное то, что вы сами можете решать как поступать с баллами из отчета о проверке на спам. Для этого и есть Lua.



#58 Boris Savelev

Boris Savelev

    Member

  • Beta Testers
  • 154 Posts:

Posted 13 May 2019 - 13:38

баллы это просто число. Их можно копить и суммировать в отдельной переменной и решения принимать уже по суммированному.


telegram: @bsavelev


#59 Hedgehog_57

Hedgehog_57

    Newbie

  • Posters
  • 46 Posts:

Posted 09 January 2020 - 18:24

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

 

Столкнулись со следующей проблемой. Не можем принять почту со следующим диагнозом.

 

Deferred: host ip.ip.ip.ip[ip.ip.ip.ip] said: 451 4.7.1 Service unavailable - try again later (in reply to end of DATA command)  

 

Это так себя ведет milter.

 

Установленный пакет - drweb-maild-11.1.5-1911070858linux.x86_64

 

Через него спотыкаются письма с длинными адресами. Вот пример ошибки из лога maild.

 

Jan  9 17:22:25 antivirus1 drweb-maild[65196]: Milter client 1a1c-f0fd-c04e: Error while executing milter hook for message ID <884943114.1309626123.1578579737593.JavaMail.mktmail@sjmas05.marketo.org>: /etc/opt/drweb.com/milterhook.lua:49: Cannot call regex function: The complexity of matching the regular expression exceeded predefined bounds.  Try refactoring the regular expression to make each choice made by the state machine unambiguous.  This exception is thrown to prevent "eternal" matches that take an indefinite period time to locate.
 
Это кусок скрипта, на котором оно спотыкается
```
local whitelist_from = dw.load_array('/etc/opt/drweb.com/lists/white-from.regex')
    if regex.search(ts_from, ctx.from, regex.ignore_case) or
49-->>       regex.search(whitelist_from, ctx.from, regex.ignore_case) then
 
        dw.notice("'" .. ctx.from .. "'" .. ' is in whitelist or local')
        return {action='accept'}
    end
```
В файле правил строки вида
 
```
(.*\.)*ibm\.com
devnull@yandex\.ru
websoft\.ru
```


#60 Dmitry Mikhirev

Dmitry Mikhirev

    Advanced Member

  • Dr.Web Staff
  • 591 Posts:

Posted 09 January 2020 - 18:36

Скорее всего ругается на эту регулярку:

(.*\.)*ibm\.com

Я бы попробовал переписать её как-нибудь так:

@([a-z0-9-]+\.)*ibm\.com$

Не проверял, ничего не гарантирую.




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users