Аутентификатор gsasl предоставляет интеграцию сервера GNU SASL и механизмы, которые это обеспечивает. Это нововведение выпуска 4.80, и есть несколько областей, где библиотека не позволяет Exim гладко масштабироваться, чтобы обработать будущие механизмы аутентификации, таким образом, нет никаких гарантий, что любой особый новый механизм аутентификации будет поддержан без изменений кода Exim.
server_channelbinding | Использование: gsasl | Тип: boolean | Значение по умолчанию: false |
Некоторые механизмы аутентификации в состоянии использовать внешний контекст в обоих концах сеанса, чтобы связать аутентификацию с тем контекстом, и прервать процесс аутентификации, если эти контексты отличаются. Определенно, некоторые TLS ciphersuites могут предоставить идентификационную информацию о криптоконтексте.
Это означает, что идентичность сертификата и проверка становятся надуманным вопросом, поскольку атака "человек посередине" заставит правильные клиент и сервер видеть различные идентификаторы, и аутентификация потерпит неудачу.
В настоящее время это поддержано только библиотекой GnuTLS. Это применимо только механизмами, которые поддерживают "channel binding" во время записи. Это принимает значение по умолчанию false, чтобы гарантировать гладкое обновление через выпуски Exim, в случае, если эта опция заставляет некоторых клиентов терпеть неудачу. Некоторый будущий выпуск Exim может переключить значение по умолчанию на true.
server_hostname | Использование: gsasl | Тип: string | Значение по умолчанию: см. ниже |
Эта опция выбирает имя узла, которое используется, общаясь с библиотекой. Значение по умолчанию: $primary_hostname. Некоторые механизмы будут использовать эти данные.
server_mech | Использование: gsasl | Тип: string | Значение по умолчанию: см. ниже |
Эта опция выбирает механизм аутентификации, который должен использовать этот драйвер. Значение по умолчанию: значение опции public_name. Эта опция позволяет Вам использовать различные основные механизм. Например:
sasl: driver = gsasl public_name = X-ANYTHING server_mech = CRAM-MD5 server_set_id = $auth1
server_password | Использование: gsasl | Тип: string | Значение по умолчанию: не задано |
Различные механизмы нуждаются в доступе к открытому тексту пароля на сервере так, чтобы доказательство владения могло быть продемонстрировано, не посылая пароль непосредственно.
Доступные данные для поиска изменяются в зависимости от механизма. Во всех случаях $auth1 установлен в id аутентификации. Переменная $auth2 всегда будет id авторизации (authz) при его наличии или пустой строкой. Переменная $auth3 всегда будет realm при его наличии или пустой строкой. Принудительный отказ заставит аутентификацию задержать обработку (defer). Используя эту опцию имеет смысл устанавливать server_condition в "true".
server_realm | Использование: gsasl | Тип: string | Значение по умолчанию: не задано |
Это указывает SASL realm, в котором находится сервер. Некоторые механизмы будут использовать эти данные.
server_scram_iter | Использование: gsasl | Тип: string | Значение по умолчанию: не задано |
Эта опция предоставляет данные семейству SCRAM-механизмов. Во время оценки $auth1 недоступен. Это может измениться.
server_scram_salt | Использование: gsasl | Тип: string | Значение по умолчанию: не задано |
Эта опция предоставляет данные семейству SCRAM-механизмов. Во время оценки $auth1 недоступен. Это может измениться.
server_service | Использование: gsasl | Тип: string | Значение по умолчанию: smtp |
Это служба SASL, которую реализует сервер. Некоторые механизмы будут использовать эти данные.
Они могут быть установлены, оценивая определенные опции, как детализировано выше. Они будут также установлены, оценивая server_condition.
Если иное не заявлено ниже, интеграция gsasl будет использовать следующие значения для этих переменных:
$auth1: id аутентификации.
$auth2: id авторизации.
$auth3: realm.
Теперь по специфике механизмов:
EXTERNAL: устанавливает только $auth1 к возможно пустому id авторизации. Опция server_condition должна быть.
ANONYMOUS: устанавливает только $auth1 к возможно пустому anonymous token. Опция server_condition должна быть.
GSSAPI: $auth1 будет установлена в GSSAPI Display Name. $auth2 будет установлена в id авторизации. Опция server_condition должна быть.
Anonymous token нечто проведенное как незаверенный идентификатор, это походит на анонимную аутентификацию в FTP, передающую адрес электронной почты или software-identifier@ как пароль.
Пример показывает миграцию с Cyrus SASL на GSASL с паролем и realm:
gsasl_cyrusless_crammd5: driver = gsasl public_name = CRAM-MD5 server_realm = imap.example.org server_password = ${lookup{$auth1:$auth3:userPassword} \ dbmjz{/etc/sasldb2}{$value}fail} server_set_id = ${quote:$auth1} server_condition = yes