Exim. Проверка системного фильтра

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

Модератор: xM

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

Exim. Проверка системного фильтра

Непрочитанное сообщение dikens3 » 2007-06-14 17:29:55

Прочитал документацию, сделал свой первый системный фильтр.

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

# Exim filter
if error_message then finish endif                      # Не отправляем рикошеты
# Копируем исходящую почту от этих отправителей
if $sender_address: match "(user1|user2)@mydomain.ru" or
# Копируем входящую почту для этих получателей
$recipients: match "(user1|user2)@mydomain.ru"
then
unseen deliver admin@mydomain.ru                                # Копируем на этот адрес
endif
Он работает, только при проверке вылезает это:

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

exim -bf exim-filter.conf < message
..
..

Filter error: failed to expand "$recipients" in filter file: unknown variable name "recipients"
Лучше установить 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/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

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

Непрочитанное сообщение Alex Keda » 2007-06-14 18:53:32

а вот х.з...
может надо до кучи задать этих самых получателей, с командной строки?
Убей их всех! Бог потом рассортирует...

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Непрочитанное сообщение Marquez » 2007-06-16 0:14:09

Хороший пример, как раз сам сейчас озадачен подобной проблемой.

Доп. вопросы:

1. # Не отправляем рикошеты
if error_message then finish endif
Что есть "рикошеты"?
2. Как правильно указывать не выборочные аккаунты а весь домен - "@mydomain.ru"?
3. Какое правило добавить, что бы не только "Копируем исходящую почту от этих отправителей", но и этим получателям (нужно указать домены)?
4. Тоже самое для входящей - нужно указать домены отправителей.

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

Непрочитанное сообщение dikens3 » 2007-06-16 9:48:44

Marquez писал(а):1. # Не отправляем рикошеты
if error_message then finish endif
Что есть "рикошеты"?
Читать доку
2. Как правильно указывать не выборочные аккаунты а весь домен - "@mydomain.ru"?
Ну да, именно так, только если pcre использоваться не будет можно использовать contains вместо match.
3. Какое правило добавить, что бы не только "Копируем исходящую почту от этих отправителей", но и этим получателям (нужно указать домены)?

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

# Копируем исходящую почту от этих отправителей
if $sender_address: match "(user1|user2)@mydomain.ru" and 
# Копируем входящую почту для этих получателей
$recipients: match "(@mydomain1.ru|@mydomain2.ru|@mydomain3.ru)"
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Непрочитанное сообщение Marquez » 2007-06-18 7:57:44

Отлично 8) А исключение как оформить? К примеру, выбрал я домен, но хочу исключить пару адресов из выборки.

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

Непрочитанное сообщение Alex Keda » 2007-06-18 7:58:36

вложенным условием
Убей их всех! Бог потом рассортирует...

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

Непрочитанное сообщение dikens3 » 2007-06-18 8:10:34

Marquez писал(а):Отлично 8) А исключение как оформить? К примеру, выбрал я домен, но хочу исключить пару адресов из выборки.
А я пока не дорос. :-(
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Непрочитанное сообщение Marquez » 2007-06-18 8:20:58

Может так:

if
$recipients: match "(@mydomain1.ru|@mydomain2.ru|@mydomain3.ru)"
and
$recipients: match "(^anna@mydomain1.ru|sveta@2.ru)"
then...

^ - знак исключения, я не напутал? Т.е. выборка идёт по трем доменам (для примера) с исключением двух конкретных адресов.

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

Непрочитанное сообщение dikens3 » 2007-06-18 8:52:53

^ - знак начала, а не исключения. Причём у меня работать отказывался.

Прочитал за тебя доку(ссылка выше)

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

 Условию может предшествовать “not”, для его отрицания, и, также, есть некоторые отрицательные формы условия, которые более похожи на английский язык.
И отрицание должно делаться так:
$recipients: not match "(anna@mydomain1.ru|sveta@2.ru)"
В итоге должно получиться примерно следующее:

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

if
$recipients: match "(@mydomain1.ru|@mydomain2.ru|@mydomain3.ru)"
and
$recipients: not match "(anna@mydomain1.ru|sveta@2.ru)"
then... 
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Непрочитанное сообщение Marquez » 2007-06-18 8:58:56

Спасибо за прочтение. Я пока в процессе.

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Непрочитанное сообщение Marquez » 2007-06-18 10:01:54

Хм. Добавил строку, убивающую рикошеты и ещё парочку в правила. Перестала ходить почта. Не знаю из-за какой строки именно, но до вечера, откатился назад, до выяснения. Если закомментировать рикошеты и две строки, начинающиеся с "and" - всё работает. Листинг файла:

# Exim filter

#Ne otpravlyaem rikoshety
if error_message
then
finish
endif

if ${mask:$sender_host_address/24} is 192.168.0.0/24
and
$recipients: match "(@domain1.ru|@domain2.ru)"
then
unseen deliver out@mydomain.ru
endif

if
$recipients: match "@mydomain.ru"
and
$recipients: not match "postmaster@mydomain.ru"
then
unseen deliver in@mydomain.ru
endif

Гость
проходил мимо

Непрочитанное сообщение Гость » 2007-06-18 15:04:09

В общем, всё ОК. Только не просто not match, а does not match.

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

Непрочитанное сообщение Alex Keda » 2007-06-18 15:13:21

хорошая кнопочка:
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Непрочитанное сообщение Гость » 2007-06-18 15:19:15

lissyara писал(а):хорошая кнопочка:

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

[/quote]
Буду иметь в виду  :) Кстати, на такой сервис от exim не стоит надеяться? (может что дополнительно прикрутить?) Отправитель высылает письмо на определенный домен, но пока ответсвенное лицо не ознакомилось с текстом письма и не дало добро (в виде отправки какого-ли бо текста на спец ящик, я фантазирую :D ), письмо никуда не уходит.

P.S. lissyara, на какой адрес пиво высылать?   :P

Гость
проходил мимо

Непрочитанное сообщение Гость » 2007-06-18 15:20:00

Забыл сделать "вход".

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Непрочитанное сообщение Marquez » 2007-06-18 15:21:08

Дважды. Удалите лишнее, чтобы не захламлять.

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

Непрочитанное сообщение dikens3 » 2007-06-18 16:57:46

Anonymous писал(а):В общем, всё ОК. Только не просто not match, а does not match.
:-)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

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

Непрочитанное сообщение dikens3 » 2007-06-18 16:58:49

Anonymous писал(а):Отправитель высылает письмо на определенный домен, но пока ответсвенное лицо не ознакомилось с текстом письма и не дало добро (в виде отправки какого-ли бо текста на спец ящик, я фантазирую :D ), письмо никуда не уходит.
А по русски?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Непрочитанное сообщение Marquez » 2007-06-19 7:57:22

А по русски?
Куда уж более. При отправке почты на определенный список адресов, письма не уходят пока ответсвенное лицо (руководство, безопасность - не важно) не ознакомились с ними и не дали виртуальное добро в виде каких-либо действий с почтой (фантазия - отсылка "1" для разрешения на определенный адрес). В любом случая, я сомневаюсь, что exim это сможет реализовать.

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

Непрочитанное сообщение Alex Keda » 2007-06-19 12:47:42

тока внешним скриптом, которой на рас крутится к экзиму.
пишется такой скрипт тоже с полпинка.
========
тока ты не напишешь, т.к. документацию не читаешь, а выдвигаешь предположения :)
Убей их всех! Бог потом рассортирует...

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Непрочитанное сообщение Marquez » 2007-06-19 16:12:53

lissyara писал(а):тока внешним скриптом, которой на рас крутится к экзиму.
пишется такой скрипт тоже с полпинка.
========
тока ты не напишешь, т.к. документацию не читаешь, а выдвигаешь предположения :)
Намёк понят :wink:

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Re: Exim. Проверка системного фильтра

Непрочитанное сообщение Marquez » 2007-07-17 11:50:26

В продолжение темы. Решил сделать правило: все отлупы от сторонних серверов и своего (неверный адрес и прочее) посылать копией на отдельный ящик. Как правило подобные письма приходят с адресов типа "Mailer-Daemon@". Правило:

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

if
$sender_address: match "mailer-daemon"
then
unseen deliver test@domain.ru
endif
Не работат. Что может быть не так?

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

Re: Exim. Проверка системного фильтра

Непрочитанное сообщение Alex Keda » 2007-07-17 12:00:09

неправильно. лучше смотри на путь возврата - он пустой должен быть.
Убей их всех! Бог потом рассортирует...

Marquez
рядовой
Сообщения: 20
Зарегистрирован: 2007-06-16 0:03:29

Re: Exim. Проверка системного фильтра

Непрочитанное сообщение Marquez » 2007-07-17 12:26:41

lissyara писал(а):неправильно. лучше смотри на путь возврата - он пустой должен быть.
Почему неправильно, вот это мне непонятно...

Т.е. предлагаете сделать так:

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

if
[b]$Return-path: match ""[/b]
then
unseen deliver test@domain.ru
endif
"Пустой" каким образом обозначается?