Exim: пересылка на основе получателя в bcc

#email #filter #exim #bcc #exim4

#Адрес электронной почты #Фильтр #exim #bcc #exim4

Вопрос:

В настоящее время я фильтрую входящие письма с помощью a .forward следующим образом:

 if $header_to: matches "(office|info)@domain.com" then
    save Maildir/.office/
endif
if $header_to: matches "whatever@domain.com" then
    save Maildir/.whatever/
endif
  

Итак, у меня есть учетная запись электронной почты, которая получает письма на разные адреса. В принципе, я хочу, чтобы они попадали в разные вложенные папки в зависимости от адреса, на который была отправлена почта.

Это работает для писем, где получатель указан в to заголовке, но не работает, если получатель был в bcc .

При получении почты, которая была отправлена с bcc заголовком, только envelope-to заголовок соответствует реальному адресу, на который доставляется почта, и он упоминается в Received заголовке

 Envelope-to: office@domain.com

Received: from mail.other.domain ([1.1.1.1])
    by mail.domain.com with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)
    (Exim 4.71)
    (envelope-from <sender@other.domain>)
    id 1RO5xc-0001TF-Qj
    for office@domain.com; Wed, 09 Nov 2011 12:04:57  0100
...
To: can_be_anything@whatever.com
  

Я уже пробовал:

 if $header_envelope-to: matches ...
  

но это не работает, письма вообще не фильтруются, даже когда отправляются с To заголовком (похоже, Envelope-To заголовок недоступен в forward-files). Должен ли я попытаться проанализировать (несколько) Received -заголовков?

Как я могу перемещать письма во вложенную папку получателя на основе реального адреса получателя?

Ответ №1:

похоже, я наконец нашел ответ.

 if $original_local_part matches "office|info" then
    save Maildir/.office/
endif
  

При этом проверяется только local_part, но afaik может быть расширен и для использования домена с помощью $original_domain (см. Документ)

Ответ №2:

Переменная $recipients содержит всех ( to , cc и bcc ) получателей. Вы пробовали это?