Разделите заголовки SpamAssassin перед обработкой

       ISP
        |
        |
        | assumes that this link is not part
        | of x.x.x.160 /27
        |
        |
    [Router]  This router will need three routed ports
   /.161   \ .177
  /         \
 [Switch] [Switch]
  |    |    |   |
[S1] [S2] [S3] [S4] (etc)
3
задан 28 January 2012 в 02:02
3 ответа

Exim для cPanel использует vfilters, хранящиеся в / etc / vfilters, и полагается на заголовок X-Spam-Bar. Другие системы могут использовать X-Spam-Flag-Status или Score, чтобы определить, сохранять ли сообщение в папке входящих сообщений, в папке для спама или удалять его. К сожалению, vfilter будет использовать самое первое совпадение, что и составляет суть проблемы.


Найдено устаревшее решение http://wiki.exim.org/ExiscanExamples#Replacing_foreign_Spamassassin_headers_with_local_ones

Добавить где-нибудь в ACL предупреждать spam = exiscan: true установить acl_m0 = ($ spam_bar) $ spam_score set acl_m1 = $ spam_report

Это установит переменные ACL соответствующим образом для следующей обработки в системном фильтре:

Добавить в системный фильтр:

if first_delivery then
  # ...

  headers remove X-Spam-Score:X-Spam-Report:X-Spam-Checker-Version:X-Spam-Status:X-Spam-Level
  if $acl_m2 is not ""dd then
    headers add "X-Spam-Score: $acl_m0"
    headers add "X-Spam-Report: $acl_m1"
  endif
endif

В cPanel системным фильтром является / etc / cpanel_exim_system_filter, а переменные acl_mX - разные, так что давайте разберемся с ними. Добавьте это в конец cpanel_exim_filters

# work out our acl variables!
if first_delivery then
    headers add "X-acl-m0: $acl_m0"
    headers add "X-acl-m1: $acl_m1"
    headers add "X-acl-m2: $acl_m2"
    headers add "X-acl-m3: $acl_m3"
    headers add "X-acl-m4: $acl_m4"
    headers add "X-acl-m5: $acl_m5"
    headers add "X-acl-m6: $acl_m6"
    headers add "X-acl-m7: $acl_m7"
end

--- сделал это и получил: X-acl-m1: пользователь1 X-acl-m2: 1 X-acl-m3: X-acl-m4: X-acl-m5: X-acl-m6: X-acl-m7:

Итак, я нахожу раздел exim.conf, который добавляет заголовки, и вижу все переменные $ spam. Интересно, перенесутся ли они? Давайте выясним.

headers add "X-Test-Spam-Subject: ***SPAM*** $h_subject"
headers add "X-Test-Spam-Score:$spam_score"
headers add "X-Test-Spam-Score-Int: $spam_score_int"
headers add "X-Test-Spam-Bar: $spam_bar"
headers add "X-Test-Spam-Report: $spam_report"

Итак, $ spam_score_int переносится вместе с $ h_subject, но не spam_bar, что очень важно

X-Test-Spam-Subject: ***SPAM*** test
X-Test-Spam-Status: 
X-Test-Spam-Score: 33
X-Test-Spam-Bar:
X-Test-Spam-Report:

Но ... я понял, что заголовки переносятся, что может работать

headers add "X-Test-Spam-Bar: $h_X-Spam-Bar"

, в результате:

X-Test-Spam-Bar: +
+++

Итак, заголовки $ h содержат как полученные, так и добавленные заголовки.

Решение?

Добавьте пользовательские фильтры спама в exim.conf, а затем замените их в cpanel_exim_filter

log_message = "SpamAssassin as ${acl_m1} detected message as spam ($spam_score)"
add_header = X-989Spam-Subject: ***SPAM*** $h_subject
add_header = X-989Spam-Status: Yes, score=$spam_score
add_header = X-989Spam-Score: $spam_score_int
add_header = X-989Spam-Bar: $spam_bar
add_header = X-Spam-Report: $spam_report
add_header = X-989Spam-Flag: YES

add_header = X-989Spam-Status: No, score=$spam_score
add_header = X-989Spam-Score: $spam_score_int
add_header = X-989Spam-Bar: $spam_bar
add_header = X-Ham-Report: $spam_report
add_header = X-989Spam-Flag: NO
log_message = "SpamAssassin as ${acl_m1} detected message as NOT spam ($spam_score)"

Хорошо, теперь, чтобы сделать это более постоянным. Сначала скопируйте ваш фильтр cpanel_exim_system:

cp /etc/cpanel_exim_system_filter /etc/custom_exim_system_filter

Войдите в WHM Main >> Service Configuration >> Exim Configuration Editor и нажмите Advanced Editor.

Прокрутите вниз и измените раздел заголовка спама, как показано ниже. Обратите внимание, что вы просто меняете заголовки X-Spam на заголовки X-989Spam (вы, конечно, можете использовать любое собственное имя, которое вам нравится, если ваши custom-exim-system-filters совпадают. Поскольку файл конфигурации может меняться со временем, сделайте убедитесь, что вы изменяете только строки add_header.

add_header = X-989Spam-Subject: ***SPAM*** $h_subject
add_header = X-989Spam-Status: Yes, score=$spam_score
add_header = X-989Spam-Score: $spam_score_int
add_header = X-989Spam-Bar: $spam_bar
add_header = X-Spam-Report: $spam_report
add_header = X-989Spam-Flag: YES

- и -

add_header = X-989Spam-Status: No, score=$spam_score
add_header = X-989Spam-Score: $spam_score_int
add_header = X-989Spam-Bar: $spam_bar
add_header = X-Ham-Report: $spam_report
add_header = X-989Spam-Flag: NO

Сохраните вашу конфигурацию и дождитесь обновления WHM.

Вернитесь в Главное меню >> Конфигурация службы >> Редактор конфигурации Exim >> Фильтры

Измените файл системного фильтра, чтобы он указывал на / etc / custom_exim_system_filter

1
ответ дан 3 December 2019 в 07:10

Проверьте, подходят ли параметры файла конфигурации SpamAssassins remove_header или clear_headers так, как вы хотите.

1
ответ дан 3 December 2019 в 07:10

Принятый ответ, возможно, был лучшим, что вы могли сделать в 2012, или с общедоступными версиями exim в 2012 году, но в настоящее время exim действительно имеет директиву remove_header , которая может использоваться в ACL. Он был добавлен с версией 4.82 :

  1. Новый модификатор ACL «remove_header» может удалять заголовки до того, как сообщение получит обрабатывается маршрутизаторами / транспортами.
0
ответ дан 3 December 2019 в 07:10

Теги

Похожие вопросы