Страница 1 из 1

Exim - сохранение почты

Добавлено: 2014-04-08 13:35:03
MagicGTS
Вопрос старый, и много где уже рассматривался, но один аспект я так и не нашел.
Задача: сохранять всю входящую и исходящую почту.
Моя реализация (раскладывает письма на входящие и исходящие):
Роутеры:

Код: Выделить всё

copy_message_in:
driver = accept
user = dovecot
transport = copy_message_in
unseen
no_expn
no_verify
domains = <domain>

copy_message_out:
driver = accept
user = dovecot
transport = copy_message_out
unseen
no_expn
no_verify
domains =! <domain>
Транспорты:

Код: Выделить всё

copy_message_in:
driver = pipe
  user = mail
  group = mail
command = /usr/libexec/dovecot/dovecot-lda -f $sender_address -d audit@<domain>
message_prefix =
  message_suffix =
  delivery_date_add
  envelope_to_add
  return_path_add
  log_output
  temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

copy_message_out:
driver = pipe
  user = mail
  group = mail
command = /usr/libexec/dovecot/dovecot-lda -d audit@<domain> -m Sent
message_prefix =
  message_suffix =
  delivery_date_add
  envelope_to_add
  return_path_add
  log_output
  temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
Все бы хорошо, но вот если есть несколько получателей письма, то audit получит несколько копий писем, что меня не устраивает. Как это побороть?

Вдогонку. Хочу сохранять исходящие письма пользователя в папку отправленные на стороне сервера (конфиг выше делает это без проблем), но (если побороть копии множественных получателей), остаётся проблема. Почтовые клиенты могут сами сохранять исходящие письма, и мне бы хотелось как-то побороть последствия такого поведения (понятно, отключить на стороне клиента сохранение можно, но хочу иметь некую автоматизацию против такого). Возможно ли это с помощью sieve сделать (как видно из конфига выше, использую dovecot)? Ну и отмечать письма как прочитанные при помещение в отправленные.

Re: Exim - сохранение почты

Добавлено: 2014-10-17 15:19:15
Alex Keda
Разместить роутеры до образования копий
--
А вообще, это проблемы аудита.
У нас вот не нашлось никого готового читать чужую почту.
Видимо, у ваших менее строгие моральные ограничения....

Exim - сохранение почты

Добавлено: 2016-07-14 13:13:59
Black_Wizard
Добрый день!

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

Не подскажете, в какую сторону копать?

Exim - сохранение почты

Добавлено: 2016-07-14 21:05:13
Black_Wizard
Вот как это выглядит сейчас:

#Routers
copy_to_sent:
driver = accept
condition = ${if def:authenticated_id}
no_expn
no_verify
transport = copy_to_sent
headers_add = "X-Sent-Header: Sended"
unseen

#Transports
copy_to_sent:
driver = pipe
log_output
return_path_add
delivery_date_add
envelope_to_add
group = smmsp
user = smmsp
message_prefix = ""
message_suffix = ""
command = /usr/local/libexec/dovecot/dovecot-lda -e -d $authenticated_id -m Sent

Exim - сохранение почты

Добавлено: 2016-07-17 21:34:29
xM
Попробуйте batch_max в транспорте.
http://www.exim.org/exim-html-current/d ... ports.html

Exim - сохранение почты

Добавлено: 2016-07-18 18:07:04
xM
Короче я тут подумал, и решил что лучше всего почту копировать не через роутеры и транспорты, а через старый добрый системный фильтр.
Он запускается до передачи сообщения роутерам, и, следовательно, есть возможность один раз обработать сообщение.
Например

Код: Выделить всё

root@beta:/home/xm # cat /usr/local/etc/exim/configure
...
system_filter = /usr/local/etc/exim/exim.filter
system_filter_user = mailnull 
system_filter_group = mailnull
...
root@beta:/home/xm # cat /usr/local/etc/exim/exim.filter
if first_delivery and "$h_to:, $h_cc:" contains "@your.domain" 
then 
   unseen deliver "audit@your.domain" 
endif