Страница 1 из 1
Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-01 12:54:16
bobot
Задача следующая: Мне надо вообще запретить почту, чтоб юзер немог принимать почту от юзера которого нету в whitelist как это сделать? Внимание у меня только exim спам прог нету
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-01 13:30:36
mastertron
Код: Выделить всё
deny message = only for official use
hosts = !+relay_from_hosts
condition = ${if eq{lookup mysql{SELECT email FROM whitelist WHERE email = '$sender_address'}}}{}{no}{yes}}
log_message = это был не наш человек!
Ну эт при условии, что работа по адресу отправителя и исключения для правила верные ( кому разрешено отправлять письма в мир).
Верить никому нельзя

, так что лучше проверить писанину.
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-13 13:25:11
bobot
mastertron писал(а):Код: Выделить всё
deny message = only for official use
hosts = !+relay_from_hosts
condition = ${if eq{lookup mysql{SELECT email FROM whitelist WHERE email = '$sender_address'}}}{}{no}{yes}}
log_message = это был не наш человек!
Ну эт при условии, что работа по адресу отправителя и исключения для правила верные ( кому разрешено отправлять письма в мир).
Верить никому нельзя

, так что лучше проверить писанину.
в логах пишет ошибку синтаксическую ошибку:
Код: Выделить всё
2010-10-13 13:22:00 H=f36.mail.ru [217.69.128.193] F=<nemezida1980@bk.ru> temporarily rejected RCPT <bobotol@univ.kiev.ua>: failed to expand ACL string "${if eq{ {${lookup mysql{SELECT email FROM whitelist WHERE email = '$sender_address'}}}}{no}{yes}}": missing 2nd string in {} after "eq"
Пробовал сам исправить не получается

Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-13 14:38:49
mastertron
Код: Выделить всё
2010-10-13 13:22:00 H=f36.mail.ru [217.69.128.193] F=<nemezida1980@bk.ru> temporarily rejected RCPT <bobotol@univ.kiev.ua>: failed to expand ACL string "${if eq{ {${lookup mysql{SELECT email FROM whitelist WHERE email = '$sender_address'}}}}{no}{yes}}": missing 2nd string in {} after "eq"
Ну да, как и обещал, проверять надо
Не сообразил сразу, чего с чем проверять, попробуйте так.
Код: Выделить всё
deny message = only for official use
hosts = !+relay_from_hosts
condition = ${if eq{}{${lookup mysql{SELECT email FROM whitelist WHERE email = '${quote_mysql:$sender_address}'}}}{no}{yes}}
log_message = это был не наш человек!
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-13 14:49:20
bobot
mastertron писал(а):
Код: Выделить всё
condition = ${if eq{}{${lookup mysql{SELECT email FROM whitelist WHERE email = '${quote_mysql:$sender_address}'}}}{no}{yes}}
Если так .... То тогда так как такового whitelist нету!
все письма пропускает
А хотя должен от одного, я в базу одного вписал доверенного

Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-13 15:44:50
mastertron
А из двух примеров слепить один правильный .. может получится?
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-13 15:54:36
mastertron
Код: Выделить всё
deny message = only for official use
hosts = !+relay_from_hosts
condition = ${if eq{${lookup mysql{SELECT email FROM whitelist WHERE email = '${quote_mysql:$sender_address}'}}}{}{no}{yes}}
log_message = это был не наш человек!
Вот ...
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-14 11:31:28
bobot
mastertron писал(а):Код: Выделить всё
deny message = only for official use
hosts = !+relay_from_hosts
condition = ${if eq{${lookup mysql{SELECT email FROM whitelist WHERE email = '${quote_mysql:$sender_address}'}}}{}{no}{yes}}
log_message = это был не наш человек!
Вот ...
Теперь такой прикол: адреса блокируются те которые находятся в whitelist, а те адреса которых нету там всё нормально..........получается типа blacklist

Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-14 18:31:51
mastertron
Так все ж решается просто, запишите туда всех, а оставте кого нада ..
Поменяйте местами yes / no. (хотя у меня работало, лень было, но вписал)
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-14 22:23:45
bobot
mastertron писал(а):Так все ж решается просто, запишите туда всех, а оставте кого нада ..
Поменяйте местами yes / no. (хотя у меня работало, лень было, но вписал)
кого всех? я ж не знаю от кого мне письмо прийдёт,а вдруг оно мне нужно

.............. я тоже менял местами yes и no , но когда я так делаю то письма все начинают приходить как будто нету этого whitlist
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-14 22:29:42
bobot
mastertron писал(а):Так все ж решается просто, запишите туда всех, а оставте кого нада ..
Поменяйте местами yes / no. (хотя у меня работало, лень было, но вписал)
кого всех? я ж не знаю от кого мне письмо прийдёт,а вдруг оно мне нужно

.............. я тоже менял местами yes и no , но когда я так делаю то письма все начинают приходить как будто нету этого whitlist.
Может я не правильно вставляю (EXIM) не в том месте я тут вставляю:
Код: Выделить всё
begin acl
# This access control list is used for every RCPT command in an incoming
# SMTP message. The tests are run in order until the address is either
# accepted or denied.
acl_check_rcpt:
А ВОТ ТУТ Я ВСТАВЛЯЮ
сразу вначале после
acl_check_rcpt
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-15 10:49:03
mastertron
Не знаю, можно ли тут столько писать ... ( чтоб не забанили )
У вас exim с mysql и с базой все нормально? Таблица whitelist, есть поле email, в котором записи вида
user@domain.ru ?
Да, с дислокацией правила все верно, именно там и вставлял для теста, если адрес отправителя есть в таблице whitelist в поле email то пропускает, если не находит такого - блокирует ( все же вконце {}{yes}{no}} ).
Вобсчето идея была вам немного ( именно немного ) помочь. Сравните правила с другими, например которые описаны в разделе полезностей, поиграйтесь.
Для отладки можно вместо deny записать warn , тогда сервак продолжит работать, а по логам - если запишет, значит сработало и т.д.
Успехов!
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-15 11:46:19
bobot
mastertron писал(а):Не знаю, можно ли тут столько писать ... ( чтоб не забанили )
У вас exim с mysql и с базой все нормально? Таблица whitelist, есть поле email, в котором записи вида
user@domain.ru ?
Да, с дислокацией правила все верно, именно там и вставлял для теста, если адрес отправителя есть в таблице whitelist в поле email то пропускает, если не находит такого - блокирует ( все же вконце {}{yes}{no}} ).
Вобсчето идея была вам немного ( именно немного ) помочь. Сравните правила с другими, например которые описаны в разделе полезностей, поиграйтесь.
Для отладки можно вместо deny записать warn , тогда сервак продолжит работать, а по логам - если запишет, значит сработало и т.д.
Успехов!
Та всё вроде нормально с базой Работает!
Так тут же одно значение надо email:
Код: Выделить всё
mysql> select* from whitelist
-> ;
+--------------------+
| email |
+--------------------+
| nemezida1980@bk.ru |
+--------------------+
1 row in set (0.12 sec)
Хорошо попробую
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-15 14:12:25
mastertron
Может вы при проверке отсылали с IP, указанных в relay_from_hosts ? ( которые указаны в исключении hosts = !... )
Я игрался так: чтоб тестить правила - закоментировал исключения, чтоб можно было тестить с хостов, которым разрешен релей, а правила condition писать по чуть-чуть, например:
Код: Выделить всё
deny message = condition test
# hosts = !+relay_from_hosts
condition = ${if eq{admin@mydomain.xa}{$sender_address}{yes}{no}}
log_message = TEST condition for email $sender_address
В правило вписывайте свое мыло и вперед ... Если есть совпадения указанного мыла с тем, что в $sender_address, правило должно сработать и при отправке письма вы получите сообщение своей писанины. Если работает - следующий шаг, берем список для сравнения с базы mysql и сравниваем с пустотой {}, если в списке нет такого парня, то соответственно вернет пустоту и сравнение будет {} = {} then {yes} else {no}. Ну, я не спец, могу и ошибаться.
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-15 14:30:27
bobot
mastertron писал(а):Может вы при проверке отсылали с IP, указанных в relay_from_hosts ? ( которые указаны в исключении hosts = !... )
Я игрался так: чтоб тестить правила - закоментировал исключения, чтоб можно было тестить с хостов, которым разрешен релей
вот у меня
Код: Выделить всё
domainlist local_domains = univ.kiev.ua : mail.univ.kiev.ua : rpd.univ.kiev.ua : econom.univ.kiev.ua
domainlist relay_to_domains = *.univ.kiev.ua
hostlist relay_from_hosts = localhost : 10.0.0.0/8 : 91.202.128.0/22 : 193.41.88.0/24 : 195.39.242.0/23 : 193.254.221.0/24
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-15 14:31:57
bobot
bobot писал(а):mastertron писал(а):Может вы при проверке отсылали с IP, указанных в relay_from_hosts ? ( которые указаны в исключении hosts = !... )
Я игрался так: чтоб тестить правила - закоментировал исключения, чтоб можно было тестить с хостов, которым разрешен релей
вот у меня
Код: Выделить всё
domainlist local_domains = univ.kiev.ua : mail.univ.kiev.ua : rpd.univ.kiev.ua : econom.univ.kiev.ua
domainlist relay_to_domains = *.univ.kiev.ua
hostlist relay_from_hosts = localhost : 10.0.0.0/8 : 91.202.128.0/22 : 193.41.88.0/24 : 195.39.242.0/23 : 193.254.221.0/24
У меня так и получалось если письма с моей сети то это правило не срабатывало(так оно и должно быть)
Re: Кто подскажет как сделать whitelist (не простой)exim?
Добавлено: 2010-10-21 13:38:43
bobot
mastertron писал(а):Так все ж решается просто, запишите туда всех, а оставте кого нада ..
Поменяйте местами yes / no. (хотя у меня работало, лень было, но вписал)
Всё получилось я вот так сделал
Код: Выделить всё
deny message = only for official use
hosts = !+relay_from_hosts
condition = ${if eq{${lookup mysql{SELECT email FROM whitelist WHERE email = '$sender_address'}}}{}{yes}{no}}
log_message = это был не наш человек!