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

копирование in/out почты

Добавлено: 2007-08-14 11:00:12
Магистр
Есть необходимость копировать почту приходящую с определенного домена копировать в к.-л. почтовый ящик. Также всю исходящую почту на тот домен надо копировать в другой почтовый ящик. Можно ли это реализовать написав свой роутер (думаю можно)... если все таки можно, то как проверять в приходящей почте домен отправителя, а в исходящей -- получателя?

Re: копирование in/out почты

Добавлено: 2007-08-14 11:34:12
schizoid
а если алиас ?

Re: копирование in/out почты

Добавлено: 2007-08-14 11:38:28
dikens3
Можно системным фильтром воспользоваться:

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

# Exim filter
if error_message then finish endif                      # Не отправляем рикошеты
logfile /var/log/exim/system-filter.log
# Копируем почту от этих отправителей и определённому получателю
if $sender_address: match "^(smi@grw.ru)" and
$recipients: contains "user@mydomain.ru"
then
unseen deliver admin@mydomain.ru                               # Копируем на этот адрес
endif
# Перенаправляем входящую почту идущую от некоторых E-Mail'ов и определённым получателям
if $sender_address: match "(news@insur-info.ru|pg@www.fas.gov.ru|apache@creep.achbank.com)" and
$recipients: contains "user@mydomain.ru"
then
deliver admin@mydomain.ru                               # Перенаправляем на этот адрес
На основе этого изучай системный фильтр и сделать там можно достаточно много.

Re: копирование in/out почты

Добавлено: 2007-08-14 11:47:23
Магистр
спсб... будем творить!!!

Re: копирование in/out почты

Добавлено: 2007-08-14 11:51:41
Магистр
а можно в левой части адреса заместо имени ящика поставить "*" , что бы правила распространялись на весь домен целиком или просто поле слева от @ пустым оставить?

Re: копирование in/out почты

Добавлено: 2007-08-14 12:01:28
Магистр

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

if $recipients is "*@company.domain"
then
unseen deliver out-mail@my.domain
endif

if $sender_address is "*@company.domain"
then
unseen deliver in-mail@my.domain
endif
будет ли эта штука выполнять то что от нее требуется?...

Re: копирование in/out почты

Добавлено: 2007-08-14 12:11:28
dikens3
Я синтаксис не помню точно.
Т.е. IS может не поддерживать "*", т.е. REGEXP
Возможно его придётся заменить на match

А так да, нормально.

Re: копирование in/out почты

Добавлено: 2007-08-14 12:51:32
Гость
всмысле "*" заменить на match?
А что есть IS и REGEXP?

Re: копирование in/out почты

Добавлено: 2007-08-14 13:09:20
dikens3
IS это точное совпадение, т.е. в твоём случае сработает если E-MAIL будет:
*@company.domain

MATCH - включение REGXP (Обработка спец. символов), т.е. в твоём случае сработает если E-MAIL будет:
user1@company.domain
user2@company.domain
user3@company.domain
user4@company.domain
И т.д.
Т.е. * - любое количество символов.
В первом * - это локальная часть.

Хотя не помню синтаксис, но лучше match

Re: копирование in/out почты

Добавлено: 2007-08-14 13:18:56
Магистр
хм... а как узнать каким именно образом обрабатывается моя запись IS или REGEXP?

Re: копирование in/out почты

Добавлено: 2007-08-14 13:23:02
dikens3

Re: копирование in/out почты

Добавлено: 2007-08-14 13:32:37
Магистр
теперь все встало на свои места... спсб! щас все енто хоз-во тестить нада...

Re: копирование in/out почты

Добавлено: 2007-08-14 13:41:37
Магистр
хм.... не копируется...А можно ли узнать считывается ли вообще файл /usr/local/etc/exim/copy_mail.conf

Re: копирование in/out почты

Добавлено: 2007-08-14 13:43:16
Магистр
извините поторопился.... в конфиге строчка закоментирована была... :P (не ругайтесь сильно)

Re: копирование in/out почты

Добавлено: 2007-08-14 14:12:43
Магистр
В логах пишет

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

 2007-08-14 16:04:28 1IKuCJ-0000En-RJ Error in system filter: error while compiling regular expression "*@company.domain": nothing to repeat at offset 0
А вообще без "*" будет работать... (Спрашиваю т.к. проверить не сразу смогу)

Re: копирование in/out почты

Добавлено: 2007-08-14 14:27:08
dikens3
Должно работать и без *, только опять же используй contains или match, а не IS

Re: копирование in/out почты

Добавлено: 2007-08-14 14:45:42
Магистр
Всем спасибо за внимание -- работает...
вот чем все это закончилось:

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

root: /home/user=> vim /usr/local/etc/exim/copy_mail.conf
logfile /var/log/exim/mainlog

if $recipients matches "@comrany.domain"
then
unseen deliver out_mail@my.domain
endif

if $sender_address matches "@company.domain"
then
unseen deliver in_mail@my.domain
endif
да и не забудте раскоментировать строчку в конфиге Exim`а

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

system_filter = /usr/local/etc/exim/copy_mail.conf

Re: копирование in/out почты

Добавлено: 2007-08-15 10:06:51
Магистр
а вот еще вопрос можно ли почту на несколько ящиков копировать?

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

root: /home/user=> vim /usr/local/etc/exim/copy_mail.conf
logfile /var/log/exim/mainlog

if $recipients matches "@comrany.domain"
then
unseen deliver out_mail_1@my.domain
unseen deliver out_mail_2@my.domain
unseen deliver out_mail_3@my.domain
endif

Re: копирование in/out почты

Добавлено: 2007-08-15 13:36:26
Alex Keda
ну ты попробуй....

Re: копирование in/out почты

Добавлено: 2007-08-16 10:52:00
Магистр
Как то не стабильно копирует... Либо не копирует вовсе, либо копирует не на все адреса, либо на все...
Может есть какой-нить другой способ копирования почты... (начальнику не нравится текущее положение дел:)

Re: копирование in/out почты

Добавлено: 2007-08-16 11:21:59
Alex Keda
в логах все причины описаны почему и как.
в дебаге оно даже наглядно видно будет

Re: копирование in/out почты

Добавлено: 2007-08-16 13:27:07
Магистр
хм.. в логах по этому поводу последняя запись 2 дня назад, когда ошибки в синтаксисе были... щас тишина :(

Re: копирование in/out почты

Добавлено: 2007-08-16 13:28:33
Магистр
а вообще данная контрукция верна?

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

if $recipients matches "@comrany.domain"
then
unseen deliver out_mail_1@my.domain
unseen deliver out_mail_2@my.domain
unseen deliver out_mail_3@my.domain
endif

Re: копирование in/out почты

Добавлено: 2007-08-16 13:40:09
Магистр
быть может перезапись заголовков мешает?

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

begin rewrite

*@my.domain       office@my.domain  f
*@my.domain       $1@my.domain      r