Назад | Перейти на главную страницу

когда Exim4 устанавливает $ sender_address_data?

в Документация Exim для использования sender = verify в ACL переменная $ sender_address_data должна быть установлена ​​в ACL после опции verify = sender, используемой в ACL RCPT: "Если есть данные в переменной $ address_data в конце маршрутизации , его значение помещается в $ sender_address_data в конце проверки ".

Но для меня это всегда пусто. При каких условиях $ sender_address_data будет непустым?

 

Пример:

acl_smtp_rcpt:
  ...
  accept
    authenticated = *
    verify = sender
    logwrite = authenticated user '$authenticated_id' sending as '$sender_address' which \
        is '$sender_address_data', if error: '$sender_verify_failure'

Результаты в сообщениях журнала с всегда пустым $ sender_address_data и без ошибок проверки:

authenticated user 'user1' sending as 'alias1@example.com' which is '', if error: ''

Exim4 устанавливает $ sender_address_data только тогда, когда $ sender_address установлен в маршрутизаторе от человека, пишущего файл конфигурации и не сбрасывается какой-либо другой командой на конце принимающего маршрутизатора; Сам exim никогда не устанавливает значение автоматически. Например, это устанавливает $ address_data в локальную часть адреса электронной почты, и значение будет доступно как $ sender_address_data в ACL, который вызвал маршрутизацию или проверку:

acl_check_rcpt:
  ...
  accept
    authenticated = *
    verify = sender                                         # TRIGGER ROUTER
    logwrite = sender is local user '$sender_address_data'  # USE HERE
  ...

begin routers
 ...
 local_user:
   driver               = accept
   domains              = +local_domains
   check_local_user
   transport            = LOCAL_DELIVERY
   address_data         = ${local_part}                     # SET HERE