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

Eserv Forum / E3 / Eserv 3 Mail Server Support / Странность при работе MContent

imported // (v1)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
Новости
12.10.2009
Переезд завершен
Есть такое правило в CustomMContent.rules.txt:

MailFrom ~ *@domen1.ru
RCPTTO S" c:\Eserv3\MyConf\MyLists\aliasto.txt" IsInFile AND
[IF]
FIELD2 AddRcpt
FIELD1 DelRcpt
\EOF
[THEN]

файл aliasto.txt имеет следующую структуру:

"EMAIL";"NEWEMAIL"
"user1@domainto.ru";"user1@domaintonew.ru"
"user2@domainto.ru";"user2@domaintonew.ru"
"user3@domainto.ru";"user3@domaintonew.ru"

Происходит вот что. Если письмо отправляется по одному адресу из списка, замена происходит нормально.
Но если письмо отправляется всем сразу, то замена просходит только для последнего адреса в списке.

Думаю это неправильно. Может я где-то ошибся?
 
Комментарии к этой версии (07.02.2007 12:05) [~mixsv] 8a31a4af
АвторДатаТекстtags
pig07.02.2007 13:09
Работает как написано. Действительно, когда дело доходит до MContent, в RCPTTO находится последний адрес получателя. Если надо шерстить весь список получателей, то это как-то по-другому делать надо...
imported
mixsv07.02.2007 13:21
А при использовании алиасов "шерстится" весь список?
imported
mixsv07.02.2007 13:29
Проверил, с алиасами работает нормально.

И все-таки считаю, что MContent работает неправильно. Он должен срабатывать на каждый адрес в списке.
imported
pig07.02.2007 15:48
Компьютер делате то, что вы ему велели делать, а не то, что вы от него хотите ©
Приведённый код работает по написанному. Чтобы работало по-другому, нужен другой код. Малость посложнее. Наверное, дополнительный плагин, вдруг ещё где пригодится, не только в MContent. Собственно, от самого MContent в том коде ничего нет.
imported
mixsv07.02.2007 17:23
Я понял. Но это мне не подсилу.

И не потому, что это сверх сложная задача, алгоритм ее примерно представляю и он достаточно прост.

Но для его реализации требуется более глубокое знание Форта.
imported
pig07.02.2007 17:44
Вот я сижу и думаю, как это аккуратно реализовать.
imported
rvm07.02.2007 21:33
В robots\mcontent\MContent.rules.txt есть строка
\ Проходим по индивидуальным расширенным правилам для каждой MIME части ( если они есть )

Значит, аналогично еще нужно
\ Проходим по индивидуальным расширенным правилам для каждого получателя ( RCPTTO )
.... ForEachRcptto: smtp\customrules\CustomRcptto
Похоже?
imported
pig07.02.2007 21:48
Непонятно, насколько корректно это отработает в случае замены элементов списка внутри цикла. IMHO, в данном случае правильнее будет сделать один проход по списку, вызывая для каждой строки SearchRcpt и, в зависимости от результата, DelRcpt + AddRcpt. И быстрее к тому же (меньше дисковых операций).
imported
rvm07.02.2007 23:02
То бишь, сделать более специализированное решение, типа
MailFrom ~ *@domen1.ru | ReplaceRcpttoByList: aliasto.txt

Может, это и проще...
Так или иначе — специальный итератор надо делать: или по списку uRCPTLIST (чтобы итерировал по копии), или по списку aliasto.txt (вместо IsInFile). Об оптимизации я бы тут задумался, лишь когда скорости будет не хватать
imported
mixsv08.02.2007 10:13
Братцы, спасибо, что озаботились моей проблемой, но вчера, страдая бессоницей, мне пришла мысль, что сочетание alises + RestrictedAliases.txt в стандартной конфигурации может решить данный вопрос.

Как думаете?

Надо попробовать.
imported
pig08.02.2007 11:20
Нет, в общем случае не решит. Вам надо игнорировать, если отправитель не из нужного домена, а правило будет отвергать получателя. Но если другие ваши ограничения всё равно приведут в этом случае к отказу, то сгодится.
imported
mixsv08.02.2007 11:43
Я попробовал данный вариант. Результат не однозначный.

В принципе отвергание меня устроило бы, но есть одно но. Если список получателей состоит из разрешенных адресов и алиасов, на которые наложено ограничение — отвергается письмо вообще. Это меня не устраивает.

Вообще списку алиасов нехватает флагового поля (примерно как в черных списках урлов), в которое можно было бы вписать условие. Если результат ноль — алиас срабатывает, если не ноль — игнорируется.

Кстати, такое поле не помешало бы для списков управления доступом почтового сервера (ToEmailBlackList.txt и т.п.).
imported
pig09.02.2007 10:28
Плагин: http://www.eserv.ru/download/batch_alias.rar
Положите куда-нибудь, подключите в OnStartupPlugins и пользуйте. Краткое описание прямо в index.f.
imported
mixsv09.02.2007 12:06
Ну, братцы, не слов. Восхищен и вами и Фортом.

Большое спаисбо. Все работает как надо.

Будете в Калининграде — с меня пиво.
imported
Работает на Eserv/5.05567 (10.02.2020)