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)
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
Проверьте, подходят ли параметры файла конфигурации SpamAssassins remove_header
или clear_headers
так, как вы хотите.
Принятый ответ, возможно, был лучшим, что вы могли сделать в 2012, или с общедоступными версиями exim в 2012 году, но в настоящее время exim действительно имеет директиву remove_header
, которая может использоваться в ACL. Он был добавлен с версией 4.82 :
- Новый модификатор ACL «remove_header» может удалять заголовки до того, как сообщение получит обрабатывается маршрутизаторами / транспортами.