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

Помогите спам письма кидать в другой ящик

Добавлено: 2009-09-30 16:14:54
armix
Помогите изменить строку file = /var/mail/$local_part так, чтобы письма, которые содержат в Subject слово ****SPAM**** кидалось не в
$local_part а в ящик spam ??????

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

local_delivery:
  driver = appendfile
  file = /var/mail/$local_part
  delivery_date_add
  envelope_to_add
  return_path_add
  group = mail
  mode = 0660

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-01 8:00:28
Alex Keda
роутер рисуй с условием

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-01 9:48:01
armix
lissyara писал(а):роутер рисуй с условием
Как записать само условие?

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-01 13:04:31
Laa
Примерно так в роутере:

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

condition             = ${if >={$spam_score_int}{SPAM_SCORE_MAX}}

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-01 14:14:07
armix
Laa писал(а):Примерно так в роутере:

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

condition             = ${if >={$spam_score_int}{SPAM_SCORE_MAX}}

Вот мой рутер

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

localuser:
  driver = accept
  check_local_user  
# local_part_suffix = +* : -*
# local_part_suffix_optional
  transport = local_delivery
  cannot_route_message = Unknown user

Напишите плиз, как сделать так, чтобы письма которые содержат в Subject слово ****SPAM**** кидалось не в
local_delivery а local_delivery_spam ???

У меня никак не получается, возможно я пишу неправильный синтаксис, помогите!

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-01 15:45:42
Laa
armix писал(а):Вот мой рутер

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

localuser:
  driver = accept
  check_local_user  
# local_part_suffix = +* : -*
# local_part_suffix_optional
  transport = local_delivery
  cannot_route_message = Unknown user
Напишите плиз, как сделать так, чтобы письма которые содержат в Subject слово ****SPAM**** кидалось не в
local_delivery а local_delivery_spam ???

У меня никак не получается, возможно я пишу неправильный синтаксис, помогите!
Ну примерно так (сам не тестировал):

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

localuser_spam:
  driver = accept
  check_local_user  
  transport = local_delivery_spam
  cannot_route_message = Unknown user
  condition             = ${if match{$h_subject}{\N****SPAM****.*\N}}

localuser:
...

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-02 11:18:59
armix
Laa писал(а):
armix писал(а):Вот мой рутер

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

localuser:
  driver = accept
  check_local_user  
# local_part_suffix = +* : -*
# local_part_suffix_optional
  transport = local_delivery
  cannot_route_message = Unknown user
Напишите плиз, как сделать так, чтобы письма которые содержат в Subject слово ****SPAM**** кидалось не в
local_delivery а local_delivery_spam ???

У меня никак не получается, возможно я пишу неправильный синтаксис, помогите!
Ну примерно так (сам не тестировал):

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

localuser_spam:
  driver = accept
  check_local_user  
  transport = local_delivery_spam
  cannot_route_message = Unknown user
  condition             = ${if match{$h_subject}{\N****SPAM****.*\N}}

localuser:
...

Ваш пример не работает! Я упростил условие, как сделать так, чтобы письма которые содержат в Subject слово SPAM кидалось не в
local_delivery а local_delivery_spam ???

вот что я написал

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

localuser_spam:
  driver = accept
  check_local_user  
# local_part_suffix = +* : -*
# local_part_suffix_optional
  transport = local_delivery_spam
  cannot_route_message = Unknown user
  condition = ${if match{$header_Subject}{\N^SPAM.*\N}{yes}{no}}

localuser:
  driver = accept
  check_local_user  
# local_part_suffix = +* : -*
# local_part_suffix_optional
  transport = local_delivery
  cannot_route_message = Unknown user


######################################################################
#                      TRANSPORTS CONFIGURATION                      #
######################################################################
#                       ORDER DOES NOT MATTER                        #
#     Only one appropriate transport is called for each delivery.    #
######################################################################

# A transport is used only when referenced from a router that successfully
# handles an address.

begin transports


# This transport is used for delivering messages over SMTP connections.

remote_smtp:
  driver = smtp

# This transport invokes procmail to deliver mail
procmail:
  driver = pipe
  command = "/usr/bin/procmail -d $local_part"
  return_path_add
  delivery_date_add
  envelope_to_add
  user = $local_part
  initgroups
  return_output

# This transport is used for local delivery to user mailboxes in traditional
# BSD mailbox format. By default it will be run under the uid and gid of the
# local user, and requires the sticky bit to be set on the /var/mail directory.
# Some systems use the alternative approach of running mail deliveries under a
# particular group instead of using the sticky bit. The commented options below
# show how this can be done.

local_delivery:
  driver = appendfile
  file = /var/mail/$local_part
  delivery_date_add
  envelope_to_add
  return_path_add
  group = mail
  mode = 0660


local_delivery_spam:
  driver = appendfile
  file = /var/mail/spam_$local_part
  delivery_date_add
  envelope_to_add
  return_path_add
  group = mail
  mode = 0660

Все равно все письма идут в local_delivery, и со словом SPAM в теме и без него!
Что делать?

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-02 12:53:39
schizoid
у мну не роутом. а system-filter

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

# Спам

#logwrite "EXIM FILTER: debug - digit in variable acl_m0 = $acl_m0 (before)"
# Проверяем содержимое переменной про спам (содержит ли цифры)
if $acl_m0 matches ^\\d+
then
#logwrite "EXIM FILTER: debug - digit in variable acl_m0 = $acl_m0 (after first if)"
        # Строим новую тему письма - если спам
        # Проверяем содержимое переменной со счётчиком спамерских очков.
        # На данный момент считаем - что если 50 и более - это спам.

        # Добавляем заголовки с объяснением происходящего
        headers add "X-Spam-Description: if spam count > 50 - this is spam"
        headers add "X-Spam-Count: $acl_m0"
                                                                                                                                                     if $acl_m0 is above 49
        then
                headers add "Old-Subject: $h_subject:"
                headers remove "Subject"
                headers add "Subject: (*** SPAM ***) $h_old-subject:"
                headers add "X-Spam: YES"                                                                                                                    # Старый заголовок оставляем, на всякий случай
                #headers remove "Old-Subject"                                                                                                                deliver spam@my.domen.com
                logwrite "$tod_log EXIM FILTER: Spam count = $acl_m0 ; Added SPAM header. FORWARD -> spam@my.domen.com"
                seen finish
        endif
# закрываем проверку в письме
endif
можете как пример взять и под себе поправить

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-02 13:18:47
armix
schizoid писал(а):у мну не роутом. а system-filter

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

# Спам

#logwrite "EXIM FILTER: debug - digit in variable acl_m0 = $acl_m0 (before)"
# Проверяем содержимое переменной про спам (содержит ли цифры)
if $acl_m0 matches ^\\d+
then
#logwrite "EXIM FILTER: debug - digit in variable acl_m0 = $acl_m0 (after first if)"
        # Строим новую тему письма - если спам
        # Проверяем содержимое переменной со счётчиком спамерских очков.
        # На данный момент считаем - что если 50 и более - это спам.

        # Добавляем заголовки с объяснением происходящего
        headers add "X-Spam-Description: if spam count > 50 - this is spam"
        headers add "X-Spam-Count: $acl_m0"
                                                                                                                                                     if $acl_m0 is above 49
        then
                headers add "Old-Subject: $h_subject:"
                headers remove "Subject"
                headers add "Subject: (*** SPAM ***) $h_old-subject:"
                headers add "X-Spam: YES"                                                                                                                    # Старый заголовок оставляем, на всякий случай
                #headers remove "Old-Subject"                                                                                                                deliver spam@my.domen.com
                logwrite "$tod_log EXIM FILTER: Spam count = $acl_m0 ; Added SPAM header. FORWARD -> spam@my.domen.com"
                seen finish
        endif
# закрываем проверку в письме
endif
можете как пример взять и под себе поправить

А где это писать надо, прямо в exim.conf ?

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-02 15:31:37
Laa
armix писал(а): Ваш пример не работает! Я упростил условие, как сделать так, чтобы письма которые содержат в Subject слово SPAM кидалось не в
local_delivery а local_delivery_spam ???

вот что я написал

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

localuser_spam:
  driver = accept
  check_local_user  
# local_part_suffix = +* : -*
# local_part_suffix_optional
  transport = local_delivery_spam
  cannot_route_message = Unknown user
  condition = ${if match{$header_Subject}{\N^SPAM.*\N}{yes}{no}}
...
Все равно все письма идут в local_delivery, и со словом SPAM в теме и без него!
Что делать?
Ну попробуй взять в руки exim -bh и в режимах отладки понять почему не срабатывает условие.
Уверен, все получится.

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-02 17:21:45
schizoid
в главном файле ексима описать

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

system_filter         = /usr/local/etc/exim/filters/system-filter
далее создать файл /usr/local/etc/exim/filters/system-filter и туда вписать то, что писал выше

Re: Помогите спам письма кидать в другой ящик

Добавлено: 2009-10-03 12:14:15
armix
Уже сделал на основе procmail, легко и просто!