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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
MagicGTS
проходил мимо
Сообщения: 1
Зарегистрирован: 2014-04-08 13:20:42

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

Непрочитанное сообщение MagicGTS » 2014-04-08 13:35:03

Вопрос старый, и много где уже рассматривался, но один аспект я так и не нашел.
Задача: сохранять всю входящую и исходящую почту.
Моя реализация (раскладывает письма на входящие и исходящие):
Роутеры:

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

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)? Ну и отмечать письма как прочитанные при помещение в отправленные.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35315
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2014-10-17 15:19:15

Разместить роутеры до образования копий
--
А вообще, это проблемы аудита.
У нас вот не нашлось никого готового читать чужую почту.
Видимо, у ваших менее строгие моральные ограничения....
Убей их всех! Бог потом рассортирует...

Black_Wizard
проходил мимо
Сообщения: 2
Зарегистрирован: 2016-07-14 13:08:50
Откуда: От папы с мамой

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

Непрочитанное сообщение Black_Wizard » 2016-07-14 13:13:59

Добрый день!

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

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

Black_Wizard
проходил мимо
Сообщения: 2
Зарегистрирован: 2016-07-14 13:08:50
Откуда: От папы с мамой

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

Непрочитанное сообщение Black_Wizard » 2016-07-14 21:05:13

Вот как это выглядит сейчас:

#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

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1314
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

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

Непрочитанное сообщение xM » 2016-07-17 21:34:29

Попробуйте batch_max в транспорте.
http://www.exim.org/exim-html-current/d ... ports.html
IT voodoo blog https://kostikov.co

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1314
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

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

Непрочитанное сообщение xM » 2016-07-18 18:07:04

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

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

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 
IT voodoo blog https://kostikov.co