Страница 1 из 1

Exim проверка получателя в базе

Добавлено: 2009-04-23 16:46:21
jamesx
Добрый день!
На сервере несколько доменов-алиасов, но многим пользователям нужны адреса только с одним..двумя доменами, для снижения спама хочу сделать следующую проверку: блокировать письмо, если local_part адреса получателя встречается в поле user таблицы addrlist, но полного адреса получателя не содержится в поле addr этой же таблицы.
В таблицу addrlist будут руками заноситься записи для нужных пользователей, на остальных (т.к. их local_part нет в поле user таблицы) данное правило вообще не будет действовать
Полагаю должно быть где-то так:

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

condition = ${if !eq{${lookup mysql {SELECT `addr1` FROM `addrlist`}}}\
                            WHERE `user`= {${local_part}}
                            OR
                            ${if !eq{${lookup mysql {SELECT `addr2` FROM `addrlist`}}}\
                            WHERE `user`= {${local_part}}
но как точно не знаю...? Помогите осилить.

Re: Exim проверка получателя в базе

Добавлено: 2009-04-24 8:21:50
princeps
что мешает просто попробовать?

Re: Exim проверка получателя в базе

Добавлено: 2009-04-27 10:30:21
Laa
Вообще -- не очень хорошая идея плодить домены с алиасами. Вот совсем плохая идея. Это находка для спамера. Выберите себе один единственный домен, принимайте на него почту, а на остальных сделайте заглушки. Ну или делайте грейлист для письма, если localpart одинаковое для разных доменов. Один фиг, нормальные отправители будут слать на одни единственный домен, а алиас-домены -- то вы себе сделали чтобы спама больше было, отправителям эти домены не нужны... 8)

Re: Exim проверка получателя в базе

Добавлено: 2009-04-27 11:08:21
jamesx
Laa писал(а):Вообще -- не очень хорошая идея плодить домены с алиасами. Вот совсем плохая идея. Это находка для спамера. Выберите себе один единственный домен, принимайте на него почту, а на остальных сделайте заглушки. Ну или делайте грейлист для письма, если localpart одинаковое для разных доменов. Один фиг, нормальные отправители будут слать на одни единственный домен, а алиас-домены -- то вы себе сделали чтобы спама больше было, отправителям эти домены не нужны... 8)
Алиасы нужны и отказаться от них нельзя, а грейлистинг неприемлем из-за задержек.

Re: Exim проверка получателя в базе

Добавлено: 2009-04-27 11:49:17
Laa
Вам часто пишут нормальные отправители на vasya@dom1.ru и на vasya@dom2.ru одним письмом???
Уверен, что НЕТ. А спамеры пишут. И вы хотите эту проблему решить. Так? Так вот грейлист для таких писем позволит не потерять важное письмо и при этом уменьшить кол-во спама.

Re: Exim проверка получателя в базе

Добавлено: 2009-04-27 12:11:14
jamesx
Laa писал(а):Вам часто пишут нормальные отправители на vasya@dom1.ru и на vasya@dom2.ru одним письмом???
Уверен, что НЕТ. А спамеры пишут. И вы хотите эту проблему решить. Так? Так вот грейлист для таких писем позволит не потерять важное письмо и при этом уменьшить кол-во спама.
Нет, одним письмом не пишут. Имеется ввиду следующиее: есть домены dom1, dom2, dom3..... domN, Васе могут писать на vasya@dom1 и на vasya@dom5, например, но на все остальные (vasya@dom2, vasya@dom4 и т.д.) ему не могут писать нормальные отправители, а спамеры могут, вот это и надо пресечь.

т.е. в таблице я хочу завести соответствия:

user addr1 addr2

vasya dom1 dom5
pupkin dom3 dom7
и т.д.
и из нее делать выборку для проверки.

Re: Exim проверка получателя в базе

Добавлено: 2009-04-27 12:30:39
Laa
Замучаетесь поддерживать такую базу... :(

Таки для начала сделайте просто -- письмо на vasya в двух и более ваших доменах отправляется в грейлист.

Re: Exim проверка получателя в базе

Добавлено: 2009-04-27 13:16:33
jamesx
Поддерживать будет не сложно, т.к. адреса меняются очень редко.
А отправлять в грейлист все равно не получится. Все равно надо делать соответствия, у какого пользователя какой домен (или домены).

Re: Exim проверка получателя в базе

Добавлено: 2009-04-27 21:16:45
Laa
jamesx писал(а):Добрый день!
На сервере несколько доменов-алиасов, но многим пользователям нужны адреса только с одним..двумя доменами, для снижения спама хочу сделать следующую проверку: блокировать письмо, если local_part адреса получателя встречается в поле user таблицы addrlist, но полного адреса получателя не содержится в поле addr этой же таблицы.
В таблицу addrlist будут руками заноситься записи для нужных пользователей, на остальных (т.к. их local_part нет в поле user таблицы) данное правило вообще не будет действовать
Полагаю должно быть где-то так:

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

condition = ${if !eq{${lookup mysql {SELECT `addr1` FROM `addrlist`}}}\
                            WHERE `user`= {${local_part}}
                            OR
                            ${if !eq{${lookup mysql {SELECT `addr2` FROM `addrlist`}}}\
                            WHERE `user`= {${local_part}}
но как точно не знаю...? Помогите осилить.
Не проверял, но пробуйте как-то так, возможно опечатался или где-то ошибся... :

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

deny message = Reject: local policy. Looks like spam.
 condition = ${if >{lookup mysql{SELECT count(user) FROM addrlist WHERE user = '${quote_mysql:$local_part}'}}{0}}    ## встречается в поле user
 condition = ${if ={lookup mysql{SELECT count(addr) FROM addrlist WHERE addr='${quote_mysql:$local_part@$domain}'}}{0}}  ## не содержится