Рейтинг:1

Архив Postfix с сохранением скрытой копии с помощью X-Envelope-To - очистка конфиденциального X-Envelope-To с помощью Lmtp

флаг cn

Копируя пользователя [email protected], мы делаем нет хотите, чтобы люди получали этот список скрытых копий, кроме «пользователя» [email protected].

Цель

  1. Мы хотим архивировать все письма, проходящие через postfix, отправленные и полученные. В настройке используются:
  • постфикс,
  • аутентификация dovecot с пользователями Pam (вытягивание из Ldap),
  • и доставка в почтовые ящики через LMTP от Dovecot.
  1. Мы хотим включить получателей Bcc в архив сообщений.

  2. Мы делаем нет хотите, чтобы люди получали этот список скрытых копий, кроме «пользователя» [email protected].

Пробный

  1. Использование always_bcc = [email protected] Работает. Но квитанции Bcc (которые согласно правам находятся в конверте как RCPT TO, а не в заголовке) теряются.

  2. С использованием: (согласно Какие существуют варианты для архивирования электронной почты Postfix и сохранения любой информации BCC в заголовке)

main.cf
smtpd_recipient_restrictions =
  check_recipient_access pcre:/etc/postfix/prepend.pcre

в то время как выражение pcre:

prepend.pcre
/(.+)/ ПОДГОТОВИТЬ X-Envelope-To: $1

который работает как шарм: мое сохраненное сообщение имеет заголовки To:; копия; X-Конверт-Кому. Если в какой-то день нам понадобится покопаться в этом, мы сможем узнать, кто получил сообщение, даже в скрытой копии. (Примечание: X-Envelope-To включает в себя людей «Кому» и «Копия», а также получателей внешних доменов).

  1. Чтобы устранить X-Envelope-To: Для отправки:
smtp_header_checks = pcre:/etc/postfix/smtp_header_checks.pcre

С содержимым:

smtp_header_checks.pcre
/^X-Конверт-Кому:/ ИГНОРИРОВАТЬ

Все в порядке, пока нет.

Проблема

Чтобы исключить X-Envelope-To для писем, не покидающих сервер. Я сделал:

lmtp_header_checks = pcre:/etc/postfix/lmtp_header_checks.pcre

lmtp_header_checks.pcre
/^X-Конверт-Кому:/ ИГНОРИРОВАТЬ

Но это не выборочно, даже [email protected] теряет заголовок, который был «сохранен» в списке скрытых копий.

Я не могу найти способ выборочной проверки этого заголовка, поскольку он оценивает только саму строку и не может использовать получателя для создания условия (даже с использованием «если» pcre). (http://www.postfix.org/pcre_table.5.html)

Есть ли какая-либо переменная, которую можно использовать? Была мысль: включить «[email protected]» в заголовок X-Envelope-To, в lmtp_header_checks.pcre включите что-то вроде: [email protected] не равно $LMTP_DELIVERY_RECIPIENT Delivered-To или X-Delivered-To остаются отдельным заголовком, который pcre не может оценить как переменную.

В противном случае есть ли способ заставить lmtp запускать какой-нибудь milter? И простой фильтр lmtp_milter, который я могу использовать для этого?

Преследовали в течение нескольких дней во всех возможных документах, заранее спасибо

Рейтинг:1
флаг cn

О да ! Спасибо большое.

Язык sieve не позволяет выполнять итерацию по нескольким X-конверт-в заголовки. Поэтому нужно передать его внешней программе.

Вот что я придумал:

требуют "в файл";
требуют «imap4flags»;
требуют ["заголовок редактирования", "конверт"];
требуют "vnd.dovecot.filter";
если заголовок :содержит "X-Spam-Flag" "YES"
{
   файл в "Хлам";
   останавливаться;
}
если конверт :is "to" "[email protected]" {
   фильтр "EnvelopeToBcc.sh";
} еще {
   удалить заголовок "X-Envelope-To";
}
#!/бин/баш
# Сохраняем почту в переменной
# входной поток
mail=`кошка /dev/stdin`
# Извлечь заголовки
конверт=$(echo "$mail" | formail -x X-Envelope-To | tr -d '\015')
tos=$(echo "$mail" | formail -x To | tr -d '\015')
копии = $ (эхо "$ mail" | formail -x Cc | tr -d '\ 015')

# Цикл, исключающий поля To: и конкатенация в переменной
скрытая копия = ""
для i в $envelope; делать
        если [[ ${tos} != *"${i}"* && ${copies} != *"${i}"* ]];то
                bcc="${bcc} ${i},"
        фи
сделано
# Удалить запятую в конце
bcc=$(echo $bcc | sed s/,$//)
# Добавляем заголовок Bcc в письмо 
эхо "${mail}" | formail -a "Скрытая копия: $bcc"

Если вы откроете архив с помощью любого MUA, вы увидите пересобранную скрытую копию. NB: сценарий немного длиннее, но он позволяет избежать дублирования «Кому» в списке «Скрытая копия».

Рейтинг:0
флаг fr
anx

Используйте язык Sieve.

Поскольку ваша почта доставляется через LMTP в Dovecot, у вас будут все возможности адресации и редактирования заголовков там, с целой кучей более сложных логических возможностей, чем те, которые предлагает простая проверка заголовков Postfix.

Если вы еще не используете сито Pigeonhole, вам может потребоваться включить его как плагин Dovecot, включить нужные вам расширения в вашем скрипте и настроить подходящий скрипт.

# step1 включить решето (добавьте к $mail_plugins *добавить*)
протокол lmtp {
  mail_plugins = сито $mail_plugins
}
# шаг 2 включить расширения sieve по мере необходимости (префикс с + для *добавить*)
плагин {
    sieve_extensions = + редактировать заголовок
}
# шаг 3 настроить путь скрипта для выполнения

Затем в скрипте, выполняемом глобально или специально для пользователей, которые не должны видеть адрес конверта, удалите заголовок — если не доставлять в архивный почтовый ящик:

требуют ["заголовок редактирования", "конверт"];
если не конверт :is "to" "[email protected]" {
    удалить заголовок "X-Envelope-To";
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.