Страница 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 одинаковое для разных доменов. Один фиг, нормальные отправители будут слать на одни единственный домен, а алиас-домены -- то вы себе сделали чтобы спама больше было, отправителям эти домены не нужны...

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

Алиасы нужны и отказаться от них нельзя, а грейлистинг неприемлем из-за задержек.
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}} ## не содержится