Вы не можете заставить удаленного клиента попытаться аутентифицироваться, потому что вы не знаете, пока RCPT TO:
клиент пытается доставить электронное письмо на ваш сервер (который не требует аутентификации, если у вас нет очень необычной конфигурации, например, прием почты только с известных почтовых серверов), или он пытается ретранслировать через ваш почтовый сервер без авторизации.
Этап RCPT TO
сеанса SMTP наступает сразу после любого согласования AUTH (если таковое имеется).
Шаблоны подстановки имен файлов и регулярные выражения в некоторой степени перекрывают синтаксис, но работают принципиально по-разному.
Регулярное выражение e
будет соответствовать (в )строке hello
, а шаблон подстановки имени файла e
— нет. Шаблоны подстановки неявно привязаны, поэтому шаблон подстановки e
будет эквивалентен регулярному выражению, выглядящему примерно как ^e$
, но их применение может быть другим (регулярное выражение будет соответствовать полной строке в тексте, тогда как шаблон глобуса обычно соответствует одному имени файла ).
Шаблоны подстановки имен файлов также не содержат никаких специальных символов, уточняющих предыдущее выражение, таких как *
или ?
в регулярном выражении, или каких-либо средств для группировки частей выражений, как это делает (...)
в регулярном выражении. выражения или чередовать возможные вложенные шаблоны -, как это делает |
в регулярном выражении. Некоторые оболочки, очевидно, добавляют что-то из этого, как, например, bash
с включенным shopt -s extglob
.
Подстановочные шаблоны используются не так, как регулярные выражения.Регулярные выражения в основном используются для выбора/сопоставления строк из текстов, тогда как шаблоны подстановки имен файлов в основном (, но не исключительно )используются для сопоставления имен файлов или создания списков существующих имен из каталога.. Шаблоны подстановки используются для сопоставления строк , например. case... esac
, но оболочка POSIX никогда не использует регулярные выражения для создания списков имен из каталога, если не расширена с этой возможностью.
Оба типа шаблонов определены стандартом POSIX:
Что касается шаблонов подстановки, стандарт начинается со слов
The pattern matching notation described in this section is used to specify patterns for matching strings in the shell. Historically, pattern matching notation is related to, but slightly different from, the regular expression notation described in XBD Regular Expressions. For this reason, the description of the rules for this pattern matching notation are based on the description of regular expression notation, modified to account for the differences.
Существует несколько «диалектов» регулярных выражений, таких как упомянутый вами PCRE, но нельзя сказать, что шаблоны подстановки имен файлов являются одним из них.
Существует несколько языков шаблонов, похожих на шаблоны подстановки имен файлов в оболочке, например шаблоны, используемые в SQL-запросах с LIKE
. Все они довольно просты и обычно предоставляются как удобный способ сопоставления битов строк. Регулярные выражения, по сравнению с ними, намного сложнее.
Вы упоминаете "bash
регулярные выражения". Оболочка bash
поддерживает регулярные выражения, но не для сопоставления имен файлов. В [[... ]]
оператор =~
выполняет сопоставление регулярного выражения строки в левой части с регулярным выражением в правой части. Тип регулярных выражений, который оболочка bash
поддерживает таким образом, представляет собой стандартный расширенный набор регулярных выражений.Дополнительную информацию об этом см. в руководстве bash
к вашей системе.
Подстановочные знаки и регулярные выражения — это два разных языка шаблонов. Тот факт, что в семантике некоторых паттернов есть некоторое совпадение, не означает, что один обязательно является «диалектом» другого. Все, кто использовал оба, признают сходство, но сохранение различий в именах снижает вероятность путаницы.
В связи с этим я нахожу прискорбным, что так много типов регулярных выражений (, по крайней мере, основных, расширенных и Perl с вариациями )имеют очень похожие имена. По моему опыту, большинство людей не уточняют, что они имеют в виду, что иногда вызывает ненужную путаницу. Если бы этим вкусам дали более отчетливые названия, возможно, было бы легче говорить о них без недоразумений.