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

Virtusers

Добавлено: 2007-09-21 6:43:37
FireWall
Всем доброго времени суток.

Подскажите как реализовать такую схему: приходит письмо от user@domain.com на 1****@mydomain.com. После 1 любые четыре цифры.
Как на exim'e реализовать прием почты для таких виртуальных ящиков, при таком драйвере алиаса?

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

    system_aliases:
        driver = redirect
        allow_fail
        allow_defer
        data = ${lookup mysql{SELECT recipients FROM aliases WHERE local_part='${local_part}' AND domain='${domain}'}}
P.S. Доку читал http://www.lissyara.su/?id=1200.

Про code понял. Прошу простить меня на первый раз :)

Re: Virtusers

Добавлено: 2007-09-21 7:52:51
Alex Keda
добавить условие в роутер, и сранивать адрес с регулярным выражением.
===========
а чё за изврат такой?

Re: Virtusers

Добавлено: 2007-09-21 8:00:12
FireWall
Сей изврат делается для пейджинговой компании. То есть сотовый оператор им шлет на мыло, а определенная прога читает это мыло и отправляет на пейджер. Кароче еще тот изврат.

как будет выглядеть регулярное выражение? пробывал 1d+\@mydomain.com pager@mydomain.com не получается. Не могу сообразить что будет за условие в драйвере?

Re: Virtusers

Добавлено: 2007-09-21 8:11:53
Alex Keda

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

lissyara# pcretest
PCRE version 7.3 2007-08-28

  re> #1\d+@domain.ru#
data> 111@domain.ru
 0: 111@domain.ru
data>
  re> #1\d+@domain.ru#
data> 111@domain.ru
 0: 111@domain.ru
data> 1aaa@domain.ru
No match
data> 1a222@domain.ru
No match
data> 11@domain.ru
 0: 11@domain.ru
data> 1@domain.ru
No match
data>     
а условие чё-то типа

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

condition = $if{ match{\N1\d+\N}{$local_part} .........

Re: Virtusers

Добавлено: 2007-09-21 10:39:12
FireWall
Если я все правильно понимаю, то этот кондишин не обязательно должен быть в алиасах?

Re: Virtusers

Добавлено: 2007-09-21 10:41:07
Alex Keda
ну, в каокм роутере - решать тебе, ибо яне до конца понимаю процессс обработки таких писем

Re: Virtusers

Добавлено: 2007-09-21 10:49:28
FireWall
lissyara писал(а):ну, в каокм роутере - решать тебе, ибо яне до конца понимаю процессс обработки таких писем
приходит письмо c sms@sotoviioperator.ru на несуществующий ящик 1000@mydomain.ru (1000 - это номер пейджера) в дальнейшем редиретится на pager@mydomain.ru. таких вот щиков может быть от 1000 до 90000.

Re: Virtusers

Добавлено: 2007-09-21 10:57:21
Alex Keda

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

pager_aliases:
        driver          = redirect
        allow_fail
        allow_defer
        data            = pager@mydomain.ru
        condition = $if{ match{\N\d+\N}{$local_part}  {yes}{no}}
        user            = mailnull
        group           = mail
        file_transport  = address_file
        pipe_transport  = address_pipe
типа того.
но надо полировать - писал на коленке

Re: Virtusers

Добавлено: 2007-09-21 11:10:52
Alex Keda
кстати, может имеет смысл заюзать условие local_parts - благо она раскрываемая

Re: Virtusers

Добавлено: 2007-09-21 11:14:19
FireWall
Приблизительно понятно. Спасибо за помощь - пойду полировать.

P.S.>Да, когда этим занялся узнал про pcretest - было бы неплохо если кто нить выложил полный список выражений c транслейтом :)

Re: Virtusers

Добавлено: 2007-09-28 10:50:51
FireWall
Получилось вот что (с помощью CIS Exim users mailing list):

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

pager_aliases:
        driver = redirect
        domains = mydomain.com
        allow_fail
        allow_defer
        data = pager@mydomain.com
        condition = ${if match{$local_part}{\N^[1-9]\d{2,4}$\N}{yes}{no}}
        user = exim
        group = mail
        file_transport = address_file
        pipe_transport = address_pipe