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

Вопрос по статьям exim + dovecot

Добавлено: 2008-11-21 10:47:40
dikens3
Взято из статей.
http://www.lissyara.su/?id=1173 (Автор: lissyara.)
http://www.lissyara.su/?id=1728 (Автор: Cancer.)

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

# смотрим альясы
system_aliases:
    driver      = redirect
    allow_fail
    allow_defer
    data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
            `address`='${quote_mysql:$local_part@$domain}' OR \
                `address`='${quote_mysql:@$domain}'}}

# Всё что осталось - это локальные адресаты.
# Доставляем почту в dovecot
dovecot_user:
  driver = accept
  condition = ${lookup mysql{SELECT `goto` FROM \
  `alias` WHERE \
  `address`='${quote_mysql:$local_part@$domain}' OR \
  `address`='${quote_mysql:@$domain}'}{yes}{no}}
  transport = dovecot_delivery
Нормально то, что пользователи и алиасы это один и тот же запрос?

Сам пока сделал так:

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

# Список алиасов
MYSQL_ALIASES           = SELECT goto FROM alias WHERE address='${quote_mysql:$local_part@$domain}' OR address='${quote_mysql:$domain}'

# Список пользователей
MYSQL_USERS             = SELECT username FROM mailbox WHERE username='${quote_mysql:$local_part@$domain}' LIMIT 1


...
...
system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup mysql{MYSQL_ALIASES}}

dovecot_user:
  driver = accept
  condition = ${lookup mysql{MYSQL_USERS}{yes}{no}}
  transport = dovecot_delivery
  cannot_route_message = Unknown user
...
...
Далее попробовал переслать всю почту с одного домена на другой:

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

Для создания catch-all почтового ящика используйте "*" в качестве имени алиаса.
для внутридоменного перенаправления используйте "*@domain.tld" для поле Кому
Не работает. Отсюда необходим другой тип обработки. Надо подумать.

Re: Вопрос по статьям exim + dovecot

Добавлено: 2009-03-09 2:02:47
Alex Keda
ну, вообще - нормально.
вначально отальясились, адреса изменились.
тем же запросом пробежались - но адреса-то уже другие...
у меня оно щас выглядит так:

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

# смотрим альясы
mysql_aliases:
        driver      = redirect
        allow_fail
        allow_defer
        data = ${lookup mysql{SELECT LCASE(`goto`) FROM `alias` WHERE \
                `address`=LCASE('${quote_mysql:$local_part@$domain}') OR \
                `address`=LCASE('${quote_mysql:@$domain}') AND `active`='1' \
                ORDER BY SUBSTRING_INDEX(`address`,'@',1) DESC LIMIT 1}}

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

# Всё что осталось - это локальные адресаты.
# Доставляем почту в dovecot
dovecot_user:
        driver = accept
        condition = ${lookup mysql{SELECT LCASE(`goto`) FROM \
                `alias` WHERE \
                `address`=LCASE('${quote_mysql:$local_part@$domain}') OR \
                `address`=LCASE('${quote_mysql:@$domain}') AND `active`='1' \
                ORDER BY SUBSTRING_INDEX(`address`,'@',1) DESC LIMIT 1}{yes}{no}}
        transport = dovecot_delivery
        cannot_route_message = Unknown user

Re: Вопрос по статьям exim + dovecot

Добавлено: 2009-03-09 16:08:33
Cancer
# Всё что осталось - это локальные адресаты.
# Доставляем почту в dovecot
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT LCASE(`goto`) FROM \
`alias` WHERE \
`address`=LCASE('${quote_mysql:$local_part@$domain}') OR \
`address`=LCASE('${quote_mysql:@$domain}') AND `active`='1' \
ORDER BY SUBSTRING_INDEX(`address`,'@',1) DESC LIMIT 1}{yes}{no}}
transport = dovecot_delivery
cannot_route_message = Unknown user
Мне так не подойдет такой роутер, я так понял если он не находит определенного пользователя в БД выдаст сообщение мол пользователь неизвестен cannot_route_message = Unknown user

У меня отправка сообщений получается такая же, если нет в БД пользователя он перенаправляет письмо на мастерхост где он точно есть =), ну конечно не проблема под себя сделать =)