Помогите с правилом!

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-09 14:38:21

Народ начал замечать, что много спама приходит от правильных доменов типа yandex.ru и rambler.ru но в заголовках Return-path: стоит адрес не тот что у отправителя. Логично предположить что нормальные почтовики вставляют везде один адрес, поэтому решил написать правило для ексима. Я в этом не силен так что вот что получилось, подскажите если что не так или подход не верен.

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

deny message = "From and Return do not matches! SPAM!"
        condition = ${if !eq{$return_path}{$sender_address}{yes}{no}
        hosts = !127.0.0.1 : !localhost : *
И еще хотел заблокировать почту с одноклассников. Вот правило:

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

deny message = "Odnoklassniki.ru not at WORK! Bye!"
         condition = ${if match{$sender_address_domain}{odnoklassniki.ru}{yes}{no}}
         hosts = !127.0.0.1 : !localhost : *

FreeBSD 7.0-RELEASE-p11
Exim version 4.69
mysql-server-5.0.77_1
dovecot-1.1.11

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: Помогите с правилом!

Непрочитанное сообщение Laa » 2009-07-10 12:42:10

А сколько у вас было срабатываний на проверке $return_path ?
Сделайте acl с warn и понаблюдайте. Вреда никакого, зато можно понять смысл.

Вопрос про одноклассников не понял. :oops:
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Re: Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-10 15:37:20

Ну вот писем с return_path приходит достаточно чтобы обращать на них внимание......на мой ящик идет около 50 в день. Причем у меня стоит спамооборона, которая с удовольствием пропускает письма, т.к. домен отправителя в белом списке.
Про одноклассников был не вопрос. Это просто пример правила. :smile:

pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Re: Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-20 13:30:54

Народ правило из первого поста не работает! Я уже и второй вариант написал но и оно не отрабатывает (

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

    warn    log_message = "My rule! It works!"
            condition = ${if !eq{${lc:$h_return-path:}}{${lc:$h_to:}}{yes}{no}}
            hosts = !127.0.0.1 : !localhost : *
            add_header = X-ACL-Warn: warnings

Вот заголовки письма которое надо метить:

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

Return-path: <backbites621@gmail.com>
Envelope-to: grajdan@pgp.penza.com.ru
Delivery-date: Mon, 20 Jul 2009 14:20:43 +0400
Received: from localhost ([127.0.0.1] helo=pgp.penza.com.ru)
        by pgp.penza.com.ru with esmtp (Exim 4.69 (FreeBSD))
        (envelope-from <backbites621@gmail.com>)
        id 1MSpz9-000BQG-0G
        for grajdan@pgp.penza.com.ru; Mon, 20 Jul 2009 14:20:43 +0400
X-Spam-Ystatus:   hits=-1.8  R4621
!!!тут очки спамообороны!!!
X-Spam-Flag: DLVR
X-Spam-Yversion: Spamooborona-2.3
Received: from pgp.penza.com.ru (pgp.penza.com.ru [127.0.0.1]) 
        by mx.penzagp.ru (Spamooborona SMTP proxy); Mon, 20 Jul 2009 14:20:43 +0400 (MSD)
Received: from [123.22.8.252]
        by pgp.penza.com.ru with esmtp (Exim 4.69 (FreeBSD))
        (envelope-from <backbites621@gmail.com>)
        id 1MSpz7-000BPr-4B
        for grajdan@pgp.penza.com.ru; Mon, 20 Jul 2009 14:20:42 +0400
From: =?koi8-r?B?6dfBziAg8MXU0s/X?= <fuhyh@mail.ru>
To: Grajdan grajdan@pgp.penza.com.ru
Subject: =?koi8-r?B?5M/T1NXQzsHRINLFy8xhzcE=?=
X-Mailer: MyBB mailer
Content-Type: text/html; charset=koi8-r
Content-Transfer-Encoding: 8bit
X-EsetId: C05C532663D936329B1C
Как видите поле from содержит домен mail.ru, а поле return-path совершенно другой адрес.

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: Помогите с правилом!

Непрочитанное сообщение Laa » 2009-07-20 17:23:18

pashtet писал(а):Народ правило из первого поста не работает! Я уже и второй вариант написал но и оно не отрабатывает (

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

    warn    log_message = "My rule! It works!"
            condition = ${if !eq{${lc:$h_return-path:}}{${lc:$h_to:}}{yes}{no}}
            hosts = !127.0.0.1 : !localhost : *
            add_header = X-ACL-Warn: warnings

Вот заголовки письма которое надо метить:

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

Return-path: <backbites621@gmail.com>
Envelope-to: grajdan@pgp.penza.com.ru
Delivery-date: Mon, 20 Jul 2009 14:20:43 +0400
Received: from localhost ([127.0.0.1] helo=pgp.penza.com.ru)
        by pgp.penza.com.ru with esmtp (Exim 4.69 (FreeBSD))
        (envelope-from <backbites621@gmail.com>)
        id 1MSpz9-000BQG-0G
        for grajdan@pgp.penza.com.ru; Mon, 20 Jul 2009 14:20:43 +0400
X-Spam-Ystatus:   hits=-1.8  R4621
!!!тут очки спамообороны!!!
X-Spam-Flag: DLVR
X-Spam-Yversion: Spamooborona-2.3
Received: from pgp.penza.com.ru (pgp.penza.com.ru [127.0.0.1]) 
        by mx.penzagp.ru (Spamooborona SMTP proxy); Mon, 20 Jul 2009 14:20:43 +0400 (MSD)
Received: from [123.22.8.252]
        by pgp.penza.com.ru with esmtp (Exim 4.69 (FreeBSD))
        (envelope-from <backbites621@gmail.com>)
        id 1MSpz7-000BPr-4B
        for grajdan@pgp.penza.com.ru; Mon, 20 Jul 2009 14:20:42 +0400
From: =?koi8-r?B?6dfBziAg8MXU0s/X?= <fuhyh@mail.ru>
To: Grajdan grajdan@pgp.penza.com.ru
Subject: =?koi8-r?B?5M/T1NXQzsHRINLFy8xhzcE=?=
X-Mailer: MyBB mailer
Content-Type: text/html; charset=koi8-r
Content-Transfer-Encoding: 8bit
X-EsetId: C05C532663D936329B1C
Как видите поле from содержит домен mail.ru, а поле return-path совершенно другой адрес.
Сделайте так, для понятия как работает что:

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

    warn    log_message = "TEST: h_return-path=$h_return-path h_to=$h_to h_from=$h_from"
            hosts = !127.0.0.1 : !localhost : *
может какие-то мысли появятся... ;-)
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Re: Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-21 9:46:57

Последовал Вашему совету!
В результате видим строку типа

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

2009-07-21 10:41:21 H=(dialup.esmr.ru) [85.94.8.159] I=[192.168.3.26]:25 Warning: "TEST: h_return-path= h_from= h_to=
Т.е. ексим не понимает переменную $h_return-path а может я правило не в тот acl засунул, у меня щас acl_check_rcpt. Я отрицание убрал из правила, т.е. должны помечаться все письма у которых совпадают хедеры, но помечаются абсолютно все письма. Логики никакой.
Так что просьба о помощи все еще актуальна!

PS. Я даже хотел в рассылку exim-users написать но у меня не получилось. Письмо обратно возвращается.

pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Re: Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-21 16:16:16

Я вот еще документацию почитал, переведенную Лисярой.
Заголовок “Return-path:” задан как нечто, что MTA может вставить, когда производит финальную доставку сообщения. (Смотрите общую транспортную опцию “return_path_add”.) Поэтому, они не должны быть в сообщениях, которые находятся в пути. Если установлена конфигурационная опция “return_path_remove” (по дефолту - установлена), exim удаляет заголовки “Return-path:” из входящих сообщений.
Может я вообще невозможного хочу?

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: Помогите с правилом!

Непрочитанное сообщение Laa » 2009-07-21 16:51:45

pashtet писал(а):Я вот еще документацию почитал, переведенную Лисярой.
Заголовок “Return-path:” задан как нечто, что MTA может вставить, когда производит финальную доставку сообщения. (Смотрите общую транспортную опцию “return_path_add”.) Поэтому, они не должны быть в сообщениях, которые находятся в пути. Если установлена конфигурационная опция “return_path_remove” (по дефолту - установлена), exim удаляет заголовки “Return-path:” из входящих сообщений.
Может я вообще невозможного хочу?
По-мойму, вот что тебе надо:

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

...
acl_check_data:
...
        warn    log_message     = return_path= $return_path h_from= $h_from
                condition       = ${if !match {$return_path}{\N$h_from\N} }
...
Но я бы еще попроверял бы и не торопился бы с этим.
Удачи.

ps: подправил acl, куда вставлять...
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Re: Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-21 16:56:27

Да я и не тороплюсь, пока по своей теме в доках ковырялся еще много че интересного узнал и нашел. Ну просто я на спамообороне четко сказал что письма с правильных доменов всегда принимать, поэтому если пишут что от рамблера, то мы и рады ))) Так 90 процентов неотсеянного спама приходит. Щас вот зарядил правило, предложенное Вами, жду результатов, обязательно отпишусь.

AzureZ
мл. сержант
Сообщения: 124
Зарегистрирован: 2007-11-06 17:07:27
Откуда: Москва

Re: Помогите с правилом!

Непрочитанное сообщение AzureZ » 2009-07-21 17:26:25

На сколько помню $h_From работает после получения тела письма. Т.е в секции acl_check_data. Если ничего не путаю

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: Помогите с правилом!

Непрочитанное сообщение Laa » 2009-07-21 17:42:56

AzureZ писал(а):На сколько помню $h_From работает после получения тела письма. Т.е в секции acl_check_data. Если ничего не путаю
Именно, я об этом и думал... просто отвлекся наверное... :cz2:
:good:
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Re: Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-21 19:26:37

Значит все-таки не в тот acl :oops: щас поробую

pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Re: Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-21 21:18:38

Итак, правило добавил в нужную acl. Щас в логах все правильно пишется, т.е. переменные $h_from и $h_return-path заносятся в лог. Но есть новая проблема, поле from содержит не только адрес но и имя отправителя.

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

2009-07-21 22:05:56 1MTJiu-000HJx-Jt H=mcgi62.rambler.ru [81.19.67.192] I=[192.168.3.26]:25 Warning: return_path= spv1987@rambler.ru h_from= Pawel Sulin <spv1987@rambler.ru>
Получается что письмо правильное, но считается спамом. Т.е. я так понимаю нужно регексп сочинять, чтобы из переменной h_from только адрес вынимать и потом уже сравнивать или можно из обоих хедеров только домен. Правильно?

pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Re: Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-22 14:43:49

На рассылке exim-users посоветовали использовать${address:<string>} для выдирания только адреса из заголовка from. Я седня весь день убил, но так и не сделал. Может так нельзя и нужно делать регулярное выражение? У меня вся работа встала, но очень хочется сделать до конца :cry:

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Помогите с правилом!

Непрочитанное сообщение Alex Keda » 2009-07-22 19:07:47

можно. правильно посоветовали.
лучше покажите что сделали и что получилось
Убей их всех! Бог потом рассортирует...

pashtet
рядовой
Сообщения: 15
Зарегистрирован: 2008-04-25 12:57:45

Re: Помогите с правилом!

Непрочитанное сообщение pashtet » 2009-07-23 11:05:54

Вот такое правило я брал за основу. Ошибок оно не вызывает, но и не работает.

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

warn    log_message     = return_path= $return_path h_from= ${address:$sender_address}
       condition       = ${if match{$return_path}{${address:$sender_address}} }
       hosts           = !127.0.0.1 : !localhost : *
       add_header      = X-ACL-Warn: ${address:$sender_address} != $return_path
Я сначала сделал на совпадение хедеров. Они пишет в лог что они совпадают и как бы все. Потом я ставлю самый главный элемент правила - ( !) И все перестает работать.Вот что выдает тестовый скрипт

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

using ACL "acl_check_data"
processing "warn"
check condition = ${if !eq{$return_path}{${address:$sender_address}} }
                =
warn: condition test failed
processing "accept"
Короч правило не работает, письма валятся без заголовка. Я уже не знаю что и пробовать, ни думал что будет так тяжело :x