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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

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

Непрочитанное сообщение dikens3 » 2007-05-18 13:07:49

Возникало много задач, в частности:

есть 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
Что замечательно работает. :-) Можно делать так везде, вопрос вот только сколько максимум может быть полей, разделённых : (двоеточием)?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35069
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-05-18 13:54:52

кстати - недавно в рассылке exim.org.ua обсуждалось...
не ты ли это был? :)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-05-18 13:56:56

lissyara писал(а):кстати - недавно в рассылке exim.org.ua обсуждалось...
не ты ли это был? :)
Нет, но раскопал там. :-)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.