- Нуль или более лексем (david) соответствуют первому символу $*
- Адрес содержит литерал <@
- Нуль или более лексем (пять лексем фрагмента ora.wrotethebook.com) соответствуют требованиям второго символа $*
- Адрес содержит литерал >
- Нуль или более (в данном случае нуль) лексем соответствуют требованиям последнего символа $*
Сопоставление адреса с шаблоном приводит к созданию двух неопределенных лексем. Лексема $1 содержит david, а лексема $2 содержит ora.wrotethebook.com. Других соответствий не было, поэтому лексема $3 пуста. Эти неопределенные лексемы используются для переписывания адреса в следующую тройку значений:
$#smtp$@ora.wrotethebook.com$:david<@ora.wrotethebook.com>
Компоненты результата:
$#smtp smtp - внутреннее имя почтовой программы, доставляющей сообщение. $@ога.wrotethebook.com ога. wrotethebook. com - узел-получатель. $:david<@ora.wrotethebook.com> david<@ora.wrotethebook.com> - пользователь-адресат.
Существует ряд вариаций синтаксиса тройки значений почтовой программы, которые также используются в шаблонах некоторых правил. Две из таких вариаций содержат только составляющую «почтовой программы».
$#OK
Указывает, что исходный адрес прошел проверку безопасности. К примеру, адресу разрешена пересылка почтовых сообщений.
$#discard
Указывает, что исходный адрес не прошел тот или иной тест безопасности и сообщение электронной почты должно быть удалено.
Ни одно из значений - OK, discard и error - не фигурирует в командах М наряду с реальными почтовыми программами. Однако в документации по sendmail эти значения названы «почтовыми программами»; этой терминологии мы здесь и следуем.
Почтовые программы $#0К и $#discard используются в управлении пересылкой и в безопасности. Почтовая программа $#discard молча удаляет почту и не возвращает отправителю сообщение об ошибке. Почтовая программа $#error также работает с почтовыми сообщениями, не подлежащими доставке, однако, в отличие от $#discard, возвращает отправителю сообщение об ошибке. Конструкция шаблона для почтовой программы $#error сложнее, чем синтаксис $#0К и $#discard. Выглядит она следующим образом:
$#error $@dsn-code $:message