Bounce message. Exim ...

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Bounce message. Exim ...

Непрочитанное сообщение gmn » 2007-07-18 14:11:43

Всем привет.
Чего-то в последнее время стали доставать отлупы от других серверов.
SPF-записи для доменов есть, но это панацея от NDR.
Отлупы размером больше 64 Кб не принимаю (так сам решил, стандарта такого нет).
Но отлупы меньшего размера приходят.
Объем почты достаточно большой - порядка 30 000 писем в сутки в на прием и столько же на отправку (приблизительно поровну).

Вопрос - кто как борется с левыми (не предназначенными его получателям) bounce message?

Думал писать в базу связки "отправитель-получатель(и)" - много записей получится за 7 дней, да и есть сайты на хостинге, которые отправляют почту не с моего сервера, но от моих доменов.
Вариант полностью не принимать NDR не подходит, так как не шаровой сервис (некоторые бесплатные почтовые службы просто не приинмают NDR), и пользователь должен быть уведомлен о недоставленном сообщении.

Хостинговая компания 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/

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

Re: Bounce message. Exim ...

Непрочитанное сообщение Alex Keda » 2007-07-18 14:13:41

Убей их всех! Бог потом рассортирует...

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Bounce message. Exim ...

Непрочитанное сообщение gmn » 2007-07-18 15:14:55

Да, вариант. Но будет работать если сервер-отправитель NDR будет включать часть исходного сообщения, но не все включают хотя бы заголовки исходного сообщения.
Да и при описанном решении отлупы на письма, отправленные с сайтов на хостинге не будут приняты.

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

Re: Bounce message. Exim ...

Непрочитанное сообщение Alex Keda » 2007-07-18 15:16:18

универсального решения нет.
остаётся тока заводить фалик куда добавлять свои хосты - сайты-фигайты и по нему исключать..
Убей их всех! Бог потом рассортирует...

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Bounce message. Exim ...

Непрочитанное сообщение gmn » 2007-07-18 19:23:02

И в случае приведенного ниже NDR твой вариант не спасет, так как primary_hostname есть в теле письма - relay.domain.ru, но письмо с этого хоста не отправлялось (т.е. получается, что спамеры просматривают имена хостов MX для поддельного адреса отправителя):

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

------ This is a copy of the message, including all the headers. ------

Return-path: <edu@domain.ru>
Received: from [222.171.12.89]
	by balthasar.solaris.ru with esmtp (Exim 4.66 (FreeBSD))
	(envelope-from <edu@domain.ru>)
	id 1IAnpw-000NTf-JX
	for mscdcrhhtxhiylcprgus@solaris.ru; Tue, 17 Jul 2007 18:15:40 +0400
Received: from [222.171.12.89] by relay.domain.ru; Tue, 17 Jul 2007 14:15:52 -0800
Message-ID: <01c7c87c$fb61d0a0$590cabde@edu>
From: =?koi8-r?B?IkPBzc/FIMnO1MXSxdPOz8Ug1yDtxdbE1c7B0s/EztnIIPPUwc7EwQ==?=
	=?koi8-r?B?0tTByCDmyc7BztPP18/KIO/U3sXUzs/T1MkuIPfXz8TO2cogy9XS0w==?=
	=?koi8-r?B?LiI=?= <edu@incom.ua>
To: <mscdcrhhtxhiylcprgus@solaris.ru>
Subject: =?koi8-r?B?98HM0Q==?=
Date: Tue, 17 Jul 2007 14:15:52 -0800

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

Re: Bounce message. Exim ...

Непрочитанное сообщение Alex Keda » 2007-07-18 19:37:41

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

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Bounce message. Exim ...

Непрочитанное сообщение gmn » 2007-07-18 19:52:16

lissyara писал(а):там проверяется наличие заголовка, а не его содержимое...
Да, извини ...
Действительно.
И попроще вариант будет, чем BATV.
А адреса, с которых отправляют сайты письма на хостингах у меня всеравно в одтельной зоне для SPF. Можно оттуда их доставать и исключать из правила.

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

Re: Bounce message. Exim ...

Непрочитанное сообщение Alex Keda » 2007-07-18 20:09:46

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

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Bounce message. Exim ...

Непрочитанное сообщение gmn » 2007-08-21 17:03:55

В итоге сделал так.

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

# Борьба с "левыми" NDR.
# Заносим в базу адрес или обновляем метку времени при получении NDR.
warn senders = :
     hosts = !+relay_from_hosts
     condition = ${lookup mysql{INSERT INTO bounce_counter (date,recipient,count) VALUES (now(),'$recipients','1') ON DUPLICATE KEY UPDATE count=`count`+1,date=now();}{yes}{no}}

# Блокируем, если адрес получателя есть в базе.
drop log_message = 550 Too many bounce messages to $recipients at last 30 minutes.
     hosts = !+relay_from_hosts
     senders = :
     condition = ${lookup mysql{SELECT recipient FROM bounce_counter WHERE `recipient`='$recipients' AND count>3;}{yes}{no}}
     message = 550 Too many bounce messages to $recipients at last 30 minutes.
## Записи с count меньше 3 и старее 30 мин. удаляются из базы из cron-а.
## Записи, старее 1 часа удаляются из базы без условий.
Т.е. сработает при условии получения NDR не чаще трех за 30 минут.

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

Re: Bounce message. Exim ...

Непрочитанное сообщение Alex Keda » 2007-08-21 19:56:41

дамп структуры таблицы приложи...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Bounce message. Exim ...

Непрочитанное сообщение gmn » 2007-08-22 10:55:30

Да дамп простой ...

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

CREATE TABLE IF NOT EXISTS `bounce_counter` (
  `date` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `recipient` varchar(100) NOT NULL default '',
  `count` int(3) NOT NULL default 0,
  PRIMARY KEY  (`recipient`),
  UNIQUE KEY `ip` (`recipient`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;
А это скрипт, который запускается из крона и "чистит" таблицу каждые 15 мин. Писал на Perl мне так удобнее).

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

...
$query=("delete from bounce_counter where UNIX_TIMESTAMP(date)<UNIX_TIMESTAMP(now())-1800;");
$sth=$dbh->prepare($query); $sth->execute;
...
Думал переделать используя ratelimit. Но пока не придумал как именно реализовать.

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Bounce message. Exim ...

Непрочитанное сообщение gmn » 2007-09-28 8:40:46

Переделал на ratelimit.
Проще, и красивее.

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

# ratelimit for bounce messages for recipient
  drop  hosts     = !+relay_from_hosts
        senders   = :
        message   = Bounce messages rate exceeds per $sender_rate_period for $sender_host_address
        log_message   = Bounce messages rate exceeds per $sender_rate_period for $sender_host_address
        ratelimit = 2 / 30m / per_rcpt / $sender_host_address
Сделал, что не больше 2-х bounce-сообщений за 30 мин на один адрес получателя.
Можно поменять "for $sender_host_address" на адрес получателя - так как на получателя лимитируем ... А получатель может быть только один.

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

Re: Bounce message. Exim ...

Непрочитанное сообщение Alex Keda » 2007-09-28 8:54:21

gmn писал(а):Переделал на ratelimit.
Проще, и красивее.

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

# ratelimit for bounce messages for recipient
  drop  hosts     = !+relay_from_hosts
        senders   = :
        message   = Bounce messages rate exceeds per $sender_rate_period for $sender_host_address
        log_message   = Bounce messages rate exceeds per $sender_rate_period for $sender_host_address
        ratelimit = 2 / 30m / per_rcpt / $sender_host_address
Сделал, что не больше 2-х bounce-сообщений за 30 мин на один адрес получателя.
Можно поменять "for $sender_host_address" на адрес получателя - так как на получателя лимитируем ... А получатель может быть только один.
В полезные настройки засунь.
хорошая идея.
Убей их всех! Бог потом рассортирует...

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

Re: Bounce message. Exim ...

Непрочитанное сообщение Laa » 2008-02-21 19:23:17

lissyara писал(а):
gmn писал(а):Переделал на ratelimit.
Проще, и красивее.

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

# ratelimit for bounce messages for recipient
  drop  hosts     = !+relay_from_hosts
        senders   = :
        message   = Bounce messages rate exceeds per $sender_rate_period for $sender_host_address
        log_message   = Bounce messages rate exceeds per $sender_rate_period for $sender_host_address
        ratelimit = 2 / 30m / per_rcpt / $sender_host_address
Сделал, что не больше 2-х bounce-сообщений за 30 мин на один адрес получателя.
Можно поменять "for $sender_host_address" на адрес получателя - так как на получателя лимитируем ... А получатель может быть только один.
В полезные настройки засунь.
хорошая идея.
ВНИМАНИЕ, кто тупо ставит себе этот код, пожалуйста думайте!!! :twisted:
Откройте http://forum.lissyara.su/viewtopic.php? ... 577#p35868 и берите вдумчиво от туда код!

Я вижу у себя в логах много отлупов от моих проверок отправителя (sender verify) выдают чужие сервера!
Блин, поставили дроп, а думать не научились!!!
Дроп ставить надо в predata :twisted: и только, а то ваши же отправители не смогут слать почту, потому что сервера получателей при проверке отправителя будут отбиваться и считать отправителя несуществующим.

ДУМАЙТЕ перед тем как что-то делать, ставьте warn на день-два, наблюдайте, потом ставьте drop/deny!
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

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

Re: Bounce message. Exim ...

Непрочитанное сообщение Alex Keda » 2008-02-21 20:27:30

у меня вообще макрос вместо верба стоит...
удобнов - водном месте в конфиге можно в любой момент сменить дени на дефер.
при отладке помогает
Убей их всех! Бог потом рассортирует...

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

Re: Bounce message. Exim ...

Непрочитанное сообщение Laa » 2008-02-22 10:12:43

lissyara писал(а):у меня вообще макрос вместо верба стоит...
удобнов - водном месте в конфиге можно в любой момент сменить дени на дефер.
при отладке помогает
Ну то что ты молодец -- у меня сомнений нет :)
А сколько народа тупо копирует, ставит и считает что спама стало меньше! И даже не подозревают, что и почты стало меньше :)
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Bounce message. Exim ...

Непрочитанное сообщение gmn » 2008-02-22 10:22:12

Так "думать" никто не отменял :)
и по приведенной ссылке http://forum.lissyara.su/viewtopic.php? ... 577#p35868 написано "В acl predata блокируем.".

morfair
проходил мимо
Сообщения: 5
Зарегистрирован: 2012-11-28 13:13:55

Re: Bounce message. Exim ...

Непрочитанное сообщение morfair » 2013-11-29 9:13:01

А разве вариант http://forum.lissyara.su/viewtopic.php? ... 577#p26093 будет работать? В $message_body вроде только первые 500 символов...