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

EXIM: уточнение насчет local_domains и relay_to_domains

Добавлено: 2010-04-29 19:17:39
Tark
Здравствуйте!
У меня есть сайт, на сайте пользователи получают поддомен; они должны иметь возможность создавать почтовые ящики на нем для пересылки почты на реальный почтовый ящик. То есть пользователь tark на сайте site.ru может сделать себе сайт tark.site.ru, а на нем завести мыло me@tark.site.ru и сказать, что надо все письма, которые на него приходят, должны пересылаться на tark@почтовый_сервер.ru. Я пробовал сделать такое на sendmail, получилось, но мне не удалось настроить sendmail так, чтобы он читал файлы virtusertable (релей мыло - реальное мыло) и local-host-names, которые лежали не в директории sendmail (все-таки эти файлы должны заполняться скриптами же). Но то, что я правил руками, настраивая релей, работало.
Проблема с сендмейлом для меня в том, что пишется все это в файл, достаточно тяжело изменять и удалять записи скриптами (опасно немного)

Мне посоветовали exim - и, в частности, статью http://www.lissyara.su/articles/freebsd ... tfixadmin/

В связи с этим есть пара вопросов... Что делают следующие запросы? Вернее, что там значит параметр ${domain} ?
Что, если кто-то прислал мыло на user@user.site.ru, то ${domain} == user.site.ru и просто проверяется, локальный ли это домен или нет? Но тогда стоило бы поставить LIMIT 1, чтобы не дергать лишний раз MySQL-сервер? Или что делают эти запросы и почему название переменных local_domains и relay_to_domains? Там должны быть _списки_ релеев и локальных доменов или? Можно ли сделать так, чтобы локальными считались все домены site.ru, включая поддомены или нужно заносить в таблицу ВСЕ поддомены сайта?

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

domainlist local_domains = ${lookup mysql{SELECT `domain` \
                            FROM `domain` WHERE \
                            `domain`='${domain}' AND \
                            `active`='1'}}

domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
                            FROM `domain` WHERE \
                            `domain`='${domain}' AND \
                            `active`='1'}}

Re: EXIM: уточнение насчет local_domains и relay_to_domains

Добавлено: 2010-04-29 21:02:04
dikens3
Что, если кто-то прислал мыло на user@user.site.ru, то ${domain} == user.site.ru и просто проверяется, локальный ли это домен или нет?
Ну да. Только правильнее сказать - соответствует некоторому списку или нет.
Но тогда стоило бы поставить LIMIT 1, чтобы не дергать лишний раз MySQL-сервер?
Я делаю с LIMIT 1:

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

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

mysql_user:
  driver = accept
  condition = ${lookup mysql{MYSQL_USERS}{yes}{no}}
  transport = dovecot_delivery
  cannot_route_message = Unknown user
Вообще не принципиально для малого количества доменов, да к тому же Exim кэширует запросы.
Что делают следующие запросы? Вернее, что там значит параметр ${domain} ?
$domain - это домен получателя. Тот, который вводится при rcpt to: user@mail.ru.
Почему название переменных local_domains и relay_to_domains
Да можно назвать хоть what_is_this = ...
Важно понимать где и для чего эта переменная будет использоваться.
Можно ли сделать так, чтобы локальными считались все домены site.ru
а попробуйте.

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

domainlist local_domains = *site.ru

Re: EXIM: уточнение насчет local_domains и relay_to_domains

Добавлено: 2010-04-29 21:12:28
Tark
dikens3, то есть при получении почты для переселыки exim каждый раз опрашивает базу, так? Насчет запросов понял)) Но если будет под 1-10К пользователей (мало ли), то LIMIT 1 будет совсем-совсем нелишним же.

А что насчет "Можно ли сделать так, чтобы локальными считались все домены site.ru, включая поддомены или нужно заносить в таблицу ВСЕ поддомены сайта?" В принципе, в настоящее время при заведении нового пользователя все равно записывается домен в файл для сендмейла, пусть он и не работает с ним, - можно вписывать в БД для экзима, но хотелось бы избежать лишних движений.
Да можно назвать хоть what_is_this = ...
так я и спрашиваю, это ввело меня в ступор)

Спасибо за ваш ответ, стало немного понятнее.

Re: EXIM: уточнение насчет local_domains и relay_to_domains

Добавлено: 2010-04-29 21:18:23
dikens3
dikens3, то есть при получении почты для переселки exim каждый раз опрашивает базу, так?
Думаю смотрит в кеш сначала.
Но если будет под 1-10К пользователей (мало ли), то LIMIT 1 будет совсем-совсем нелишним же.
Безусловно. Только такое количество доменов обычно не бывает у рядовых пользователей. Т.е. обычно такие задачи не поручают новичкам типа Вас. Считаю, что с пользователями нужен LIMIT, с доменами я себе тоже сделал.