Exim очень просто в понимании. Смотрите как устроен роутер.
Сначала его нужно назвать, например:
Далее нужно определиться, что он должен делать, например:
Роутер “
manualroute” назван таким образом потому что он предоставляет возможность “ручной” маршрутизации (manual routing) адреса в соответствии с его доменом.
таким образом получаем:
Далее думаем в каких случаях он будет срабатывать.
Например у нас есть файл с пользователями в виде:
Код: Выделить всё
user1@example.com
user2@example.com
user3@example.com
...
Если полистать документацию, найдём там:
condition routers‡ string† незадана
Эта опция определяет главный тест предварительного условия, который должен быть успешным, для вызова роутера. Опция “condition” - последнее предварительное условие, для оценки (смотрите раздел 3.12). Строка раскрывается, и если результат принудительно неудачен, или пустая строка, или одна из строк “0”, или “no”, или “false” (проверяется без учёта регистра), роутер пропускается, и адрес предлагается следующему.
Если результат - любое другое значение, роутер запускается (поскольку это - последнее предварительное условие для оценки, все другие предварительные условия должны быть истинными).
http://www.lissyara.su/doc/exim/4.62/ge ... r_routers/
Значит следующая строка будет
Код: Выделить всё
condition = условие, которое проверяет требуемые E-Mail'ы.
Нам требуется использовать поиск в файле. Ищем в
документации как сделать какой-либо поиск. Найдя поиск который нам подходит (или переделав файл источник под один из них), создаём условие.
Код: Выделить всё
condition = ${lookup{$local_part@$domain}lsearch{/путь/файл_со_списоком_пользователей}}
Далее определяемся с транспортом/дополнительными опциями и т.п.
Код: Выделить всё
route_list = example.com 192.168.1.2
transport = remote_smtp
Вообще поиск можно наверное сразу в route_list засунуть.
С поиском не знаю, будет работать или нет, попробуй. Я не помню уже что и как там.
Итого:
Код: Выделить всё
special_route:
driver = manualroute
condition = {${lookup{$local_part@$domain}lsearch{/путь/файл_со_списоком_пользователей}}{Yes}{No}}
route_list = example.com 192.168.1.2
transport = remote_smtp