Опция | Использование |
Тип | Значение по умолчанию |
dkim_domain | smtp | string |
не задана |
Имя домена, которое нужно подписать. Результат раскрытия этой
строки помещается в раскрываемую переменную $dkim_domain.
Опция | Использование |
Тип | Значение по умолчанию | dkim_selector |
smtp | string | не задана |
Этот параметр содержит ключевую строку выбора. Вы можете использовать
раскрываемую опцию $dkim_domain для поиска соответствующего селектора.
Результат помещается в раскрываемую переменную $dkim_selector, которая может
использоваться в $dkim_private_key вместе с $dkim_domain.
Опция | Использование |
Тип | Значение по умолчанию |
dkim_private_key | smtp |
string | не задана |
Устанавливает используемый закрытый (private) ключ. Вы можете использовать
переменные $dkim_domain и $dkim_selector для определения используемого ключа.
Результат может быть любым из следующих:
- Корректным частным ключом RSA в ASCII-представлении, включая концы строк.
- Начинаться со слэша, в этом случае он обрабатывается как файл,
содержащий закрытый ключ.
- 0, false или пустая строка, в этом случае сообщение не будет подписано.
Этот случай не приводит к ошибке, даже если dkim_strict установлена.
Опция | Использование |
Тип | Значение по умолчанию |
dkim_canon | smtp |
string | не задана |
Параметр необязателен. Опция задаёт канонический метод при подписывании
сообщения. DKIM RFC на текущий момент определяет два метода: simple и
relaxed. Если опция не задана, метод по умолчанию relaxed. Заметьте:
текущая реализация поддерживает использование только одинакового
канонического метода для заголовков и тела сообщения.
Опция | Использование |
Тип | Значение по умолчанию |
dkim_strict | smtp |
string | не задана |
Параметр необязателен. Эта опция определяет, как Exim ведёт себя в
ситуациях, когда сообщение необходимо подписать, но подпись неудачна по
какой-либо причине. Если результат раскрытия значения 1 или true, exim
отложит доставку. В противном случае, Exim отправит письмо без подписи.
Вы можете использовать раскрываемые переменные $dkim_domain и $dkim_selector.
Опция | Использование |
Тип | Значение по умолчанию |
dkim_sign_headers | smtp |
string | не задана |
Параметр необязателен. Когда задан, опция должна быть раскрыта (или быть
задана) как разделённый двоеточиями список имён заголовков.
Заголовки с этими именами будут включены в подпись. Если параметр не задан,
будут использоваться рекомендованные RFC4871 имена заголовков.
55.2. Верификация DKIM-сигнатур
во входящей почте
Верификация DKIM-сигнатур во входящей почте реализована с помощью ACL
acl_smtp_dkim. По умолчанию эта ACL вызывается один раз для каждой
синтаксически правильной подписи во входящих данных.
Для оценки подписи в ACL большое число раскрываемых переменных содержится
в статусе подписи. Соответсвующие подробности устанавливаются в
ходе выполнения ACL. Вызова ACL только для существующих подписей
недостаточно, чтобы построить более продвинутую политику. По этой причине
имеются глобальные опция dkim_verify_signers и раскрываемая переменная
$dkim_signers. Глобальная опция dkim_verify_signers может быть задана
разделённым двоеточиями списком DKIM-доменов или псевдонимов, для которых
вызывается ACL acl_smtp_dkim. Эта ACL раскрывается, когда сообщение было
получено. На этом этапе раскрытие переменной $dkim_signers уже содержит
разделённый двоеточиями список подписанных доменов и псевдонимов для
сообщения. Когда dkim_verify_signers не задана в главной конфигурации,
используется значение по умолчанию:
dkim_verify_signers = $dkim_signers
|
Это проводит к поведению по умолчанию: вызову acl_smtp_dkim для каждой
DKIM-подписи в сообщении. Текущие DKIM-верификаторы могут требовать явного
вызова ACL для известных доменов или псевдонимов. Это может быть
достигнуто следующим образом:
dkim_verify_signers = paypal.com:ebay.com:$dkim_signers
|
Это приведёт к тому, что acl_smtp_dkim всегда будет вызван для paypal.com
и ebay.com, а также для всех доменов и псевдонимов, которые имеют подписи в
сообщении. Вы также можете построить правило иначе. Например:
dkim_verify_signers = $sender_address_domain:$dkim_signers
|
Если домен или его псевдоним указан несколько раз в раскрытом значении
dkim_verify_signers, ACL вызывается только однажды. В acl_smtp_dkim следующие
раскрываемые переменные доступны:
- $dkim_cur_signer
Подписавшийся, значение вычисляется при запуске ACL. Это может быть домен или
его псевдоним. Это один из элементов списка с раскрытием главной опции
dkim_verify_signers (см. выше).
- $dkim_verify_status
Строка, описывающая общий статус подписи. Одно из:
- none: Сообщение не содержит подписи для текущего домена
(как это задано $dkim_cur_signer).
- invalid: Подпись не может быть проверена из-за ошибок при обработке.
Дополнительные детали содержатся в $dkim_verify_reason.
- fail: Проверка подписи завершилась ошибкой. Дополнительная информация в
$dkim_verify_reason.
- pass: Подпись прошла проверку и является действующей.
- $dkim_verify_reason
Строка даёт немного больше деталей, когда $dkim_verify_status имеет значение
fail или invalid. Одно из:
- pubkey_unavailable (когда $dkim_verify_status=invalid):
Публичный ключ домена не может быть получен.
Это может быть временной проблемой.
- pubkey_syntax (когда $dkim_verify_status=invalid): Публичный ключ домена
синтаксически некорректен.
- bodyhash_mismatch (когда $dkim_verify_status=fail): Вычисленный хэш тела
письма не соответствует указанному в заголовке подписи. Это означает, что
тело сообщения было модифицировано при передаче.
- signature_incorrect (когда $dkim_verify_status=fail): Подпись не может
быть проверена. Возможно, чтобы заголовки были модифицированы, перезаписаны
или изменены путём, который несовместим с методикой проверки, используемой
для DKIM. Это, конечно, также может означать, что подпись была подделана.
- $dkim_domain
Подписанный домен. ВАЖНО: Эта переменная заполняется только, если есть
актуальная подпись в сообщении для текущего домена или удостоверения личности
(как это задано в $dkim_cur_signer). Это список, и сообщения будут подписаны
для каждого элемента в списке (кроме дубликатов, конечно).
- $dkim_identity
Подписанная личность, если таковая имеется. Заметьте: эта переменная
заполняется только, если есть актуальная подпись в сообщении для текущего
домена или удостоверения личности (как это задано $dkim_cur_signer).
- $dkim_selector
Ключевая строка выбора.
- $dkim_algo
Используемый алгоритм: rsa-sha1 или rsa-sha256.
- $dkim_canon_body
Метод канонизации тела: relax или simple.
- $dkim_canon_headers
Метод канонизации заголовка: relax или simple.
- $dkim_copiedheaders
Транскрипция заголовков и их значений, которые включены в подпись
(скопировано с тэга z= подписи).
- $dkim_bodylength
Количество подписанных байт тела. Если 0, тело не подписано. Если подписавший
не установил лимит, то возвращается 9999999999999. Это гарантирует, что
переменная всегда раскрывается в целое число.
- $dkim_created
Штамп времени Unix, отражающий дату и время, когда была создана подпись.
0 возвращается, если отправителем не задано другое значение.
- $dkim_expires
Штамп времени Unix, который отображает дату и времени, после которой
подписавший желает, чтобы подпись рассматривалась как просроченная (expired).
Когда это не задано подписавшим, возвращается 9999999999999. Это делает
возможным сравнение целых чисел со значением этой переменной.
- $dkim_headernames
Разделённый двоеточиями список имён заголовков, включённых в подпись.
- $dkim_key_testing
1, если ключ имеет установленный флаг testing, 0 в противном случае.
- $dkim_key_nosubdomaining
1, если ключ запрещает субдомены, 0 если разрешает.
- $dkim_key_srvtype
Значение тэга "тип сервиса" (s=) ключа. По умолчанию *, если
не указано в ключе.
- $dkim_key_granularity
Степень гранулярности ключа (key granularity, тэг g=) ключа. По умолчанию *,
если не указано в ключе.
- $dkim_key_notes
Примечания из тела ключа (тэг n=).
- $dkim_key_length
Количество бит в ключе.
Кроме того, предусмотрены два ACL-условия:
- dkim_signers
Условие ACL, которое проверяет список доменов или их псевдонимов (разделяются
двоеточиями) на соответствие домену, который ACL проверяет сейчас (отражено в
$dkim_cur_signer). Это обычно используется, чтобы ограничить действие ACL
группой доменов, например:
# Warn when message apparently from GMail has no signature at all
warn log_message = GMail sender without DKIM signature
sender_domains = gmail.com
dkim_signers = gmail.com
dkim_status = none
|
- dkim_status
Условие ACL, которое соотносит список разделённых двоеточиями результатов
проверки DKIM с текущим результатом проверки. Обычно это используется для
того, чтобы ограничить дейсвие ACL определённым списком
результатов проверки, например:
deny message = Сообщение от Paypal с недопустимой или недостающей подписью
sender_domains = paypal.com:paypal.de
dkim_signers = paypal.com:paypal.de
dkim_status = none:invalid:fail
|
Возможные ключевые слова статуса: none, invalid, fail и pass.
Пожалуйста, обратитесь к документации о раскрываемой переменной
$dkim_verify_status выше для получения более детальной информации о том,
что они означают.
|
|