E-maili aadresside eemaldamine Exchange serveris

Meiliaadresside lisamine on tavaliselt lihtne. Kui seda on vaja paljudele, siis muudame meiliaadreside poliitikat; kui seda on vaja üksikutele, siis lihtsalt lisame.

Eemaldamisega on lugu natuke keerulisem.  Kõigepealt tuleb üles leida adressaadid, kellel on sobiv aadress.  Üldiselt sobib selleks käsk Get-Recipient, aga teeme seda lihtsuse huvides ainult postkastidega:

$EmailFilter = "*@minu.ee"
$kastid = Get-Mailbox -ResultSize Unlimited |
  Where-Object EmailAddresses –Like $emailFilter

Kui adressaadid leitud, siis tuleb üles leida ka konkreetne eemaldamist vajav aadress.  Seda peamiselt seetõttu, et olemasolevate aadresside loendist ei saa eemaldada aadressi mustri järgi, vaid tuleb esitada täisaadress:

$kastid | Foreach-Object {
  foreach ($address in $_.emailaddresses) {
    if ($address -like $EmailFilter) {
      New-Object PSObject -Property @{Name=$_.name; Alias=$_.alias ; SmtpAddress=$address}
    }
  }
}

Tulemuseks kuvatakse hetkel meile kõik leitud meiliaadressid koos postkasti nimega, mille küljes see aadress on.  Nii et nüüd jääb üle asendada kuvamine kustutamisega.  Siin saab ära kasutada Exchange serveri üldist lähenemist: kui atribuudil võib olla mitu väärtust, siis saame olemasolevate väärtuste hulgas teha muutusi (lisada, eemaldada, asendada)

      Set-Mailbox -Identity $_.id -EmailAddresses @{remove=$address}

Ülaltoodud näide töötab Exchange 2010..2016 peal.  Exchange 2007-l ei olnud veel seda mainitud üldist lähenemist loodud, seega peab seal tegema natuke teistmoodi:

      $NewAddresses = $_.emailaddresses - $address
      Set-Mailbox -Identity $_.id -EmailAddresses $NewAddresses

Kui nüüd peaks vajadus tekkima eemaldada aadresse gruppide, kontaktide või muude adressaatide küljest, siis tuleb lihtsalt asendada adressaatide leidmise ja muutmise käsud.  Muu loogika peaks samaks jääma.

Advertisements

Exchange Server ja e-mail Address Policy

E-mail Address Policy on väga pikka aega olnud viis, kuidas adressaatidele (sealhulgas postkastid) automaatselt e-maili aadresse genereerida.  Ning Exchange Server 2007 tõi siia ühe olulise muudatuse.  Nimelt on alates Exchange 2007-st muutunud poliitika rakendamise loogika.  Enam ei rakendata seda taustal ja mõne aja pärast, vaid muudatused toimuvad kohe.

Kuid tuleb välja, et päris nii see ka ei ole.  Exchange dokumentatsioon väidab, et poliitika rakendatakse kahel juhul:

Esimese juhuga on asi lihtne.  Poliitika rakendub siis, kui seda rakendatakse.  Teise juhuga on asi keerulisem.  Poliitika rakendub kohe, kui adressaati muudetakse Exchange haldusvahenditega.  Ent kui tegemist on kasutajakonto või grupiga, mida sageli muudetakse hoopis Active Directory (AD) haldusvahenditega.  Ja sellisel juhul aadressipoliitika ei rakendu.

Toome lihtsa näite:  ettevõttel on kasutajad/postkastid mitmes linnas laiali ning e-maili aadressid kajastavad linna, kus kasutaja paikneb.  Kui nüüd kasutaja kolib ühest linnast teise, siis aadressi muutumiseks tuleb muuta kasutaja objekti AD-s.  Ja kui seda tehakse näiteks Active Directory Users and Computers konsooliga, siis e-maili aadressid ei muutu.  Kui sama muudatus teha Exchange Management Console’i kaudu, siis muudetakse ära ka e-maili aadress.  Ja seda ka sel juhul, kui Exchange haldusvahendiga muudeti mõnd muud atribuuti, kui seda mis aadressi muudatuse tingib.  Kõik sama kehtib ka skriptitavate liideste kohta.

Ülaltoodud jutus on üks erand.  Nimelt on võimalik luua aadressipoliitika, mis kontrollib kasutaja atribuuti Description.  Nimetatud atribuuti ei suuda Exchange käsk Get-User kuvada ning käsk Set-User muuta.  Sellest tulenevalt ei rakenda selle atribuudi muutmine ka automaatselt e-maili aadressipoliitikat.  Mis veel halvem, ka muude atribuutide muutmine (Set-User abil) ei käivita aadresspoliitika rakendamist.  Ainuke viis selliseid aadressipoliitikaid rakendada on Update-EmailAddressPolicy.

Sama probleem on tegelikult ka Exchange aadressiraamatutega.  Nende puhul tuleb lihtsalt kasutada teist käsku (Update-AddressList).

Ülaltoodud jutust tasub teha järgmised järeldused:

  1. Adressaatide atribuute tuleb reeglina muuta kasutades Exchange haldusvahendeid;
  2. Kui on võimalik situatsioon, et muudatusi sooritatakse muude vahenditega, siis tasuks ajastatud toimingutesse lisada üks skript, mis iga aadresspoliitika (või aadressraamatu) peal käivitaks käsu Update-EmailAddressPolicy (või Update-AddressList);
  3. Aadressipoliitikas tasub vältida atribuudi Description kasutamist.

Eemaldatud funktsionaalsuse lehel on sellest õnneks isegi juttu, et Recipient Update Service on pärast Exchange 2003 eemaldatud ning nimetatud funktsionaalsuse täielikus jätkamiseks on vaja kasutada ajastatud toimingute abi.  Kahjuks aga ei mainita, et mis tingimustel ajastatud toiminguid vaja on.

Siia jutu sisse poetatud lingid viitavad Exchange 2013 dokumentatsioonile, ent sealtsamast saab kiiresti kätte ka Exchange 2010 dokumentatsiooni. Ja kui 2010 lingid on juba käes, siis saab neid ise muuta nii, et nad näitaksid Exchange 2007 dokumentatsioonile (vihje: v=exch.80).