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

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Tark
проходил мимо
Сообщения: 2
Зарегистрирован: 2010-04-29 18:56:05

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

Непрочитанное сообщение Tark » 2010-04-29 19:17:39

Здравствуйте!
У меня есть сайт, на сайте пользователи получают поддомен; они должны иметь возможность создавать почтовые ящики на нем для пересылки почты на реальный почтовый ящик. То есть пользователь 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'}}

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

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

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

Непрочитанное сообщение dikens3 » 2010-04-29 21:02:04

Что, если кто-то прислал мыло на 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
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Tark
проходил мимо
Сообщения: 2
Зарегистрирован: 2010-04-29 18:56:05

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

Непрочитанное сообщение Tark » 2010-04-29 21:12:28

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

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

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

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

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

Непрочитанное сообщение dikens3 » 2010-04-29 21:18:23

dikens3, то есть при получении почты для переселки exim каждый раз опрашивает базу, так?
Думаю смотрит в кеш сначала.
Но если будет под 1-10К пользователей (мало ли), то LIMIT 1 будет совсем-совсем нелишним же.
Безусловно. Только такое количество доменов обычно не бывает у рядовых пользователей. Т.е. обычно такие задачи не поручают новичкам типа Вас. Считаю, что с пользователями нужен LIMIT, с доменами я себе тоже сделал.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.