exim4 - заменить имя домена получателя, виртуальные домены

Я привязываю к настройке exim4 как MTA для многодоменного хоста. Все пользователи и домены являются виртуальными и хранятся в базе данных следующим образом:

create table emails
(
domain varchar(200),
username varchar(200),
password varchar(200)
)

Сообщения хранятся в maildirs:

directory = /var/spool/mail/$domain/$local_part

У меня несколько доменов, например private.tld, company1.tld и company2.tld. Я хочу настроить exim для обработки доменов company1 и company2, таких как company1, и также хочу обрабатывать поддомены, такие как www.private.tld как private.tld. И мне нужно, чтобы это выполнялось для каждого пользователя, без явных псевдонимов для каждого пользователя. Как я понял, мне нужно сделать что-то вроде псевдонимов домена, поэтому я создал таблицу:

create table domains_aliases
(
  source_domain varchar(300),
  replacement_domain varchar(300)
)

И добавил выберите исходный_домен из domain_aliases в MAIN_LOCAL_DOMAINS. А теперь я хотел бы написать правило с условием для доменов, перечисленных в этой таблице, возможно, так (не уверен):

condition = $ {lookup sql {select source_domain from domain_aliases, где source_domain = $ {quote_sql: $ domain}} {{yes} {no}}}

А затем выполните замену - измените $ domain на выберите replace_domain из domains_aliases, где source_domain = '$ {quote_sql: $ domain}' Я искал документы, но не нашел, как это сделать. Может какие-то headers_rewrite? Не могу найти это в документации, мне это немного непонятно, пожалуйста, помогите.

Обновление: только что понял, что можно сделать driver = redirect для чего-то вроде select $ loacl_part @ replace_domain from domain_aliases, где source_domain = $ домен , но, может быть, есть способ получше?

0
задан 3 December 2018 в 13:47
1 ответ

Обычно вы хотите установить в качестве домена соответствующий домен для сервера. Скорее всего, вы оставите для домена конверта значение "qualify_domain". Возможно, вам потребуется настроить сервер для виртуальных хостов. (Пользователи должны быть в соответствующем файле псевдонимов домена.) У меня есть следующий маршрутизатор для обработки виртуальных доменов.

# This router handles aliasing using traditional /etc/aliases type files.
#
#### NB  You must ensure that /etc/exim/virutual/${domain} file exist
####
#### This works with the standard "name : destination" alias format

# Domain aliases
vdomain_aliases:
  debug_print = "R: vdomain_aliases for $local_part@$domain"
  driver = redirect
  allow_fail
  allow_defer
  domains = dsearch;/etc/exim4/virtual
  data = ${lookup{$local_part}lsearch*@{/etc/exim4/virtual/$domain}}
  qualify_preserve_domain
0
ответ дан 5 December 2019 в 05:01

Теги

Похожие вопросы