Posts Tagged: Exchange


21
Apr 10

Noch mehr PowerShell Snippets für Exchange

Vor einiger Zeit mal angefangen einige Code Schnipsel zum Thema PowerShell und Exchange Server zu posten. Bei der menge an Zugriffen auf die Einträge habe ich gesehen, dass sich wohl tatsächlich einige dafür zu interessieren scheinen… Hier also noch einige weitere mini Scripte zu dem Thema!

Erlauben von Passwort Änderungen in OWA (Outlook Web Access)
Set-OwaVirtualDirectory "owa (Default Web Site)" -ContactsEnabled:$True -ChangePasswordEnabled:$True

Anzeige von Mailboxen mit >500MB
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Where {$_.TotalItemSize -gt 500MB} ` | Select-Object DisplayName, ItemCount, TotalItemSize, TotalDeletedItemSize, StorageLimitStatus ` | Export-Csv "BigMailbox$(Get-Date -f 'yyyyMMdd').csv" -NoType

Anzeige von Usern für die eine externe Weiterleitung eingetragen ist (Mit Ausgabe des Users und der Adresse)
Get-Mailbox -Filter {ForwardingAddress -ne $null} | foreach {$recipient = $_; $forwardingsmtp = (Get-Recipient $_.ForwardingAddress).PrimarySmtpAddress; Write-Host $recipient.Name, $forwardingsmtp, $recipient.DeliverToMailboxAndForward }

GZIP Level der OWA Seite ändern
Set-OwaVirtualDirectory "owa (Default Web Site)" -GzipLevel "High"

Export (CSV) von Mailbox/User Informationen
Get-mailbox | Format-Table Alias,DisplayName,@{label="FirstName";expression={(Get-User -Identity $_.Name).FirstName}},@{label="LastName";expression={(Get-User -Identity $_.Name).LastName}},SAMAccountName,Name,ServerName,Database,AddressListMembership,PrimarySmtpAddress,
EmailAddresses,HiddenFromAddressListsEnabled,@{label="Title";expression={(Get-User -Identity $_.Name).Title}},@{label="Company";expression={(Get-User -Identity $_.Name).Company}},@{label="Department";expression={(Get-User -Identity $_.Name).Department}},Office,@{label="Phone";expression={(Get-User -Identity $_.Name).Phone}},@{label="MobilePhone";expression={(Get-User -Identity $_.Name).MobilePhone}} -Autosize|Out-File c:\mailboxes.csv -width 700

Externes Out of the Office (OOF) unterbinden
$MyUser = Read-Host "User?"
$Domain = "hochwald.local"
set-mailbox $MyUser@$Domain -ExternalOOF InternalOnly

Mail Adressen prüfen
Get-Mailbox -ResultSize Unlimited | Where-Object {$_.PrimarySmtpAddress.IsValidAddress -eq $false}

Den Exchange RBL Filter aktivieren
Set-IPBlockListProvidersConfig -Enabled $True -ExternalMailEnabled $True

Den Exchange RBL Filter konfigurieren (VORSICHT mit dem AnyMatch! Das kann von Liste zu Liste nicht gewollt sein!)
Add-IPBlockListProvider -Name -LookupDomain -AnyMatch $True

Wichtiger Hinweis:
ich habe alle diese Code Schnipsel irgendwann mal verwendet. Grundsätzlich haben diese also min. min Exchange 2007 SP1 und SP2 mal funktioniert. Die Parameter muss sich natürlich jeder entsprechend anpassen. Hilfe und weitere Möglichkeiten bietet die Hilfe oder die Hilfe Example Funktion von PowerShell

get-help Get-Mailbox
get-help Get-Mailbox -example


9
Apr 10

Exchange 2007: BES Setup für User auf Gruppenbasis

Ich habe gestern die Anforderung gehabt, mal eben schnell auf einem Exchange 2007 Server einen BES zu konfigurieren. Und zwar mal nebenher und mal eben schnell für 150 User!
Aus Security Gründen möchte der Kunde dem BES User das “send-as” nicht für alle User erlauben, auch nicht für alle User in einer Storage Group. Es sollte das nötige “send-as” wirklich nur für die Blackberry User eingetragen werden.

Nach etwas hin und her kam raus, das alle Blackberry User in einer AD Gruppe sind. Na dann nix wie los und das ganze auf die Gruppe anwenden:

$Group = get-group "MOB-BES5"
$user = "besad5"
forEach($Username in $Group.Members){Write-Host $Username; Add-ADPermission $Username -user $user -AccessRights extendedright -ExtendedRight send-as}

In diesem Mini Script bekommt der User besadm5 für alle Mitglieder der Gruppe MOD-BES5 die für ihn nötigen “send-as” Berechtigungen. Das Script hatte ich zum Glück noch irgendwo liegen, denn wor einiger Zeit hatte ich schon mal diverse Exchange Settings (OWA, ActiveSync, Quota’s usw.) auf Gruppen Basis einrichten müssen.


7
Apr 10

Weitere PowerShell Snippets für Exchange Server

Gestern habe ich ja schon mal einige Code Schnipsel zum Thema PowerShell und Exchange Server gepostet…
Hier folgen noch einige weitere.

Hier ein Beispiel wie Disclaimer erstellt werden kann. In Deutschland ja bei gewerblicher Nutzung erforderlich

$Rollenname = "ExternalDisclaimer"
$Rollenkommentar = "Disclaimer für alle ausgehenden Mails"
$DisclaimerInhalt = "-------------------------------------------------------------------
Joerg Hochwald
About Collaboration, Technology and more

http://hochwald.net

-------------------------------------------------------------------"
$voraussetzung = Get-TransportRulePredicate FromScope
$voraussetzung.Scope = "InOrganization"
$voraussetzung2 = Get-TransportRulePredicate SentToScope
$voraussetzung2.Scope = "NotInOrganization"
$Ausnahme = Get-TransportRulePredicate SclOver
$Ausnahme.SclValue = 9
$Aktion = Get-TransportRuleAction ApplyDisclaimer
$Aktion.Text = $DisclaimerInhalt
$Aktion.Font = "Arial"
$Aktion.FontSize = "Smaller"
$Aktion.FontColor = "gray"
$Aktion.Separator = "WithoutSeparator"
$Aktion.FallbackAction = "Wrap"
New-TransportRule -Name $Rollenname -comment $Rollenkommentar -Condition @($voraussetzung, $voraussetzung2) -Exception @($Ausnahme) -Action @($Aktion)

Quelle: TechNet

Gleiches für Exchange 2010. Etwas anders, aber viel einfacher ;-)

New-TransportRule -Name ExternalDisclaimer -Enabled $true -SentToScope 'NotInOrganization' -ApplyHtmlDisclaimerLocation 'Append' -ApplyHtmlDisclaimerText "<h3>Joerg Hochwald</h3><p>About Collaboration, Technology and more</p><p>More Disclaimer text goes here... use HTML tags to format ist!</p>" -ApplyHtmlDisclaimerFallbackAction Wrap

Informationen ActiveSync Geräte anzeigen

get-activesyncdeviceStatistics -mailbox jhochwald@mydoamin.local

Das ganze sieht dann so aus (Auszug):
FirstSyncTime : 27.03.2010 23:21:06
LastPolicyUpdateTime : 27.03.2010 23:21:07
LastSyncAttemptTime : 07.04.2010 05:49:15
LastSuccessSync : 07.04.2010 05:49:15
DeviceType : iPhone
DeviceID : Appl832487432K3NR
DeviceUserAgent : Apple-iPhone/705.18

Mailboxen anzeigen die kein Unified Messaging haben

Get-UmMailbox | ForEach { If($_.UmEnabled -Eq $False){$_.Name}}

Mailboxen anzeigen die Unified Messaging haben
Get-UmMailbox | ForEach { If($_.UmEnabled -Eq $True){$_.Name}}

Eine Unified Messaging Telefonliste ausgeben

Get-UmMailbox | Format-Table ServerName,@{e={$_.SamAccountName};Label="User Alias"},@{Expression="Extensions";Label="Telephone numbers"}

Die Microsoft Exchange Blockliste abfragen: Ist 192.168.27.80 blockiert?

Get-IpBlockListProvider | Test-IpBlockListProvider -IpAddress 192.168.27.80

Die Microsoft RBL Anti-Spam Funktionen einschalten

Set-IPBlockListProvidersConfig -Enabled $True -ExternalMailEnabled $True
Add-IPBlockListProvider -Name -LookupDomain -AnyMatch $True

So, dass war es (erst mal) ;-)


6
Apr 10

Powershell Snippets für Exchange 2007

Da ich heute einiges zu dem Thema geschrieben habe, hier noch meine restlichen Snippets zu dem Thema Powershell und Exchange 2007:

Neuen Postmaster festlegen, evt. nützlich nachdem die externe Domain gewechselt wurde.

Set-TransportServer Exchange_srv.mydomain.local -ExternalPostmasterAddress postmaster@newdomain.de

IMAP auf dem Exchange Server einschalten und konfigurieren. Danach muss der Windows Dienst aber noch gestartet werden ;-)

Set-ImapSettings -UnencryptedOrTLSBindings:0.0.0.0:143 -LoginType:PlainTextLogin

Konvertiere alle SharedMailboxen zu normalen Usern (Vorsicht)

Get-Recipient -RecipientTypeDetails SharedMailbox | Set-Mailbox -Type Regular

Zeige alle User Mailboxen

Get-Recipient -RecipientType UserMailbox

Anzeige der Mailbox Datenbank

Get-MailboxDatabase | foreach {get-childitem $_.edbFilePath | select-object name,length}

Wie oben aber mit Export nach CSV

Get-MailboxDatabase | foreach {get-childitem $_.edbFilePath | select-object name,length} | export-csv c:\mailbox.database.sizes.csv | foreach {$_.length=($_.length)/1024/1024/1024; $_}

Ich habe das versenden von Out-of-the-Office für normale User aus, hier ein Beispiel wie es für einzelne User wieder eigeschaltet werden kann

Set-Mailbox 'Joerg Hochwald' -ExternalOofOptions External

Journaling Beispiele

Enable-TransportAgent – Identity 'Journaling Agent'
new-journalRule -Name 'TEST – Journal All Internal Email' -JournalEmailAddress 'mydomain.local/Users/Joerg Hochwald' -Scope 'Internal' -Enabled $true -Recipient 'spyme.out@mydomain.com'
new-journalRule -Name 'TEST – Journal All External Email' -JournalEmailAddress 'mydomain.local/Users/Joerg Hochwald' -Scope 'External' -Enabled $true -Recipient 'spyme.out@mydomain.com'

In dem Zusammenhang möchte ich auf zwei Dinge hinweise:

  1. Ein solches Journal ersetzt sicher keine Archivuerung!
  2. Ein solches Journal sehe ich persönlich kritisch, es sollte dem überwachten User (Im Beispiel oben spyme.out@mydomain.com) auf jeden Fall gesagt werden. Gerade im Business Bereich kann es sonst sicher schnell zu rechtlichen Problemen führen. Meiner Meinung nach sollte ein solches Journal nur in ganz wenigen Fällen zur Anwendung kommen.

Den Mailflow (Exchange interner Mailfluß) testen

test-mailflow

Achtung: Das kann bei diversen Anti-Spam Tools zu problemen führen, denn die weisen solche internen Mails die der Server an sich selbst sendet gerne Mail zurück.
Grund: Der Absender sieht dann so aus: MicrosoftExchange329e71ec88ae4615bbc36ab6ce41109e@domain.de und der Empfänger so SystemMailbox{5D025828-90D6-4E1C-B712-0A0B7BBECD12}@domain.de

Und ja, ich gebe zu: Ich mag die ganzen GUI Tools nicht und ja, ich mag es lieber wenn ich die Kommandozeile verwenden kann ;-)


6
Apr 10

DelegateSentItems in Outlook/Exchange 2007

Sicher kennen viele das Problem:
Man hat das Recht als ein anderes user Mail zu versenden (Zum Beispiel für eine Shared Mailbox, oder einen Kollegen) nur landen die gesendeten Objekte immer in der eigenen Mailbox. Sicher, es gibt Tools die lösen dieses Problem, nachteil: Mir ist kein kostenloses Tool bekannt das diese Problem löst!

Es gibt aber einen recht einfach Workaround:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Preferences]
"DelegateSentItemsStyle"=dword:00000001

Und diese da: Die gesendeten Objekte landen sofort in der richtigen Mailbox ;-)
Das ganze funktioniert bei mir mit Outlook 2007 (latest Patch Stand). Microsoft hat letztes Jahr schon einen KB eintrag dazu veröffentlicht.

Wer das Patchen der Registry nicht mag, der kann in seiner Domain das ganze recht einfach via Gruppenrichtlinie verteilen.

Ob das ganze genauso mit Outlook 2010 funktioniert, kann ich derzeit leider nicht testen da ich im Moment kein Office 2010 mehr installiert habe.