Страница 1 из 1

В Exim 4.88 не будет demime

Добавлено: 2016-06-15 0:35:05
xM
Из Changelog версии 4.88
JH/02 The obsolete acl condition "demime" is removed (finally, after ten
years of being deprecated). The replacements are the ACLs
acl_smtp_mime and acl_not_smtp_mime
Рекомендую обратить внимание на свои конфиги и подумать как использовать вместо старого доброго demime соответствующее acl.

В Exim 4.88 не будет demime

Добавлено: 2016-06-15 16:02:16
xM
Хм, очень интересно.
Я стал смотреть исходники Exim на предмет реализации альтернативы старому demime и обнаружил в mime.c пару недокументированных (!) переменных, которые можно использовать взамен прежней, а именно $mime_anomaly_level (аналог $demime_errorlevel) и $mime_anomaly_text (аналог $demime_reason).
$mime_anomaly_level имеет три уровня от 0 до 2 (старый имел от 1 до 3).
Собственно, в этой связи реализация нового ACL с MIME представляется тривиальной.

В Exim 4.88 не будет demime

Добавлено: 2016-06-18 20:52:58
Alex Keda
ну а собсно - какая-то религия запрещает использовать то что разработчики и рекомендуют:
xM писал(а): The replacements are the ACLs
acl_smtp_mime and acl_not_smtp_mime
??

В Exim 4.88 не будет demime

Добавлено: 2016-06-18 22:09:56
xM
Дык никакая. Речь о том, чтобы старые конфиги подрихтовали "не дожидаясь перитонита".

В Exim 4.88 не будет demime

Добавлено: 2016-06-18 22:31:57
Alex Keda
один фиг - вначале дождёмся =))

В Exim 4.88 не будет demime

Добавлено: 2016-06-18 22:41:05
xM
Alex Keda писал(а): один фиг - вначале дождёмся )
Ждём поклёвки жаренного петуха в пятую точку по старинному русскому обычаю. :ROFL:
Но я не русский, так то уже всё пофиксил 8)

В Exim 4.88 не будет demime

Добавлено: 2016-06-18 22:52:55
Alex Keda
нету такой национальности.
русский - это состояние души.

у тебя оно не соответствует званию "русского" =)
--
З.Ы. выложи чтоле замену стандартным народным строкам

Код: Выделить всё

  deny	message = contains $found_extension file (blacklisted).
  	demime  = com:vbs:bat:pif:scr:exe


  deny  message = This message contains a MIME error ($demime_reason)
        demime = *
        condition = ${if >{$demime_errorlevel}{2}{1}{0}}

В Exim 4.88 не будет demime

Добавлено: 2016-06-18 23:08:54
xM
Да нет проблем.
Но я по расширениям не баню, разве что. Но это легко при желании.
Пока так нарисовал для опытов:

Код: Выделить всё

...
acl_smtp_rcpt           = acl_check_rcpt
acl_smtp_dkim           = acl_check_dkim
acl_smtp_mime           = acl_check_mime
acl_smtp_data           = acl_check_data
...

begin acl

acl_check_rcpt:
...

acl_check_dkim:
...

# -- by xM 2016-06-14
acl_check_mime:

  accept hosts          = :

  # --- accept messages for abuse / postmaster
  accept condition      = $acl_m_pm

  deny   decode         = default
         condition      = ${if >{$mime_anomaly_level}{1}}
         message        = This message contains a MIME error ($mime_anomaly_text)

  # --- Check MIME boundary delimiter according RFC2046
  deny   condition      = ${if match{$mime_boundary}{\N( |\t)$\N}}
         message        = MIME boundary delimiter ends with whitespace

  deny   condition      = ${if >{${strlen:$mime_boundary}}{70}}
         message        = Too long MIME boundary delimiter

  accept authenticated  = *

  warn  !hosts          = +relay_from_hosts
         condition      = ${if >{$mime_anomaly_level}{0}}
         set acl_c0     = ${eval:$acl_c0+20}
         set acl_c1     = DEMIME(20) found MIME error ($mime_anomaly_text); $acl_c1

  accept

acl_check_data:
...
Если хочется по расширениям, то где-то после decode = default можно типа такого написать:

Код: Выделить всё

  deny   condition      = ${if match{${lc:$mime_filename}}{\N(\.com|\.vbs|\.bat|\.pif|\.scr|\.exe)$\N}}
         message = Forbidden file type in attachment found

В Exim 4.88 не будет demime

Добавлено: 2017-06-30 16:16:39
sergio
спасибо!