Skip to content
Snippets Groups Projects
Commit 8a236a7f authored by Pätzold's avatar Pätzold
Browse files

initial commit fro brach dev

parent 7b16aaa7
Branches
No related tags found
No related merge requests found
# initializing
# connection settings
$user ="<MailAdm Serviceaccount>"
$password="<password>"
$uri="https://ws.rwth-ad.de/ex-cache-ws/APIv04.asmx?wsDL"
# import functions
. .\connect.ps1
. .\listquota.ps1
. .\mailaccounts.ps1
. .\distributionlist.ps1
# set variables
$Primarydomain = "mustereinrichtung.rwth-aachen.de"
$SecondaryDomain = ""
$existingPersonalMailaccount = "paetzold@mustereinrichtung.rwth-aachen.de"
$existingfunctionalMailbox = "rudirentier@mustereinrichtung.rwth-aachen.de"
$externalmailaddress = "hugo@mueller.de"
$localpartpersonalmailmox = "hugodertierpfleger"
$distributionlist="zoo@mustereinrichtung.rwth-aachen.de"
$newdistributionmailaddress="alletiere2@mustereinrichtung.rwth-aachen.de"
$newmailaddress="zebra@mustereinrichtung.rwth-aachen.de"
Describe "MailAdm-Doku" {
It "Connection: Establish a connection with Webservice" {
$global:ws = new-mailadmconnection -user $user -password $password -uri $uri
$url=$uri.replace("?wsDL","")
$global:ws.Url | Should -Be $url
}
IT "get Domains for Serviceaccount: min. one Domain is configured for serviceaccount" {
$domains = Get-Domains -webserviceconnection $global:ws
$domains.count | should -BeGreaterOrEqual 1
}
It "get quotapools: min. one configured quotapool and quotapool should be greater then 1MB" {
$quotapools = get-quotapool -Domain $Primarydomain -WebserviceConnection $global:ws
$quotapools.count | should -BeGreaterOrEqual 1
foreach ($quotapool in $quotapools) {
$quotapool.TotalQuotaInMB | should -BeGreaterThan 1
}
}
It "get-mailaccounts: check for mailaccounts in primary or secondary domain" {
$mailaccounts = get-mailaccounts -WebserviceConnection $global:ws
$mailaccounts.count | should -BeGreaterOrEqual 0
}
It "Remove-Mailboxinvitation: dummy test in order to remove all invitations to get a defined infrastructure" {
$result = remove-allmailboxinvitation -webserviceconnection $global:ws
# check if alll invitations could be deleted
$invitations = get-mailboxinvitations -webserviceconnection $global:ws
$invitations.count | should -Be 0
}
It "Add-Mailboxinvitation: personal mailbox" {
$surname = "der Tierpfleger"
$givenname = "Hugo"
$primaryMailaddress = "$localpartpersonalmailmox@$Primarydomain"
$MailaddressAliasList = @()
$quota=10
# Mailboxtype:
# 0 : personal mailbox
# 1 : functional mailbox
# 2 : room mailbox
# 3 : equipment mailbox
$Mailboxtype = 0
$Owner= ""
$DeliverMailboxAndForward=$false
$ForwardingEmailaddress=""
# get possible quotapool (first in List)
$quotapool= get-quotapool -Domain mustereinrichtung.rwth-aachen.de -WebServiceConnection $global:ws
[int32]$quotapoolid= $quotapool[0].id
$invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner
$invitation.returncode | should -Be 0
}
It "Add-Mailboxinvitation: functional mailbox" {
$surname = "Zooleitung"
$givenname = ""
$primaryMailaddress = "zooleitung@$Primarydomain"
$MailaddressAliasList = @()
$quota=10
# Mailboxtype:
# 0 : personal mailbox
# 1 : functional mailbox
# 2 : room mailbox
# 3 : equipment mailbox
$Mailboxtype = 1
$owner= ""
$DeliverMailboxAndForward=$false
$forwardingEmailaddress=""
# get possible quotapool (first in List)
$quotapool= get-quotapool -Domain mustereinrichtung.rwth-aachen.de -WebServiceConnection $global:ws
$quotapoolid= $quotapool[0].id
$invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner
$invitation.returncode | should -Be 0
}
It "Add-Mailboxinvitation: room mailbox" {
$surname = "Eisbärgehege"
$givenname = ""
$primaryMailaddress = "eisbaergehege@$Primarydomain"
$MailaddressAliasList = @()
$quota=10
# Mailboxtype:
# 0 : personal mailbox
# 1 : functional mailbox
# 2 : room mailbox
# 3 : equipment mailbox
$Mailboxtype = 2
$owner= $existingPersonalMailaccount
$DeliverMailboxAndForward=$false
$forwardingEmailaddress=""
# get possible quotapool (first in List)
$quotapool= get-quotapool -Domain mustereinrichtung.rwth-aachen.de -WebServiceConnection $global:ws
$quotapoolid= $quotapool[0].id
$invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner
$invitation.returncode | should -Be 0
}
It "Add-Mailboxinvitation: equipment mailbox" {
$surname = "Knuts Spielzeug"
$givenname = ""
$primaryMailaddress = "knutsspielzeug@$Primarydomain"
$MailaddressAliasList = @()
$quota=10
# Mailboxtype:
# 0 : personal mailbox
# 1 : functional mailbox
# 2 : room mailbox
# 3 : equipment mailbox
$Mailboxtype = 3
$owner= $existingPersonalMailaccount
$DeliverMailboxAndForward=$false
$forwardingEmailaddress=""
# get possible quotapool (first in List)
$quotapool= get-quotapool -Domain mustereinrichtung.rwth-aachen.de -WebServiceConnection $global:ws
$quotapoolid= $quotapool[0].id
$invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner
$invitation.returncode | should -Be 0
}
It "Get-MailboxInvitations: all invitations are created successfully"{
$invitations = get-mailboxinvitations -WebserviceConnection $global:ws
$invitations.count | should -BeGreaterOrEqual 4
}
It "RemoveMailboxInvitation" {
$invitations = get-mailboxinvitations -WebserviceConnection $global:ws
$invitations.count | should -BeGreaterOrEqual 4
foreach ($invitation in $invitations){
$result = remove-mailboxinvitation -webserviceconnection $global:ws -Activationcode $invitation.Activationcode
$result | should -BeTrue
}
}
<# It "disable Mailbox"{
# make sure the mailbox is initialized -> send-mail
# and wait for a minute in order to make sure that the mail is delivered
Send-MailMessage -To $existingPersonalMailaccount -From $existingfunctionalMailbox -Subject "Testmail in order to initialize mailbox" -SmtpServer smarthost.rwth-aachen.de
Start-Sleep -Seconds 60
$mailboxes = get-mailaccounts -webserviceconnection $global:ws
foreach ($mailbox in $mailboxes){
if ($mailbox.Emailaddress -like $existingPersonalMailaccount) {
$personalaccountupn = $mailbox.UPN
}
}
write-host "$personalaccountupn"
$result = disable-mailaccount -WebserviceConnection $global:ws -mailbox $personalaccountupn
$result | should -Be 0
}
It "Reconnect Mailbox"{
# make sure that the serversystem get to know that the account is deleted
Start-Sleep -Seconds 60
$result = reconnect-mailbox -webserviceconnection $global:ws -mailbox $personalaccountupn
$result | should -Be 0
}
#>
It "change: forwardingaddress"{
$result = change-mailboxforwardingaddress -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -newforwardingmailaddress $externalmaladdress
$result | should -Be $true
}
It "change: emailaddresses"{
$result = change-emailaddresses -webserviceconnection $global:ws -mailbox $existingPersonalMailaccount -primaryEmailaddress $existingPersonalMailaccount -secondaryemailaddress $newmailaddress
$result.Returncode | should -be 0
}
It "change: quota"{
$result = change-mailboxquota -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -newquota 200
$result | should -Be 0
}
It "change: quotaPool" {
# get mailboxinformation
$mailboxes = $global:ws.getMailboxList()
$mailboxtochange = $mailboxes | ? {$_.emailaddress -like $existingfunctionalMailbox}
$quotapoolIds = get-quotapool -Domain $Primarydomain -WebserviceConnection $global:ws
$quotapoolid = ($quotapoolIds | ? {$_.id -ne $($mailboxtochange.quotapool.id)} | select -first 1).id
$result = change-mailboxquotapool -webserviceconnection $global:ws -mailbox $($mailboxtochange.upn) -newquotapool $quotapoolid
$result | should -Be $true
}
It "change: add fullaccess permission" {
$result = change-addfullaccesspermission -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -user $existingPersonalMailaccount
$result | should -Be $true
}
It "change: remove fullaccess permission" {
$result = change-removefullaccesspermission -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -user $existingPersonalMailaccount
$result | should -Be $true
}
It "change: resourcemailbox displayname"{
$result = change-mailboxdisplayname -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -newdisplayname "Alle Tiere des Zoos"
$result | should -Be $true
}
It "change: add SendAS permission" {
$result = change-sendaspermission -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -user $existingPersonalMailaccount
$result | should -Be $true
}
It "change: remove SendAs permission" {
$result = change-sendaspermission -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -user $existingPersonalMailaccount
$result | should -Be $true
}
It "create: distribution list" {
$displayname ="Zoo"
$distributionlist = create-distributionlist -WebserviceConnection $global:ws -displayname $displayname -mailaddress $distributionlist
$distributionlist | should -Be 0
}
It "Get distribution list" {
$result = get-distributionlist -WebserviceConnection $global:ws -mailaddress $distributionlist
$result.count | should -Be 1
}
It "change: distributionlist owner" {
$result = change-distributionlistowner -WebserviceConnection $global:ws -mailaddress $distributionlist -newowner $existingfunctionalMailbox
$($result.ReturnCode) | should -Be 0
}
It "change: globaladdressbook visibility" {
$result = change-distributionlistglobaladressbookvisibility -WebserviceConnection $global:ws -mailaddress $distributionlist
$result | should -Be $true
}
It "change: distributionlist displayname" {
$newdisplayname = "Alle Tiere und Zoowaerter"
$result = change-distributionlistdisplayname -WebserviceConnection $global:ws -mailaddress $distributionlist -newmdisplayname $newdisplayname
$result | should -Be $true
}
It "cahnge: Distributionlist Mailaddress" {
$result = change-distributionlistemailaddresses -WebserviceConnection $global:ws -mailaddress $distributionlist -newmailaddress $newdistributionmailaddress
$($result.Returncode) | should -Be 0
}
It "add member to distributionlist" {
$result = add-distributiongroupmember -WebserviceConnection $global:ws -distributionlist $distributionlist -newmember $existingfunctionalMailbox
$result.Returncode | Should -Be 0
}
It "remove member from distributionlist" {
$result = remove-distributiongroupmember -WebserviceConnection $global:ws -distributionlist $distributionlist -member $existingfunctionalMailbox
$result.ReturnCode | Should -Be 0
}
It "delete distribution list" {
$result = remove-distributionlist -WebserviceConnection $global:ws -mailaddress $distributionlist
$result | Should -Be $true
}
}
\ No newline at end of file

function new-mailadmconnection {
[CmdletBinding()]
param (
[String]$user,
[string]$password,
[string]$uri
)
$secPW = ConvertTo-SecureString -String $password -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($user, $secPW)
$WS = New-WebServiceProxy -Uri $uri -Credential $cred
$WS
}
function Get-Domains {
[cmdletbinding()]
param ($webserviceconnection)
$domains = $webserviceconnection.GetDomains()
$domains
}
\ No newline at end of file
function create-distributionlist {
[CmdletBinding()]
param ($WebserviceConnection, $displayname, $mailaddress)
$result = $webserviceconnection.CreateMaillist($displayname,$mailaddress)
$result
}
function get-distributionlist {
[CmdletBinding()]
param ($WebserviceConnection, $mailaddress)
$distributionlists = $WebserviceConnection.getMailLists()
$distributionlist = $distributionlists |? {$_.emailaddress -match $mailaddress}
$distributionlist
}
function remove-distributionlist {
[CmdletBinding()]
param ($WebserviceConnection, $mailaddress)
$distributionlists = $WebserviceConnection.getMailLists()
$distributionlist = $distributionlists |? {$_.emailaddress -match "Zoo@mustereinrichtung.rwth-aachen.de"}
$result = $WebserviceConnection.RemoveMailList($distributionlist.SamAccountName)
$result
}
function change-distributionlistowner {
[CmdletBinding()]
param ($WebserviceConnection, $mailaddress, $newowner)
$secondaryowner = ""
$result = $WebserviceConnection.SetMaillistOwner($mailaddress,$newowner,$secondaryowner)
$result
}
function change-distributionlistglobaladressbookvisibility {
[CmdletBinding()]
param ($WebserviceConnection, $mailaddress)
$distributionlist = get-distributionlist -WebserviceConnection $WebserviceConnection -mailaddress $mailaddress
if ($distributionlist.ShowInGlobalAddressbook) {
$result = $WebserviceConnection.SetMaillistAddToGlobalAddressbook($distributionlist.SamAccountName,$false)
} else {
$result = $WebserviceConnection.SetMaillistAddToGlobalAddressbook($distributionlist.SamAccountName,$true)
}
$result
}
function change-distributionlistemailaddresses {
[CmdletBinding()]
param ($WebserviceConnection, $mailaddress, $newmailaddress)
$distributionlist = get-distributionlist -WebserviceConnection $WebserviceConnection -mailaddress $mailaddress
$result = $WebserviceConnection.setMaillistEmailaddresses($distributionlist.SamAccountName, $newmailaddress)
$result
}
function change-distributionlistdisplayname {
[CmdletBinding()]
param ($WebserviceConnection, $mailaddress, $newmdisplayname)
$distributionlist = get-distributionlist -WebserviceConnection $WebserviceConnection -mailaddress $mailaddress
$result = $WebserviceConnection.setMaillistDisplayname($distributionlist.SamAccountName, $newdisplayname)
$result
}
function add-distributiongroupmember {
[CmdletBinding()]
param ($WebserviceConnection, $distributionlist, $newmember)
$mailboxes = $webserviceconnection.getMailboxList()
$mailbox = $mailboxes | ? {$_.emailaddress -like $newmember}
$result = $WebserviceConnection.addMailboxToMaillist($distributionlist,$mailbox.upn)
$result
}
function remove-distributiongroupmember {
[CmdletBinding()]
param ($WebserviceConnection, $distributionlist, $member)
$mailboxes = $webserviceconnection.getMailboxList()
$mailbox = $mailboxes | ? {$_.emailaddress -like $member}
$result = $WebserviceConnection.RemoveMailboxFromMaillist($distributionlist,$mailbox.upn)
$result
}
\ No newline at end of file
function get-quotapool {
[CmdletBinding()]
param (
[string]$Domain,
$WebServiceConnection
)
$QuotaPools = $WebServiceConnection.getquotaPoolsForDomain($Domain)
$QuotaPools
}
function get-quotapoolwithusage {
[CmdletBinding()]
param (
[string]$Domain,
$WebServiceConnection
)
$QuotaPoolsWithUsage = $WebServiceConnection.getquotaPoolsWithUsageForDomain($Domain)
$QuotaPoolsWithUsage
}
\ No newline at end of file
function get-mailaccounts {
[CmdletBinding()]
param ($webserviceconnection)
$mailaccounts = $webserviceconnection.getMailboxList()
$mailaccounts
}
function add-mailboxinvitation {
[CmdletBinding()]
param ($webserviceconnection, $quotaPoolID, $primaryEMailAddress, $givenname, $Surname, $QuotaInMB, $Aliasaddresses, $Mailboxtype, $DeliverToMailBoxAndforward, $ForwardingEmailaddress, $Owner)
$invitation = $webserviceconnection.CreateMailaccountInvitation($quotaPoolID,$primaryEMailAddress,$givenname,$Surname,$QuotaInMB,$Aliasaddresses,$Mailboxtype,$DeliverToMailBoxAndforward, $ForwardingEmailaddress, $Owner)
$invitation
}
function get-mailboxinvitations {
[CmdletBinding()]
param ($webserviceconnection)
$Invitations = $webserviceconnection.GetInvitations()
$Invitations
}
function remove-allmailboxinvitation {
[CmdletBinding()]
param ($webserviceconnection)
$invitations = $webserviceconnection.getinvitations()
foreach ($invitation in $invitations){
$webserviceconnection.deleteinvitation($invitation.activationcode)
}
}
function remove-mailboxinvitation {
[CmdletBinding()]
param ($webserviceconnection, $activationcode)
$result = $webserviceconnection.deleteinvitation($activationcode)
$result
}
function disable-mailaccount {
[CmdletBinding()]
param ($webserviceconnection, $mailbox)
$result = $webserviceconnection.DisableMailbox($mailbox[0].UPN)
$result
}
function reconnect-mailbox {
[CmdletBinding()]
param ($webserviceconnection, $mailbox)
$result = $webserviceconnection.ReconnectMailbox($mailbox[0].UPN)
$result
}
function change-mailboxforwardingaddress {
[cmdletbinding()]
param($webserviceconnection, $mailbox,$newforwardingmailaddress)
$mailboxes = $webserviceconnection.getMailboxList()
$mailboxtochange = $mailboxes | ? {$_.emailaddress -like $mailbox}
$result = $webserviceconnection.setMailForwarding($mailboxtochange.upn,$true,$newforwardingmailaddress)
$result
}
function chaange-emailaddresses{}
function change-mailboxquota {
[CmdletBinding()]
param ($webserviceconnection, $mailbox,$newquota)
$mailboxes = $webserviceconnection.getMailboxList()
$mailboxtochange = $mailboxes | ? {$_.emailaddress -like $mailbox}
$result = $ws.SetQuota($mailboxtochange.upn,$newquota)
$result
}
function change-mailboxquotapool {
[CmdletBinding()]
param ($webserviceconnection, $mailbox,$newquotapool)
$result = $webserviceconnection.setquotapool($mailbox,$newquotapool)
$result
}
function change-addfullaccesspermission{
[CmdletBinding()]
param ($webserviceconnection, $mailbox,$user)
$mailboxes = $webserviceconnection.getMailboxList()
$mailboxtochange = $mailboxes | ? {$_.emailaddress -like $mailbox}
$result = $webserviceconnection.AddMailboxPermission($mailboxtochange.upn,$user)
$result
}
function change-removefullaccesspermission{
[CmdletBinding()]
param ($webserviceconnection, $mailbox,$user)
$mailboxes = $webserviceconnection.getMailboxList()
$mailboxtochange = $mailboxes | ? {$_.emailaddress -like $mailbox}
$result = $webserviceconnection.RemoveMailboxPermission($mailboxtochange.upn,$user)
$result
}
function change-mailboxdisplayname{
[CmdletBinding()]
param ($webserviceconnection, $mailbox,$newdisplayname)
$mailboxes = $webserviceconnection.getMailboxList()
$mailboxtochange = $mailboxes | ? {$_.emailaddress -like $mailbox}
$result = $webserviceconnection.SetRessourceMailboxDisplayName($mailboxtochange.upn,$newdisplayname)
$result
}
function change-sendaspermission{
[CmdletBinding()]
param ($webserviceconnection, $mailbox,$User)
$mailboxes = $webserviceconnection.getMailboxList()
$mailboxtochange = $mailboxes | ? {$_.emailaddress -like $mailbox}
$result = $webserviceconnection.AddSendAsPermission($mailboxtochange.upn,$user)
$result
}
function change-emailaddresses{
[CmdletBinding()]
param ($webserviceconnection, $mailbox,$primaryEmailaddress, $secondaryemailaddress)
$mailboxes = $webserviceconnection.getMailboxList()
$mailboxtochange = $mailboxes | ? {$_.emailaddress -like $mailbox}
$result = $webserviceconnection.SetEmailAddresses($mailboxtochange.upn,$primaryEmailaddress,$secondaryemailaddress)
$result
}
function change-removesendaspermission{
[CmdletBinding()]
param ($webserviceconnection, $mailbox,$User)
$mailboxes = $webserviceconnection.getMailboxList()
$mailboxtochange = $mailboxes | ? {$_.emailaddress -like $mailbox}
$result = $webserviceconnection.RemoveSendAsPermission($mailboxtochange.upn,$user)
$result
}
\ No newline at end of file
# Project Title
MailAdm API
## Getting Started
Das IT Center der RWTH Aachen stellt den zentralen Mailserver bereit. Die Verwaltung der Mailadressen wird durch registrierte Ansprechpartner für die jeweiligen Einrichtungen (Maildomänen) über eine Web Application (Mailadm) vorgenommen. Um die Prozesse zur Pflege von Mailadressen in die internen Abläufe automatisch integriern zu können wird neben dem MailAdm auch eine entsprechende API angeboeten, so dass die Pflege der Mailadressen in die vorhandenen lokalen Prozesse der jeweiligen Einrichtung integriert werden kann.
### Prerequisites
zur Nutzung der MailAdm API benötigen Sie einen Serviceaccount. Diesen können Sie anfordern indem sie eine Mail an servicedesk@itc.rwth-aachen.de schicken.
## Running the tests
Im Verzeichnis Demo finden Sie entsprechende Unitests um die Schnittstelle mit Ihrem Serviceaccount zu testen. Bitte passen Sie hierzu die MailAdm-Doku.Tests.ps1 den Bereich "connection settings"
## Authors
* **Wilfred Gasper**
* **Michael Wirtz**
* **Ketli Cellonari**
* ***Julia Opgen-Rhein**
* **Kevin Gostomski**
* **Thomas Pätzold**
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment