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

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

Модератор: xM

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

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

Непрочитанное сообщение dikens3 » 2008-11-21 10:47:40

Взято из статей.
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" для поле Кому
Не работает. Отсюда необходим другой тип обработки. Надо подумать.
Лучше установить 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
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2009-03-09 2:02:47

ну, вообще - нормально.
вначально отальясились, адреса изменились.
тем же запросом пробежались - но адреса-то уже другие...
у меня оно щас выглядит так:

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

# смотрим альясы
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
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Cancer
Гл. Кастратор
Сообщения: 1269
Зарегистрирован: 2008-03-25 12:21:36
Откуда: г. Ростов-на-Дону
Контактная информация:

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

Непрочитанное сообщение Cancer » 2009-03-09 16:08:33

# Всё что осталось - это локальные адресаты.
# Доставляем почту в 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

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