Регистрация...

Eserv Forum / E4 / Mail / Списки рассылки через SMTP-фильтры

recent wikipost // (v2)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
Пытаюсь разобраться с использованием списков в SMTP-фильтрах.
Например надо заменить конкретного получателя на список.

Стадия протокола RCPT TO
RCPT TO равен пользователь@локал.домен
Выполнить SETRCPT с параметром ..\CONF\lists\smtp\test.txt

Работает!
Но в локал.домен может быть ПЯТЬ разных доменов. И по крайней мере один из них не прописан ни в каких DNS-ах. (исторический анахронизм, но обязаны поддерживать). Заменить этот локал.домен на какую переменную возможно? Кто-нибудь уже сталкивался с подобным?
 
Комментарии к версии 1 (07.08.2013 07:36) [~pavlad] 9efee430
Комментарии к этой версии (07.08.2013 07:37) [~pavlad] f8f801c6
АвторДатаТекстtags
ac07.08.2013 09:36
Можно либо сделать 5 аналогичных фильтров со своим доменом в каждом, либо в поле RCPTTO тоже использовать файл-список.
wikipost
pavlad07.08.2013 16:21
ред: 07.08.2013 16:27
Т.е. сделать конструкцию типа RCPTTO пользователь@{LocalDomain} совсем никаких вариантов нет? Ведь при RCPTTO сервер уже однозначно Знает — в Local или Outbond пойдет письмо. О чём и сообщает в своих логах. Потому вполне логично на мой взгляд была-бы и обратная цепочка — если в правиле фильтра указана переменная типа {LocalDomain} то соответственно и проверяется принадлежность получателя согласно
ac пишет: Список локальных доменов в разделе "Домены" в консоли управления.
одним фильтром, а не последовательно пятью или более.
ac пишет: сделать 5 аналогичных фильтров со своим доменом в каждом
— когда идет речь про перетаскивание под сотню алиасов и списков рассылки с E3 на E4 — ошибиться вероятность повышается в соответственно раз.
wikipost
ac07.08.2013 21:51
pavlad пишет: Потому вполне логично на мой взгляд была-бы и обратная цепочка — если в правиле фильтра указана переменная типа {LocalDomain}


Конструкция {...} — это просто подставновка, имеет один результат на выходе, а не условие сравнения. Т.е. "сравнить с 5ю разными" так не получится.

pavlad пишет: Ведь при RCPTTO сервер уже однозначно Знает — в Local или Outbond пойдет письмо. О чём и сообщает в своих логах.

Он знает об этом только на финальном этапе разворачивания алиасов и списков. А стадия RCPTTO как раз ведёт к этому финалу, и в момент выполнения правила финал еще не ясен.

pavlad пишет: когда идет речь про перетаскивание под сотню алиасов и списков рассылки с E3 на E4 — ошибиться вероятность повышается в соответственно раз.

Да, но список списков рассылок в E3 имеет вид файла-списка, в первом поле адрес списка. Этот файл годится к прямому переносу в E4 — можно вставить его имя в RCPTTO...

И еще один способ: поставить условие "локальный ли это домен" в поле "Правило". Например так:
RCPTTO GetDomainFromEmail GetDID

GetDID даёт id домена, или 0 в случае, если его в списке нет, т.е. результат можно использовать как флаг TRUE/FALSE.
Или так:
RCPTTO GetEmailStatus NIP NIP NIP NIP

GetEmailStatus ( стек: emla emlu — did uid da du islocal_flag ), и этими NIP'ами мы убираем всё кроме islocal_flag.
Или:
RCPTTO GetEmailStatus DROP 2SWAP 2DROP =~ ExDelivery:Local*
(эти "ExDelivery" вам известны по логам, можно более гибко определять тип адреса по ним).

GetEmailStatus делает сложные проверки адреса, в т.ч. по алиасам, учитывает email'ы, используемые в качестве логинов (т.е. локальную учетку не локального домена), админские логины из ini (которые могут отсутствовать в общем списке учеток) и прочие хитрости и исторические совместимости.
wikipost
pavlad08.08.2013 14:08
Спасибо за развёрнутый ответ, конечно. Вопрос сколько времени уйдёт на понять — что означают эти строчки и куда их вставлять... Попробую спросить Вас ещё раз, на другом примере:
...в настройках юзера в опциях "Пересылать на Email" по дефолту значится "нет, локальный"
И когда приходит письмо этому юзеру (неважно с каким из локальных.доменов в поле КОМУ или даже вообще без домена), сервер сразу пишет что
... OK, ExDelivery:Local, a=L
и только несколько потом
...250 OK message accepted for delivery (alias or copy)
, это если дефолтная запись заменена на что-то другое.

Напишите, пожалуйста, по шагам — как надо расписать это в правилах фильтра. Это же вроде простейшее правило пересылки должно быть. А моей соображалки пока не хватает.
wikipost
Работает на Eserv/5.05567 (10.02.2020)