Archives par étiquette : SMTP

Envoi d’un message de test via SMTP.

Voici un petit script VBS très simple qui permet d’envoyer un message SMTP depuis un système Windows.
Ce script est compatible avec toutes les versions de Windows.
Il peut servir pour tester un relais SMTP ou la capacité d’un ordinateur à envoyer des messages en SMTP sans utiliser Outlook.

Il suffit de copier ce code dans un fichier texte et renommer l’extension du fichier en « .vbs ».

'Envoie d'un e-mail via un serveur SMTP'
With CreateObject("CDO.Message")
.From="adress@domainfrom.com"
.To="adress@domainto.com"
.Subject="-Test Message-"
.HTMLBody="Test Message"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "my-relay.com"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Configuration.Fields.Update
On Error Resume Next
.Send
If Err Then MsgBox "Le message n'a pas pu être expédié."
On Error GoTo 0
End With

Il ne reste plus qu’à changer l’adresse de l’émetteur, du destinataire et du relais SMTP.

Capturer les IP des clients d’un connecteur SMTP

Un ligne de commande pour lister les IP des clients SMTP envoyant des messages à un connecteur Exchange 2007 ou 2010.

Get-MessageTrackingLog -Server hubserver01 -EventId "receive" -Start "06/12/2012 00:00:00" -ResultSize Unlimited | Where-Object { $_.ConnectorId -match "SMTP_Connector" } | Select-Object -unique ClientIP | ft clientip 

Modifier les adresses IP distantes sur un connecteur de réception

Comment gérer les adresses IP distantes autorisées sur un connecteur de réception?
Sur un connecteur de réception sans authentification et autorisant les connexions anonymes, il est indispensable de créer une liste blanche des adresses IP qui pourront émettre des messages via ce connecteur.

Voici comment gérer cette liste avec PowerShell.

Visualiser la liste existante.

$RConn = Get-receiveConnector "HUBSERVER\IPWhiteList"
$RConn.RemoteIpRanges | ft LowerBound,CIDRLength -AutoSize

Compter le nombre d’IP.

$RConn = Get-receiveConnector "HUBSERVER\IPWhiteList"
$RConn.RemoteIpRanges.count

Comparer deux connecteurs.

$RConn1= Get-receiveConnector "HUBSERVER01\IPWhiteList"
$RConn2= Get-receiveConnector "HUBSERVER02\IPWhiteList"
Compare-Object $RConn1.RemoteIpRanges $RConn2.RemoteIpRanges

Une flèche vers la droite indique que l’adresse affichée est présente dans le connecteur « ILMHUBCAS02P\Appsmtp » et absente de l’autre.

Attention, la commande suivante, écrase la liste d’IP existante par l’IP que vous spécifiez.

Set-ReceiveConnector "HUBSERVER\IPWhiteList" -RemoteIPRanges "192.168.6.66/32"

Pour ajouter cette IP a la liste existante, il faut utiliser la combinaison des commandes suivante.

$RConn = Get-ReceiveConnector "HUBSERVER\IPWhiteList"
$RConn.RemoteIPRanges += "192.168.6.66/32"
Set-ReceiveConnector "HUBSERVER\IPWhiteList" -RemoteIPRanges $RConn.RemoteIPRanges

Pour ajouter plusieurs IP.

$RConn = Get-ReceiveConnector "HUBSERVER\IPWhiteList"
$RConn.RemoteIPRanges += "192.168.6.66/32","192.168.6.99/32"
Set-ReceiveConnector "HUBSERVER\IPWhiteList" -RemoteIPRanges $RConn.RemoteIPRanges

Pour ajouter un liste d’IP issue d’un fichier texte.

$RConn = Get-ReceiveConnector "HUBSERVER\IPWhiteList"
Get-Content .\newips.txt | foreach {$RConn.RemoteIPRanges += "$_"}
Set-ReceiveConnector "HUBSERVER\IPWhiteList" -RemoteIPRanges $RConn.RemoteIPRanges

Si la liste d’IP en place a déjà une des IP mentionnés dans le fichier, un message d’erreur va apparaître, il est sans incidence.

Vérifier et activer la politique d’adresses e-mail.

Utiliser cette méthode pour vérifier qui n’applique la politique d’adresses e-mail.

Get-Mailbox -ResultSize unlimited -OrganizationalUnit "domain.local/Paris" | Where-Object { $_.EmailAddressPolicyEnabled -eq $false } | ft displayname,alias,PrimarySmtpAddress

Dans mon cas, j’applique ce script pour savoir si la politique peut être appliquée sans qu’elle modifie l’adresse SMTP principale.
Si c’est le cas, je l’applique.

Get-Mailbox -ResultSize unlimited -OrganizationalUnit "domain.local/Paris" | Where-Object { $_.EmailAddressPolicyEnabled -eq $false } | foreach {
$normalsmtp = $_.alias + "@domain.com"
$prismtp = $_.PrimarySmtpAddress
if ( $normalsmtp -ne $prismtp) {
$_.displayname
}
Else{
Set-Mailbox -Identity $_.alias -EmailAddressPolicyEnabled $true
}
}

Envoyer un message en SMTP.

Permet d’envoyer un message SMTP en Powershell.

$expediteur = "sender@doamin.com"
"From : " + $expediteur
$destinataire = "recipient@domain.com"
"To : " + $destinataire
$serveur = "servername"
"By : " + $serveur 
$fichier = "testfile.zip"
$objet = "Test Messagerie by " + $serveur + " at " + [System.DateTime]::Now
"Object : " + $objet
"Date : " + [System.DateTime]::Now
$texte = "--> Message de test <--"

$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte

$attachment = new-object System.Net.Mail.Attachment $fichier
$message.Attachments.Add($attachment)
$client = new-object System.Net.Mail.SmtpClient $serveur
$client.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

$client.Send($message)