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
pashtet
-
Хостинг HostFood.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
- Откуда: Украина, Россия
Непрочитанное сообщение
Laa » 2009-07-10 12:42:10
А сколько у вас было срабатываний на проверке $return_path ?
Сделайте acl с warn и понаблюдайте. Вреда никакого, зато можно понять смысл.
Вопрос про одноклассников не понял.

exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!
Laa
-
pashtet
- рядовой
- Сообщения: 15
- Зарегистрирован: 2008-04-25 12:57:45
Непрочитанное сообщение
pashtet » 2009-07-10 15:37:20
Ну вот писем с return_path приходит достаточно чтобы обращать на них внимание......на мой ящик идет около 50 в день. Причем у меня стоит спамооборона, которая с удовольствием пропускает письма, т.к. домен отправителя в белом списке.
Про одноклассников был не вопрос. Это просто пример правила.

pashtet
-
pashtet
- рядовой
- Сообщения: 15
- Зарегистрирован: 2008-04-25 12:57:45
Непрочитанное сообщение
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 совершенно другой адрес.
pashtet
-
Laa
- ст. лейтенант
- Сообщения: 1032
- Зарегистрирован: 2008-02-21 18:25:33
- Откуда: Украина, Россия
Непрочитанное сообщение
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!!!
Laa
-
pashtet
- рядовой
- Сообщения: 15
- Зарегистрирован: 2008-04-25 12:57:45
Непрочитанное сообщение
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
-
pashtet
- рядовой
- Сообщения: 15
- Зарегистрирован: 2008-04-25 12:57:45
Непрочитанное сообщение
pashtet » 2009-07-21 16:16:16
Я вот еще документацию почитал, переведенную Лисярой.
Заголовок “Return-path:” задан как нечто, что MTA может вставить, когда производит финальную доставку сообщения. (Смотрите общую транспортную опцию “return_path_add”.) Поэтому, они не должны быть в сообщениях, которые находятся в пути. Если установлена конфигурационная опция “return_path_remove” (по дефолту - установлена), exim удаляет заголовки “Return-path:” из входящих сообщений.
Может я вообще невозможного хочу?
pashtet
-
Laa
- ст. лейтенант
- Сообщения: 1032
- Зарегистрирован: 2008-02-21 18:25:33
- Откуда: Украина, Россия
Непрочитанное сообщение
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!!!
Laa
-
pashtet
- рядовой
- Сообщения: 15
- Зарегистрирован: 2008-04-25 12:57:45
Непрочитанное сообщение
pashtet » 2009-07-21 16:56:27
Да я и не тороплюсь, пока по своей теме в доках ковырялся еще много че интересного узнал и нашел. Ну просто я на спамообороне четко сказал что письма с правильных доменов всегда принимать, поэтому если пишут что от рамблера, то мы и рады ))) Так 90 процентов неотсеянного спама приходит. Щас вот зарядил правило, предложенное Вами, жду результатов, обязательно отпишусь.
pashtet
-
AzureZ
- мл. сержант
- Сообщения: 124
- Зарегистрирован: 2007-11-06 17:07:27
- Откуда: Москва
Непрочитанное сообщение
AzureZ » 2009-07-21 17:26:25
На сколько помню $h_From работает после получения тела письма. Т.е в секции acl_check_data. Если ничего не путаю
AzureZ
-
Laa
- ст. лейтенант
- Сообщения: 1032
- Зарегистрирован: 2008-02-21 18:25:33
- Откуда: Украина, Россия
Непрочитанное сообщение
Laa » 2009-07-21 17:42:56
AzureZ писал(а):На сколько помню $h_From работает после получения тела письма. Т.е в секции acl_check_data. Если ничего не путаю
Именно, я об этом и думал... просто отвлекся наверное...

exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!
Laa
-
pashtet
- рядовой
- Сообщения: 15
- Зарегистрирован: 2008-04-25 12:57:45
Непрочитанное сообщение
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
-
pashtet
- рядовой
- Сообщения: 15
- Зарегистрирован: 2008-04-25 12:57:45
Непрочитанное сообщение
pashtet » 2009-07-22 14:43:49
На рассылке exim-users посоветовали использовать${address:<string>} для выдирания только адреса из заголовка from. Я седня весь день убил, но так и не сделал. Может так нельзя и нужно делать регулярное выражение? У меня вся работа встала, но очень хочется сделать до конца

pashtet
-
Alex Keda
- стреляли...
- Сообщения: 35439
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2009-07-22 19:07:47
можно. правильно посоветовали.
лучше покажите что сделали и что получилось
Убей их всех! Бог потом рассортирует...
Alex Keda
-
pashtet
- рядовой
- Сообщения: 15
- Зарегистрирован: 2008-04-25 12:57:45
Непрочитанное сообщение
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"
Короч правило не работает, письма валятся без заголовка. Я уже не знаю что и пробовать, ни думал что будет так тяжело

pashtet