Страница 1 из 1
Bounce message. Exim ...
Добавлено: 2007-07-18 14:11:43
gmn
Всем привет.
Чего-то в последнее время стали доставать отлупы от других серверов.
SPF-записи для доменов есть, но это панацея от NDR.
Отлупы размером больше 64 Кб не принимаю (так сам решил, стандарта такого нет).
Но отлупы меньшего размера приходят.
Объем почты достаточно большой - порядка 30 000 писем в сутки в на прием и столько же на отправку (приблизительно поровну).
Вопрос - кто как борется с левыми (не предназначенными его получателям) bounce message?
Думал писать в базу связки "отправитель-получатель(и)" - много записей получится за 7 дней, да и есть сайты на хостинге, которые отправляют почту не с моего сервера, но от моих доменов.
Вариант полностью не принимать NDR не подходит, так как не шаровой сервис (некоторые бесплатные почтовые службы просто не приинмают NDR), и пользователь должен быть уведомлен о недоставленном сообщении.
Re: Bounce message. Exim ...
Добавлено: 2007-07-18 14:13:41
Alex Keda
Re: Bounce message. Exim ...
Добавлено: 2007-07-18 15:14:55
gmn
Да, вариант. Но будет работать если сервер-отправитель NDR будет включать часть исходного сообщения, но не все включают хотя бы заголовки исходного сообщения.
Да и при описанном решении отлупы на письма, отправленные с сайтов на хостинге не будут приняты.
Re: Bounce message. Exim ...
Добавлено: 2007-07-18 15:16:18
Alex Keda
универсального решения нет.
остаётся тока заводить фалик куда добавлять свои хосты - сайты-фигайты и по нему исключать..
Re: Bounce message. Exim ...
Добавлено: 2007-07-18 19:23:02
gmn
И в случае приведенного ниже 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
Re: Bounce message. Exim ...
Добавлено: 2007-07-18 19:37:41
Alex Keda
там проверяется наличие заголовка, а не кго содержимое...
Re: Bounce message. Exim ...
Добавлено: 2007-07-18 19:52:16
gmn
lissyara писал(а):там проверяется наличие заголовка, а не его содержимое...
Да, извини ...
Действительно.
И попроще вариант будет, чем BATV.
А адреса, с которых отправляют сайты письма на хостингах у меня всеравно в одтельной зоне для SPF. Можно оттуда их доставать и исключать из правила.
Re: Bounce message. Exim ...
Добавлено: 2007-07-18 20:09:46
Alex Keda
можно, в конце концов, не рубать - а жёстко докидывать очков выше порога на спам и всё...
Re: Bounce message. Exim ...
Добавлено: 2007-08-21 17:03:55
gmn
В итоге сделал так.
Код: Выделить всё
# Борьба с "левыми" 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 минут.
Re: Bounce message. Exim ...
Добавлено: 2007-08-21 19:56:41
Alex Keda
дамп структуры таблицы приложи...
Re: Bounce message. Exim ...
Добавлено: 2007-08-22 10:55:30
gmn
Да дамп простой ...
Код: Выделить всё
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. Но пока не придумал как именно реализовать.
Re: Bounce message. Exim ...
Добавлено: 2007-09-28 8:40:46
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" на адрес получателя - так как на получателя лимитируем ... А получатель может быть только один.
Re: Bounce message. Exim ...
Добавлено: 2007-09-28 8:54:21
Alex Keda
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" на адрес получателя - так как на получателя лимитируем ... А получатель может быть только один.
В полезные настройки засунь.
хорошая идея.
Re: Bounce message. Exim ...
Добавлено: 2008-02-21 19:23:17
Laa
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" на адрес получателя - так как на получателя лимитируем ... А получатель может быть только один.
В полезные настройки засунь.
хорошая идея.
ВНИМАНИЕ, кто тупо ставит себе этот код, пожалуйста думайте!!!
Откройте
http://forum.lissyara.su/viewtopic.php? ... 577#p35868 и берите вдумчиво от туда код!
Я вижу у себя в логах много отлупов от моих проверок отправителя (sender verify) выдают чужие сервера!
Блин, поставили дроп, а думать не научились!!!
Дроп ставить надо в predata

и только, а то ваши же отправители не смогут слать почту, потому что сервера получателей при проверке отправителя будут отбиваться и считать отправителя несуществующим.
ДУМАЙТЕ перед тем как что-то делать, ставьте warn на день-два, наблюдайте, потом ставьте drop/deny!
Re: Bounce message. Exim ...
Добавлено: 2008-02-21 20:27:30
Alex Keda
у меня вообще макрос вместо верба стоит...
удобнов - водном месте в конфиге можно в любой момент сменить дени на дефер.
при отладке помогает
Re: Bounce message. Exim ...
Добавлено: 2008-02-22 10:12:43
Laa
lissyara писал(а):у меня вообще макрос вместо верба стоит...
удобнов - водном месте в конфиге можно в любой момент сменить дени на дефер.
при отладке помогает
Ну то что ты молодец -- у меня сомнений нет

А сколько народа тупо копирует, ставит и считает что спама стало меньше! И даже не подозревают, что и почты стало меньше

Re: Bounce message. Exim ...
Добавлено: 2008-02-22 10:22:12
gmn
Так "думать" никто не отменял

и по приведенной ссылке
http://forum.lissyara.su/viewtopic.php? ... 577#p35868 написано "В acl predata блокируем.".
Re: Bounce message. Exim ...
Добавлено: 2013-11-29 9:13:01
morfair
А разве вариант
http://forum.lissyara.su/viewtopic.php? ... 577#p26093 будет работать? В $message_body вроде только первые 500 символов...