none
Очистка почтовых ящиков от периодической рассылки сообщения. RRS feed

  • Вопрос

  • Доброго дня Уважаемые коллеги.

    Используем MS Exchange 2016 в кластере DAG. Есть отдел, который периодически делает рассылку новостей на группу рассылки "все сотрудники". Данная рассылка занимает объем около 15-20 Мб.

    Задача: Периодически, например раз в три недели удалять данную рассылку из всех почтовых ящиков, дабы не засорять почтовые ящики.

    Подскажите, если я использую командлет Get-MessageTrackingLog, то по какому параметру лучше искать данное сообщение и после поиска его удалять во всех ящиках ? Либо есть другие механизмы очистки ?

    Спасибо!


    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    13 августа 2019 г. 14:20

Ответы

  • Search-Mailbox по умолчанию и так ищет (и удаляет) сообщения в локальном архиве. Наоборот, чтобы заставить его не делать, нужно указывать дополнительный параметр: -DoNotIncludeArchive

    PS А вообще-то вы и сами могли бы с легкостью найти ответ на этот вопрос (и подобные ему) в документации.


    Слава России!

    • Помечено в качестве ответа rеstless 25 августа 2019 г. 18:01
    25 августа 2019 г. 17:50
  • Это нормально, таргет будет всегда пропускаться, но во всех остальных будет искать.

    MCITP, MCSE. Regards, Oleg

    • Изменено Oleg.KovalenkoModerator 15 августа 2019 г. 17:16
    • Помечено в качестве ответа rеstless 15 августа 2019 г. 17:16
    15 августа 2019 г. 17:15
    Модератор

Все ответы

  • День добрый.

    У вас должны быть права на удаление.

    Вариани 1.

    1. Найти сообщение и проверить, что вы нашли его правильно. Что вы будите удалять только это сообщение.

    Пример для Exchange 2010. Возможно понадобиться проверка и адаптация для Exchange 2016.

    Get-Mailbox -ResultSize Unlimited | Search-Mailbox  -SearchQuery {from:spam_sender_email or Subject:"Subject from email" AND Received:"06/11/2018 12.00..06/11/2018 23:59"} -TargetMailbox Spam_report_mailbox -TargetFolder "S_D_search_173502" -LogOnly -LogLevel Full
     

    2. Удаление сообщения, сохранение лога удаления, сохранение копии сообщения в Spam_report_mailbox. Раз в год (или чаще) Spam_report_mailbox удаляете и создаете новый.

    Get-Mailbox -ResultSize Unlimited | Search-Mailbox  -SearchQuery {from:spam_sender_email or Subject:"Subject from email" AND Received:"06/11/2018 12.00..06/11/2018 23:59"} -TargetMailbox Spam_report_mailbox -TargetFolder "S_D_search_173502" -DeleteContent -Force -LogLevel Full

    PS. Если вы используете удаление сообщений у вас должен быть бекап.

    ЗЫ2. Всегда проверяйте лог (LogOnly) перед удалением.

    ЗЫ3. Ж) Всегда сохраняйте копию удаленного в специальный ящик (у меня он Spam_report_mailbox)

    Вариант 2. Retention Policy


    MCITP, MCSE. Regards, Oleg

    13 августа 2019 г. 14:35
    Модератор
  • В Exchange 2016, судя по документации, появилась (точнее, была перенесена из Exchange Online) новая функциональность - правила очистки (Sweep Rules). Они позволяют удалять сообщения старше определенного срока по небольшому числу критериев: из указанной папки и от указанного отправителя (размер в эти критерии не входит). Эти правила отрабатывают периодически (вроде бы, раз в сутки).

    Кое-какую информацию можно найти здесь: https://justaucguy.wordpress.com/2017/04/09/new-sweep-powershell-cmdlets/ и в документации по командлетам: New-SweepRule и т.д.

    Если не боитесь экспериментировать, то можете попробовать применить эту функциональность для решения своей задачи: IMHO эти правила - менее тяжеловесное решение, нежели использование Search-Mailbox (как написал Oleg.Kovalenko). Но готовой инструкции дать, к сожалению, не могу.


    Слава России!




    • Изменено M.V.V. _ 13 августа 2019 г. 15:00
    13 августа 2019 г. 14:59
  • Get-Mailbox dmitriy.s@domain.ru | Search-Mailbox -SearchQuery "Subject:'Отчет'"
    The target mailbox or .pst file path is required.
        + CategoryInfo          : InvalidArgument: (:) [], ArgumentException
        + FullyQualifiedErrorId : [Server=SD-MBX-01,RequestId=9f352804-244b-4eda-ba6d-31c45b08eba2,TimeStamp=13
       .08.2019 15:01:10] [FailureCategory=Cmdlet-ArgumentException] 8C81D2C6
        + PSComputerName        : sd-mbx-01.domain.ex.local
    
    Пока выдает такую ошибку.

    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    13 августа 2019 г. 15:02
  • Похоже разобрался в чем дело вот здесь. Хотя достаточно в конце командлета параметра -EstimateRes, что бы не указывать -TargetMailbox sec_mbx -TargetFolder "ExSearchFolder”

    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    13 августа 2019 г. 15:27
  • В Exchange 2016, судя по документации, появилась (точнее, была перенесена из Exchange Online) новая функциональность - правила очистки (Sweep Rules). Они позволяют удалять сообщения старше определенного срока по небольшому числу критериев: из указанной папки и от указанного отправителя (размер в эти критерии не входит). Эти правила отрабатывают периодически (вроде бы, раз в сутки).

    Кое-какую информацию можно найти здесь: https://justaucguy.wordpress.com/2017/04/09/new-sweep-powershell-cmdlets/ и в документации по командлетам: New-SweepRule и т.д.

    Если не боитесь экспериментировать, то можете попробовать применить эту функциональность для решения своей задачи: IMHO эти правила - менее тяжеловесное решение, нежели использование Search-Mailbox (как написал Oleg.Kovalenko). Но готовой инструкции дать, к сожалению, не могу.


    Слава России!




    Спасибо за совет, попробую.

    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    13 августа 2019 г. 15:27
  • Коллеги, так как у нас уже есть организация Exchange в корневом домене леса, то не очень то хотелось искать письма на всех серверах Exchange. То есть в нашем дочернем домене так же находится два сервеа Exchange.

    Можно ли написать скрипт так, что бы он находил все определенное письмо рассылки только н анаших почтовых серверах ?

    Может так ?

    Get-Mailbox –Server sd-mbx-01,sd-mbx-02 –ResultSize unlimited | Search-Mailbox -SearchQuery 'from:"vasia@domain.local"' –DeleteContent –Force -EstimateResultOn


    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    13 августа 2019 г. 15:33
  • Проблема с SweepRule в том что временами, их можно удалить, только через MFCMAPI.

    MCITP, MCSE. Regards, Oleg

    13 августа 2019 г. 19:34
    Модератор
  • 1. Командлет письмо не на серверах ищет, а в почтовых ящиках. Вы их можете предварительно выбрать по каким-либо критериям (например принадлежность пя к БД), а затем через pipeline передать в Search для удаления. 

    2. Вы смотрели что это за такие рассылки весом по 20 МБ? Если там файлы вложенные рассылают, то имеет смысл их выложить на тот же шарик/onedrive и просто ссылку давать в письме.

    14 августа 2019 г. 6:39
  • Алексей, доброго дня. Если проще, то немного перефразирую вопрос:

    1.Необходимо что бы письмо могло удалиться только из почтовых ящиков ящиков принадлежащих двум серверам Exchange находящихся в дочернем домене. То есть в корневом домене леса есть так же свои серверы Exchange и все это одна организация.

    Допустим есть командлет:

    Get-Mailbox  –ResultSize unlimited | Search-Mailbox -SearchQuery Subject:"Годовой отчет"' –DeleteContent –Force 
    данный командлет удалит все письма с темой годовой отчет, только с Exchange серверов в нашем домене, либо во всей организации -включая почтовые сервера в корневом домене ?



    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!





    • Изменено rеstless 14 августа 2019 г. 7:19
    14 августа 2019 г. 7:16
  • Коллеги, я так понимаю при помощи данных командлетов я несмогу просмотреть содержимое найденных писем в ящиках ?

    То есть мне необходимо найти все письма от определенного адресата с определенным содержимым в письме.. и просмотреть их все

    Это можно сделать ?

    Спасибо!


    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    15 августа 2019 г. 14:51
  • В варианте с Search-Mailbox - сможете. Более того, Oleg.Kovalenko в своем первом ответе написал как раз такой вариант: сообщения копируются в TargetMailbox.

    Слава России!

    15 августа 2019 г. 15:23
  • Странно но на скрипт 

    [PS] C:\>Get-Mailbox -ResultSize Unlimited | Search-Mailbox  -SearchQuery {from:Galina.Ra@domain.ru AND body:"Залить бэкап Бухгалтерии"} -TargetMailbox adm_mail@domain.ru -TargetFol
    der "remove"

    пишет следующее WARNING: The source mailbox 'adm_mail' will not be searched because it is the target mailbox. The source mailbox cannot be used as the target mailbox.

    Какой ящик тогда указывать, если скрипт считает ящик админа целевым?


    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!


    • Изменено rеstless 15 августа 2019 г. 16:03
    15 августа 2019 г. 16:02
  • Это нормально, таргет будет всегда пропускаться, но во всех остальных будет искать.

    MCITP, MCSE. Regards, Oleg

    • Изменено Oleg.KovalenkoModerator 15 августа 2019 г. 17:16
    • Помечено в качестве ответа rеstless 15 августа 2019 г. 17:16
    15 августа 2019 г. 17:15
    Модератор
  • Спасибо.

    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    15 августа 2019 г. 17:16
  • Доброго дня коллеги.

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

    Спасибо! 


    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    25 августа 2019 г. 16:15
  • Search-Mailbox по умолчанию и так ищет (и удаляет) сообщения в локальном архиве. Наоборот, чтобы заставить его не делать, нужно указывать дополнительный параметр: -DoNotIncludeArchive

    PS А вообще-то вы и сами могли бы с легкостью найти ответ на этот вопрос (и подобные ему) в документации.


    Слава России!

    • Помечено в качестве ответа rеstless 25 августа 2019 г. 18:01
    25 августа 2019 г. 17:50
  • Search-Mailbox по умолчанию и так ищет (и удаляет) сообщения в локальном архиве. Наоборот, чтобы заставить его не делать, нужно указывать дополнительный параметр: -DoNotIncludeArchive

    PS А вообще-то вы и сами могли бы с легкостью найти ответ на этот вопрос (и подобные ему) в документации.


    Слава России!

    Спасибо.

    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    25 августа 2019 г. 18:01