Заполнение списка заблокированных доменов из списка. Добавление значений из нового списка к уже существующему.

image И снова Exchange Management Shell. Продолжаю открывать возможности этого мощнейшего инструмента с помощью коллег из группы PowerShell – Russia: Vasily [Xaegr] Gusev и Vadims [Camelot] Podans. Оба MVP: Administrator Framework. Тема была подкинута Александром [sach3000] Мельниковым в комментарии к предыдущему посту по этой теме и к связанной теме форума TechNet. Специально для него решение найдено :)

Итак. Для начала опишу ситуацию. Александр пытался добавить значения из списка, основываясь на комментариях Васи к предыдущему посту. Имея список List.txt в виде:

domain.01

domain.02

domain.03

etc.

Александр выполнял:

Get-Content “F:\Наш список спама\List.txt” | ForEach -Process{Set-SenderFilterConfig -BlockedDomainsAndSubdomains $_}

В итоге при выполнении:

Get-SenderFilterConfig |fl BlockedDomainsAndSubdomains

Получал:

BlockedDomainsAndSubdomains: {domain.03}

Т.е. значение получаемое в результате выполнения цикла переписывалось. И актуальным было самое последнее из списка. В поисках решения наткнулся на статью об изменении Multivalued Properties. Теперь все стало понятно. Посоветовавшись с вышеозначенными товарищами из группы PowerShell – Russia, было решено отказаться от цикла. И начальное наполнение списка блокированных доменов из списка List.txt было выполнено при помощи переменной.

$var=(Get-Content “F:\Наш список спама\List.txt”)

Set-SenderFilterConfig –BlockedDomainsAndSubdomains $var

В итоге выполнив:

Get-SenderFilterConfig |fl BlockedDomainsAndSubdomains

Получили ожидаемое:

BlockedDomainsAndSubdomains: {domain.01, domain.02, domain.03}

Работает. Отлично!

Вторая задача – обновление списка новыми значениями с сохранением старых. Используя вышеуказанную статью, добрые подначки и ценные советы Васи, сделал вот так:

1. Создал список ListUpd.txt содержащий:

domain.04

domain.05

domain.06

И выполнил следующие команды:

$BD=(Get-SenderFilterConfig).BlockedDomainsAndSubdomains

$var=(Get-Content “F:\Наш список спама\ListUpd.txt”)

$BD+=$var

Set-SenderFilterConfig –BlockedDomainsAndSubdomains $BD

Готово. Выполняем

Get-SenderFilterConfig |fl BlockedDomainsAndSubdomains

Видим в итоге нужное:

BlockedDomainsAndSubdomains: {domain.01, domain.02, domain.03, domain.04, domain.05, domain.06}

Таким образом Вы можете поддерживать в актуальном состоянии список заблокированных доменов путем периодической подгрузки списков. Но на мой взгляд, лучше использовать поставщиков RBL\SBL. Хотя у каждой организации есть определенные требования, и ей этот способ подойдет, как нельзя лучше :)

Кстати, приведенный пример можно упростить, объявив одну переменную $BD, а в третей команде сета выполнить:

$BD+=(Get-Content “F:\Наш список спама\ListUpd.txt”)

Удаление определенного домена производится обратной процедурой:

$BD=(Get-SenderFilterConfig).BlockedDomainsAndSubdomains

$BD-=domain.03

Set-SenderFilterConfig –BlockedDomainsAndSubdomains $BD

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

Реклама
Заполнение списка заблокированных доменов из списка. Добавление значений из нового списка к уже существующему.

Заполнение списка заблокированных доменов из списка. Добавление значений из нового списка к уже существующему.: 8 комментариев

  1. sach3000:

    Делаю:

    [PS] C:\>$var=(Get-Content «F:\Block\List.txt»)
    [PS] C:\>$BD=(Get-SenderFilterConfig).BlockedDomainsAndSubDomains
    [PS] C:\>$BD+=$var
    [PS] C:\>Set-SenderFilterConfig -BlockedDomainsAndSubdomains $BD
    Set-SenderFilterConfig : Cannot convert ‘justdropped.com’ to the type ‘Microsoft.Exchange.Data.Mult
    iValuedProperty`1[Microsoft.Exchange.Data.SmtpDomain]’ required by parameter ‘BlockedDomainsAndSubd
    omains’. Значение «justdropped.com» уже присутствует в коллекции.
    At line:1 char:52
    + Set-SenderFilterConfig -BlockedDomainsAndSubdomains <<<Get-SenderFilterConfig

    Name : SenderFilterConfig
    BlockedSenders : {}
    BlockedDomains : {}
    BlockedDomainsAndSubdomains : {}
    Action : Reject
    BlankSenderBlockingEnabled : True
    Enabled : True
    ExternalMailEnabled : True
    InternalMailEnabled : False
    AdminDisplayName :

    Как это можно понять, почему ПоШ так говорит ? Ведь список пустой.

  2. sach3000:

    Все. Разобрался. Моя ошибка, действительно, были сдвоенные записи, что в списке недопустимо.
    Большое спасибо. Статья про многозначные свойства и ваши советы очень помогли.

  3. Вот как важно бывает устроить правильную pr-акцию. Рассылая первую почтовую рекламу в огромных количествах, компания, выпускающая консервированное мясо SPAM обрекла себя на проклятие фараонов. Теперь уже никто не скажет, что слово SPAM произошло от названия продукта, а не наоборот.

  4. Олег Крылов:

    Так эти консервы вроде как еще производят. Или ошибаюсь?

  5. sach3000:

    вроде нет. это был 96-й год, дядька мой служил в загранке и привозил.

  6. Зачем вы упорно делаете Get-SenderFilterConfig |fl BlockedDomainsAndSubdomains, лучше так:
    (Get-SenderFilterConfig).BlockedDomainsAndSubdomains
    Будет нормальный список доменов в столбик.

    sach3000: от дублей легко избавиться так:
    $BD = $BD | select-object -unique

    Олег, специализации Admin Frameworks не существует с января :) Мы теперь просто MVP: PowerShell :)

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s