Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tema_7_6_Spiski_Kontrolya_Dostupa (1).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
88.58 Кб
Скачать

Нахождение acl для использования

   Значение опции “acl_smtp_xxx” раскрывается перед использованием, таким образом, вы можете использовать различные ACL для разных ситуаций. Результирующая строка не должна бфть именем ACL в конфигурационном файле; есть другие возможности. Раскрыв строку, exim ищет ACL в следующим образом:

 Если строка начинается со слэша, exim использует её как имя файла, и читает его содержимое как ACL. Строки обрабатываются таким же образом, как строки в конфигурационном файле exim`a. В частности, поддерживается продолжение строк, пустые строки игнорируются, как и строки, чей первый символ, не являющийся пробелом - “#”. Если файл не существует, или не может быть прочитан, происходит ошибка (типично - вызывается временная ошибка любой вызываемой для запуска ACL). Например:

acl_smtp_data = /etc/acls/\

${lookup{$sender_host_address}lsearch\

{/etc/acllist}{$value}{default}}

   В примере ищется используемый файл ACL на основе IP-адреса хоста, в случае неудачи поиска, используется дефолтовое значение. Если ACL успешно прочитана из файла, она сохраняется в памяти при работе процесса exim`a, таким образом, она может быть повторно использована, без необходимости перечитывать файл.

 Если строка не начинается со слэша, и не содержит каких-либо пробелов, exim ищет секцию ACL в конфигурации ACL чьё имя совпадает со строкой.

 Если имя ACL не найдено, или строка содержит пробелы, exim обрабатывает строку как ACL. Это может сэкономить ввод (в смысле - меньше букавок набирать - прим. lissyara) в случаях, когда вы хотите сделать что-то типа этого:

acl_smtp_vrfy = accept

для разрешения свободного использования команды VRFY. Такая строка может содержать символы новой строки; она обрабатывается таким же способом, как и ACL читаемая из файла.

Коды возврата acl

   Исключая ACL QUIT, которая не затрагивает код возврата SMTP (смотрите выше, секцию 39.7), результат работы ACL - или “accept” или “deny”, или, проверка не может быть завершена (например, упала БД) - “defer”. Эти результаты вызывают использование кодов ответа “2xx”,“5xx”, и “4xx” в диалоге SMTP, соответственно. Четвёртое возвращаемое значение, “error”, происходит при ошибках, типа неправильного синтаксиса в ACL. Она также вызывает “4xx” код возврата.    Для не-SMTP ACL, “defer” и “error” - рассматриваются также как и “deny”, поскольку не существует механизма для передачи временных ошибок отправителям не-SMTP сообщений.    ACL, которые релевантны приёму сообщений, также могут вернуть “discard”. Это имеет тот же самый эффект что и “accept”, но, вызывает отбрасываение всего сообщения, или адреса отдельного отправителя. Другими словами - это, средство для органицации чёрной дыры (имеется ввиду - сообщения уходят вникуда - прим. lissyara). Используйте это с осторожностью.    Если ACL для MAIL возвращает “discard”, и все получатели отбрасываются, и для последующих команд RCPT не запускается никаких ACL. Эффект “discard” в ACL RCPT - отбрасывание лишь одного адреса получателя. Если не осталось получателей сообщения, когда получены данные сообщения, ACL DATA не запускается. Если “discard” возвращается из DATA, или не-SMTP ACL, - отбрасываются все получатели. Не разрещается возвращать “discard” для ACL“acl_smtp_predata”.    Функция “local_scan()” запускается всегда, даже если не осталось получателей; она может создать новых получателей.