Ivanovo Linux Users Group -  
Форум Помощь Поиск Вход
Предыдущая Следующая Вверх Тема Администрирование / Общее администрирование / Exim, спам и настройка GreyList (197276 хитов)
- Написал(а) LOE (Site/forum admin) Дата 14.07.05 08:34
Все знают про такой почтовый сервер exim.
Отличается от sendmail'а более понятным конфигом и который можно настроить практически на все случаи.
Расскажу, как сделать поддержку технологии greylist (серый список) в exim для обеспечения блокирования порядка 90% спама.

Технология greylist заключается в том, что при первой попытке отправить нам письмо, передающей стороне передается код
451 Temporary reject
Это заставляет нормальный передающий узел повторить попытку передачи письма позднее (интервал повторов зависит от его настроек)
Через определенное время письмо перепосылается и мы его принимаем.
Таким образом, нормальный узел передает письмо с какой-то задержкой.
Спам рассылки, как правило, делаются либо через открытые релеи, либо через всякие прокси, либо напрямую. Если спамщики будут отрабатывать 4xx ошибку и делать переповторы отправки спама, то это резко уменьшит скорость рассылки (да и обработка факта отправки усложнится).
Поэтому, спамщики будут пытаться отправить спам через другие сервера, наивно предполагая, что заблокирован конкретный узел.
Разумеется, получат такой-же облом :-)

Нужно:
настроенный exim версии 4.x с поддержкой mysql (я вообще всю инфу храню в базе, в т.ч. настройки)
Как настроить exim для работы с mysql рассказывать не буду - это тривиально.
Необходимо создать в базе табличку, для хранения текущей информации greylist:
CREATE TABLE `Greylist` (
  `id` bigint(20) NOT NULL auto_increment,
  `relay_ip` char(15) default NULL,
  `sender` char(64) default NULL,
  `recipient` char(64) default NULL,
  `block_expires` int(11) NOT NULL default '0',
  `record_expires` int(11) NOT NULL default '0',
  `create_time` int(10) unsigned NOT NULL default '0',
  `pass_count` int(10) unsigned NOT NULL default '0',
  `block_count` int(10) unsigned NOT NULL default '0',
  `ehlo` char(64) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `relay_ip` (`relay_ip`,`sender`,`recipient`)
);


Теперь надо прописать в конфиг exim'а:
а) в самом начале прописать макросы:
GREYLIST_TEST=SELECT concat("id=",id," ts=",(unix_timestamp()-block_expires)) \
        from Greylist \
        where relay_ip='${quote_mysql:$sender_host_address}' and \
        sender='${quote_mysql:$sender_address}' and \
        recipient='${quote_mysql:$local_part}@${quote_mysql:$domain}' limit 1
GREYLIST_ADD=INSERT into Greylist (relay_ip,sender,recipient,\
        block_expires,record_expires,create_time,block_count,ehlo) \
        values \
        ('${quote_mysql:$sender_host_address}',\
        '${quote_mysql:$sender_address}',\
        '${quote_mysql:$local_part}@${quote_mysql:$domain}',\
        unix_timestamp()+60*15,unix_timestamp()+60*60*24,unix_timestamp(),1,\
        '${quote_mysql:$sender_helo_name}')
GREYLIST_UPD1=UPDATE Greylist set pass_count=pass_count+1,\
        record_expires=unix_timestamp()+60*60*24 where id=$acl_m2
GREYLIST_UPD2=UPDATE Greylist set block_count=block_count+1 where id=$acl_m2


б) в блоке ACL настроек после RCPT TO в нужном месте прописать сами директивы:
# set variables
warn set acl_m1 = ${lookup mysql{GREYLIST_TEST}{$value}{id=-1 ts=0}}
     set acl_m2 = ${extract{id}{$acl_m1}{$value}{unknown}}
     set acl_m3 = ${extract{ts}{$acl_m1}{$value}{unknown}}

# defer if first attempt
defer   hosts = ! +relay_hosts
        condition = ${if < {$acl_m2}{0}{yes}{no}}
        set acl_m4 = ${lookup mysql{GREYLIST_ADD}{$value}{0}}

# defer if time < block_time
defer   hosts = ! +relay_hosts
        condition = ${if > {$acl_m2}{0}{yes}{no}}
        condition = ${if < {$acl_m3}{0}{yes}{no}}
        set acl_m4 = ${lookup mysql{GREYLIST_UPD2}{$value}{0}}

# pass defers if time > block_time and update count
warn    hosts = ! +relay_hosts
        set acl_m4 = ${lookup mysql{GREYLIST_UPD1}{$value}{0}}


Описание:
а) при первой попытке отправить нам почту (когда тройка sender_host_address, sender_address, recipient_address отсутствует в таблице), письмо отвергается; факт попытки заносится в табличку
б) при попытке спустя время, меньшее 60*15 секунд, письмо отвергается; наращивается счетчик отвергнутых попыток
в) --//-- время большее 60*15 секунд - письмо принимается; апдейтится время устаревания записи и счетчик принятых попыток

Так-же, в cron полезно прописать следующее:
mysql база -e 'delete from Greylist where unix_timestamp()>record_expires;'

чтобы удалять устаревшие записи, т.е. не было повторных писем спустя 60*60*24 секунд от последней попытки.

PS. информация дается AS IS. у меня всё работает.
PPS. разумеется, в конфиге должны быть и другие правила; поэтому важно "всунуть" эти настройки в нужное место. а так-же, ввести дополнительные проверки, например, у меня есть еще настройка срабатывания этих правил по конкретным адресам получателей. т.е. greylist работает не для всех.
PPPS. технология не моя. я только сделал всё средствами exim'а. до этого greylist работал через внешний скрипт.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) G0thic Дата 14.07.05 10:48
Проверил, так тоже работает. Раньше через внешний скрипт 97% спама срезало через грэй листы. Что проходило, легко руками отрезалось. Отличная технология. Правда не у всех нормально почтовики 451ю отрабатывают. Мне с комтекса письмо так и не дошло пока руками не разрешил.
В общем, спасибо.
PS Давно искал возможность вносить данные в базу через конфиг exim`a. Пригодиться, однозначно. :-)
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent - Написал(а) PAHA Дата 18.07.05 08:01
во турла где описание " Установка Exim с поддержкой виртуальных аккаунтов (база в MySQL)"
http://www.opennet.ru/base/net/exim_setup.txt.html
Parent Написал(а) LOE (Site/forum admin) Дата 18.07.05 11:56
Как стартовое описание использовать можно
Однако - есть там потенциальные подводные камни
Например, надо юзать ${quote_mysql:$local_part} вместо просто $local_part и так далее в select'ах.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) PAHA Дата 06.08.05 19:39
Почтовый сервер на базе Exim с использованием DbMail для аккаунтов пользователей.

http://www.opennet.ru/base/net/dbmail_setup.txt.html
Parent - Написал(а) PAHA Дата 07.08.05 15:22 Отредактировано 07.08.05 15:27
добавил свой блек лист в Exim

создаём базу

CREATE TABLE `spam_list` (
`id` bigint(20) NOT NULL auto_increment,
`relay_ip` char(15) default NULL,
`sender` char(64) default NULL,
`recipient` char(64) default NULL,
`ehlo` char(64) default NULL,
PRIMARY KEY  (`id`),
);

exim.conf добавляем правила

#lokal spam list
deny senders = mysql;select sender from spam_list where \
      sender = '${quote_mysql:$sender_address}'
     message = SPAM  !!! rejected, $sender_address is in a local black list

добавлять юзеров мона ручками

insert into spam_list (relay_ip,sender,recipient) values ('193.125.143.57','abuilding@cybergrrl.com','мыло кому шлют');

где:
abuilding@cybergrrl.com - мыло спамера
193.125.143.57 - ип спамера

или написать какуюнито веб морду :-)

примечания:

поидее хватит и простой таблицы с адресами спмаеров

CREATE TABLE `spam_list` (
`id` bigint(20) NOT NULL auto_increment,
`sender` char(64) default NULL,
PRIMARY KEY  (`id`),
);

#lokal spam list
deny senders = mysql;select sender from spam_list where \
      sender = '${quote_mysql:$sender_address}'
     message = SPAM  !!! rejected, $sender_address is in a local black list

insert into spam_list (sender) values ('abuilding@cybergrrl.com');

сори за опечатки :-)
Parent - Написал(а) LOE (Site/forum admin) Дата 07.08.05 16:28
К сожалению, в настоящее время расчитывать на блокировку только по обратному адресу отправителя не приходится.
Спамеры пошли умные и в каждом письме генерируют заново фейковые обратные адреса.

Блокировки надо делать по другим параметрам, тогда их эффективность будет выше обратного e-mail.
Вкупе с greylist'ом - процент блокировки спама (на этапе RCPT TO !) будет очень высокой.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) PAHA Дата 09.08.05 12:05
я вот добавил ещё папу строк  в конфиг екзима

eny senders = mysql;select relay_ip from spam_list where \
     relay_ip = '${quote_mysql:$sender_host_address}'
     message = SPAM  !!! rejected, host $sender_host_address is in a local black list

deny senders = mysql;select ehlo from spam_list where \
     ehlo = '${quote_mysql:$sender_helo_name}'
     message = SPAM  !!! rejected, host is in a local black list

Олег жду коментариев
да тут ещё пару задуомк придумал буду реализовывать
Parent Написал(а) LOE (Site/forum admin) Дата 09.08.05 16:44 Отредактировано 09.08.05 16:47
Из документации exim'а:
senders = <address list>
This condition tests the sender of the message against the given list. To test for a bounce message, which has an empty sender, set
senders = :


Т.е. должен быть предоставлен список _адресов_, но никак не IP адреса и не ehlo.
Такие проверки делаются иначе:
deny   message = You are SPAM sender. Not accepted.
       condition = ${lookup mysql {select 1 from BlockHost where \
                    host='$sender_host_address' limit 1}{$value}}
       hosts = ! +relay_hosts

deny   message = You are SPAM sender. Not accepted.
       condition = ${lookup mysql {select 1 from ehlo where \
                    ehlo='${quote_mysql:$sender_helo_name}' \
                    limit 1}{$value}}
       hosts = ! +relay_hosts


Однако, конструкция проверки на senders=... предоставляет некоторые другие возможности. Правда неудобные для реализации.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) PAHA Дата 09.08.05 14:23
вот немного модернизировал конфиг

это пишем в самом верху конфига

SPAM_LIST_ADD =INSERT into spam_list (relay_ip,sender,recipient,ehlo) values \
              ('${quote_mysql:$sender_host_address}',\
               '${quote_mysql:$sender_address}',\
               '${quote_mysql:$local_part}@${quote_mysql:$domain}',\
               '${quote_mysql:$sender_helo_name}')

далее acl

#lokal spam list
deny senders = mysql;select sender from spam_list where \
     sender = '${quote_mysql:$sender_address}'
     message = SPAM  !!! rejected, $sender_address is in a local black list \
     '${lookup mysql{SPAM_LIST_ADD}{$value}{0}}'

тут проверка на Е маил отправителя

deny senders = mysql;select relay_ip from spam_list where \
     relay_ip = '${quote_mysql:$sender_host_address}'
     message = SPAM  !!! rejected, host $sender_host_address is in a local black list \
     '${lookup mysql{SPAM_LIST_ADD}{$value}{0}}'

тут проверка на ип отправителя

deny senders = mysql;select ehlo from spam_list where \
     ehlo = '${quote_mysql:$sender_helo_name}'
     message = SPAM  !!! rejected, is in a local black list '${lookup mysql{SPAM_LIST_ADD}{$value}{0}}'

тут проверка на ehlo отправителя

#global spam list
require verify        = sender
deny    message       = host $sender_host_address is listed at $dnslist_domain block-list ($dnslist_text) \
                        '${lookup mysql{SPAM_LIST_ADD}{$value}{0}}'
        dnslists      = sbl.spamhaus.org : \
                relays.ordb.org : \
                opm.blitzed.org : \
                proxies.blackholes.easynet.nl

тут проверка на мировых листах

с этого мы имеем прверку на ип отправителя его мыло и его ehlo
может и мниус а может и плюс, это то что при срабатывании этих правил автоматом заниситься отправитель со всеми его данными в базу spam_list, Думаю надо сделать условие на поиск типичной записи в базе и при совпадении ничего не делать а при несовпадении уже добавлять новую запись
Parent - Написал(а) LOE (Site/forum admin) Дата 09.08.05 16:55
На счет проверок senders=... - уже ответил выше.
Зачем вносить в блок листы то, что уже там есть?!

А теперь представь ситуацию:
спам-система генерирует письмо с обратным адресом твой_друг@домен.ру и отсылает его с заблокированного тобой узла.
Твоя конструкция блокирует письмо (на основе IP адреса) и помещает адрес твоего друга в базу. И в дальнейшем ты начинаешь блокировать все его письма. Автоматически. И будешь долго удивляться, почему это твоя переписка нарушилась и твой друг молчит.

Всякого рода автоматизация должна быть четко продумана на предмет таких подводных камней. А еще лучше - свести её к нулю.
В моих таблицах блокировок - тысячи записей. Все они были добавлены вручную и даже не за один год.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) PAHA Дата 23.11.05 08:51
значит задача, как заносить в базу адреса тех кому пишут письма

тобиш если юзер a@domain посылает письмо юзеру находящемуся в инете user@mail.ru

вот надо бы заносить мыло отправителя и мыло кому он пишет в базу, подскажитек как это реализовать ?
Parent - Написал(а) LOE (Site/forum admin) Дата 23.11.05 10:54
Не понял.
Тебе синтаксис SQL команды insert написать?

Лично у меня работает cgi-скрипт и со странички с формой заношу все такие данные в базу. Без автоматики.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) PAHA Дата 23.11.05 11:22
я хочу чтобы автоматом заносились адреса отпрвителя и тому кому отпрвлено письмо в базу
как будет выглядеть acl и место где ставить это надо после чего ?
Parent - Написал(а) LOE (Site/forum admin) Дата 23.11.05 13:02
Сам же и писал пример настройки:
http://lug.ivanovo.ru/f/topic_show.pl?pid=1672#pid1672
подними взгляд чуток повыше ;-)
Только подредактировать чуток.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) PAHA Дата 23.11.05 13:09
это когда ко мне письма приходят, а мне надо отлавливать когда от меня письма уходят
Parent Написал(а) LOE (Site/forum admin) Дата 23.11.05 13:15
Все письма внутри экзима проходят идентичные дорожки
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) PAHA Дата 12.02.07 11:09
вот проблемка образовалась с связи с активностью спамеров, возникла необходимость проверки соответствия либо имени домена к правильному ипу (ТИПА host mx.domen.ru должен соответсвовать правильному ипу из DNS) или может какие ещё варианты есть ?
Parent - Написал(а) Bercut Дата 12.02.07 12:11 Отредактировано 12.02.07 12:17
а чё твоя задержка по часу в грей листе уже не катит ?????????
а так ващето это не верно тк ip отправителя и адрес отправителя это 2 большие разницы
русский язык подобен искуству кун-фу, и великий мастер никогда не применит его без необходимости...
Parent - Написал(а) PAHA Дата 13.02.07 08:47
а ты прикинь что у mail.ru по днс должен быть один список алресов а ввалится с других ипов, и с непонятным Ehlo
Parent - Написал(а) LOE (Site/forum admin) Дата 13.02.07 22:47
А теперь ты прикинь:
человек, имея ящик на mail.ru днем с работы отправляет через один smtp сервер (рабочий), а придя домой - через другой (провайдерский)
Ему теперь что, для каждого месторасположения свой адрес email иметь?
А если он (человек) в командировку уехал и отправляет свою почту из тьма-таракани?
Надеюсь, совет воспользоваться веб-интерфейсом ты не будешь давать ;-)

Борьба со спамом тяжела.
На этапе приема почты мы имеем:
1 переданный нам ehlo (helo)
2 mail from
3 rcpt to
вот на основе этих данных, как в отдельности, так и попарно-потройно и надо строить свои фильтры.
Так-же, не мешает сделать фильтры и на куски этих данных, например:
Received: from [84.101.202.51] (helo=51.202.101-84.rev.gaoland.net)
я заношу в свою базу 202.101-84.rev.gaoland.net для ehlo и отсекаю (смею надеяться) сразу 256 потенциальных хостов
Данные заношу по факту получения спама, это долго, хлопотно. Но есть уверенность, что не заблокирую нужные адреса.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent Написал(а) Bercut Дата 16.02.07 07:58
об этом я и говорил
русский язык подобен искуству кун-фу, и великий мастер никогда не применит его без необходимости...
Parent - Написал(а) G0thic Дата 15.02.07 07:51
А существуют глобальные грей-листы? Или более продвинутые?
Можно ли с достаточной степенью уверенности судить о спамерских наклонностях отправителя, рукводствуясь только тем, что через некоторое время он не повторил попытку отправить отклоненное по 451 первое сообщение? Если так, то можно объединить усилия и фиксировать попытки отправления и отказ от повторного соединения в консолидированной базе данных.
Скажем перед тем, как принять письмо МТА проверяет не только в своем грей листе, но и в единой БД.
Сразу возникает куча вопросов..
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent - Написал(а) LOE (Site/forum admin) Дата 15.02.07 08:55
Грей-лист не может быть глобальным.
Сколько может существовать вариантов IP-sender-recipient ? Думаю, предостаточно, чтобы было нецелесообразно хранить данные глобально.
Тем более, самой сущностью грей-листа предусмотрено "протухание" записей.

> Можно ли с достаточной степенью уверенности судить о спамерских наклонностях отправителя


ИМХО - да. _Нормальный_ почтовый сервер обязан произвести повторную передачу письма:
4yz   Transient Negative Completion reply
      The command was not accepted, and the requested action did not
      occur.  However, the error condition is temporary and the action
      may be requested again.  The sender should return to the beginning
      of the command sequence (if any).  It is difficult to assign a
      meaning to "transient" when two different sites (receiver- and

      sender-SMTP agents) must agree on the interpretation.  Each reply
      in this category might have a different time value, but the SMTP
      client is encouraged to try again.  A rule of thumb to determine
      whether a reply fits into the 4yz or the 5yz category (see below)
      is that replies are 4yz if they can be successful if repeated
      without any change in command form or in properties of the sender
      or receiver (that is, the command is repeated identically and the
      receiver does not put up a new implementation.)
Хоть и написано may be requested again, но отсутствие повторной передачи письма встречал только на кривонастроенных серверах.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) G0thic Дата 15.02.07 09:58
Да. В таком случае, если сервер засек отсутствие повторной передачи, то можно смело заносить удаленную систему в блэк лист. Если повторил передачу - в white лист. Конечно, может и писем от этого white сервера больше никогда не будет ;-), но если будут, задержек можно избежать. С другой стороны, не обязательно хранить всю тройку IP-sender-recipient. Она необходима только для проверки удаленной системы однократно и локально. Ip адреса для этого будет достаточно? В таком случае dns лист не обязательно должен быть локальным и может консолидировать информацию от нескольких грэй-проверяющих МТА.
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent Написал(а) LOE (Site/forum admin) Дата 15.02.07 10:26
Спам приходит и через нормальные smtp сервера
Занеся этот сервер в white список, автоматом будем получать спам через него в дальнейшем.

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

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

Другое дело, часть информации надо хранить локально и проверять информацию в smtp сессии по локальным данным, не теребя сервера в инете.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) LOE (Site/forum admin) Дата 15.02.07 10:34
Я вообще не понимаю, чем технология грей-листа не устраивает?
Она - не панацея от беды. Она - один из помошников.
Например, из лога почтовки одного из серверов:
$ grep -c rejected exim_main.log # всего отвергнуто
213237
$ grep -c temporarily exim_main.log # временно отвергнуто
129496
$ grep -c Сompleted exim_main.log # принято
11254

Т.е. половина отвергнутых писем - по грей-технологии. Остальные блоки - мои собственные проверки (по локальной базе).
Приняты писем - 1/20 от всех попыток. Вот и считайте процент блокирования спама по результатам всех [моих] проверок.

На другом сервере - вообще спама не видел несколько недель. Но и адрес на нём не шибко засвечен.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) G0thic Дата 15.02.07 10:44 Отредактировано 15.02.07 10:57
Технология более чем устраивает. Хочется большего. Когда серверов много - минимизировать затраты на спам-проверки, т.к. технология не позволяет подняться выше тройки сервер-отправитель-получатель. Задача - необходимо расширить её возможности.
Посмотрим, что из этого выйдет.
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent Написал(а) LOE (Site/forum admin) Дата 15.02.07 10:51
Когда серверов много, когда они "свои" и стоят на одной площадке - самое то использовать одну sql базу с данными.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) G0thic Дата 15.02.07 07:55
Ещё вопрос. Дабы пропустить этап грей проверки для "белых" МТА, хотелось бы задействовать какой-нибдуь dns-white лист. Есть такие на примете?
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent - Написал(а) LOE (Site/forum admin) Дата 15.02.07 08:59
Презумпция невиновности - пока спам не шлется, сервер считается "белым и пушистым". С другой стороны, пошел спам - надо блокировать этот сервер.
Создавай свой список доверенных серверов и проверяй в нём до использования dnsbl
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) PAHA Дата 16.02.07 08:18
у меня ведёться база тех кого отбрасывает как уже провереных спамеров (кто хотябы по каким то критериям являеться спамером) предлагаю обменяться базами
Parent - Написал(а) G0thic Дата 16.02.07 10:36
А время занесения в базу у тебя есть?
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent - Написал(а) PAHA Дата 20.02.07 07:02
а зачем мне время занесения в юазу когда эта база ведёться только для "отработаных спамеров" по каким либо критерием и заносться автоматом в базу чисто для дальнейшего иследования , ну и малоли занесения новых адресов спамеров
Parent - Написал(а) G0thic Дата 20.02.07 07:25
т.е. ты не собираешься выкидывать спамеров из базы по сроку давности? Конечно это имеет смысл когда записей - сотни тысяч. Но и такое бывает. Мне кажется целесообразным вести такое поле и сохранять в нем дату последнего спама.
Чистить базу все равно приходиться для увеличения быстродействия и самый простой способ - удалять спамера через некоторое время после попадания в список. Или комбинировать с количеством попыток отправки спама. Для единичных случаев время блокировки может быть меньше. Т.е. не прошел грей-проверку - в спам на месяц. Повторил попытку - в спам на год. Что-то вроде этого.
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent Написал(а) slam Дата 08.07.08 08:23
Как бы postfix научить данные кидать в базу, без использования postgrey. Буду искать...
Parent - Написал(а) smeegul Дата 19.03.10 12:49 Отредактировано 19.03.10 12:55
Есть в сети сервера которые одно и то же письмо после отлупа грейлиста с разных ай-пи отправляют, например гугл.

Юзаю postgrey c exim в debian:
(у postgrey есть белые списки таких серверов /etc/postgrey/whitelist_clients)

cat /etc/default/postgrey
POSTGREY_OPTS="--exim --hostname=HOSTNAME  --auto-whitelist-clients=1 --max-age=360  --unix=/var/run/postgrey --whitelist-clients=/etc/postgrey/whitelist_clients --whitelist-recipients=/etc/postgrey/whitelist_recipients"
POSTGREY_TEXT="Please try later."

в /etc/exim4/exim4.conf

defer     log_message   = greylisted host $sender_host_address [SH=$sender_host_address S=$sender_address HELO=$sender_helo_name LPLD=$local_part@$domain]
          set acl_m0  = request=smtpd_access_policy\nprotocol_state=RCPT\nprotocol_name=${uc:$received_protocol}\nhelo_name=$sender_helo_name\nclient_address=$sender_host_address\nclient_name=$sender_host_name\nsender=$sender_address\nrecipient=$local_part@$domain\ninstance=$sender_host_address/$sender_address/$local_part@$domain\n\n
          set acl_m0    = ${sg{${readsocket{/var/run/postgrey}{$acl_m0}{5s}{}{action=DUNNO}}}{action=}{}}
          message       = ${sg{$acl_m0}{^\\w+\\s*}{}}
          !authenticated = *
          condition     = ${if eq{${uc:${substr{0}{5}{$acl_m0}}}}{DEFER}{true}{false}}
Parent - Написал(а) LOE (Site/forum admin) Дата 19.03.10 12:56
Пытаются отправить с разных адресов в одной сессии отправки. Грейлистятся. В следующий сеанс одна из попыток идет с уже отработанного адреса (как правило) и письмо проходит.
Заносить в белый список следует только заведомо "хорошие" сервера. Гугл к таким не относится.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) smeegul Дата 20.03.10 16:57 Отредактировано 20.03.10 17:05
допустим гугл отсылает с разных ip и они  очень редко повторяются,
т е на доставку письма может уйти больше дня или письмо может не прийти вообще

у гугла очень много отправляющих серверов http://lists.ee.ethz.ch/postgrey/msg02261.html
Parent Написал(а) LOE (Site/forum admin) Дата 20.03.10 17:24
Дело хозяйское.
Но я бы не стал заносить сервера гугла в white-список.
Максимум что делаю при необходимости, это заношу в отдельную таблицу пару отправитель-получатель и такая почта минует все блоки.
За все время, жалоб на непрохождение почты от гугла у меня не было.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Предыдущая Следующая Вверх Тема Администрирование / Общее администрирование / Exim, спам и настройка GreyList (197276 хитов)

Powered by mwForum 2.12.0 © 1999-2007 Markus Wichitill

Page created in 0.821s with 10 database queries.