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

Конструкия для exim, может пригодится всем.

Добавлено: 2007-05-18 13:07:49
dikens3
Возникало много задач, в частности:

есть 2-е конструкции:

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

 deny    message       = 10K for $sender_address_domain $sender_address
          sender_domains = mydomain1.ru : mydomain2.ru
          condition     = ${if > {$message_size}{10K}}
Она работает!!

  deny    message       = 10K for $sender_address_domain $sender_address
          sender_domains = +local_domains
          condition     = ${if > {$message_size}{10K}}
Не работает.
В +local_domains делается выборка из базы mysql, только тут она не подходит, так как для sender_domains необходимо разделение с помощью ":"

Отписывал в баги, но до ответа нашёл следующую конструкцию, думаю может пригодится всем.

Итак у меня задача блокировать e-mail'ы по фильтрам в mysql:
Сделал так:

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

# Заблокированные E-Mail'ы
MYSQL_BAD_EMAILS        = SELECT email FROM block_emails
..
Тут принимаем почту от своих клиентов
..
# Прибиваем плохие E-Mail'ы ,домены, по фильтрам
  deny      message      = You are blocked !
            senders      = ${sg{${lookup mysql{MYSQL_BAD_EMAILS}}}{\n}{:}}
Собственно всё. Теперь все данные, которые находятся в поле email таблицы block_emails будут иметь нормальный вид с разделённым ":"

Мой файл пока имеет такой вид:

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

# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 149 to server version: 4.1.22-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use exim
Database changed
mysql> select email from block_emails;
+----------------------+
| email                |
+----------------------+
| *@mydomain.nnov.ru |
| *@mydomain2.ru      |
+----------------------+
2 rows in set (0.00 sec)
В итоге, в момент работы, фильтр примет следующий вид:

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

# Прибиваем плохие E-Mail'ы ,домены, по фильтрам
  deny      message      = You are blocked !
            senders      = *@mydomain.nnov.ru:*@mydomain2.ru
Что замечательно работает. :-) Можно делать так везде, вопрос вот только сколько максимум может быть полей, разделённых : (двоеточием)?

Добавлено: 2007-05-18 13:54:52
Alex Keda
кстати - недавно в рассылке exim.org.ua обсуждалось...
не ты ли это был? :)

Добавлено: 2007-05-18 13:56:56
dikens3
lissyara писал(а):кстати - недавно в рассылке exim.org.ua обсуждалось...
не ты ли это был? :)
Нет, но раскопал там. :-)