Jump to content

Send-MailMessage cmdlet per Aufgabenplanung: Fehlermeldung


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Nun habe ich eine Testmail via Telnet als Test via Port 25 erfolgreich versendet.

Als Absenderadresse (Mail from) habe ich eine ungültige, nicht existierende Mailnachricht verwendet und als Empfängeradresse habe ich meine pers. Mailadresse vom Geschäft verwendet und ja, das hat funktioniert.

 

Ich nehme an, Du wolltest herausfinden, ob der Mailversand auf diese Art und Weise funktioniert, um prüfen zu können, ob bei diesem Testmail Versand eine Authentifizierung stattfindet, korrekt?

 

Nein, es hat keine Authentifizierung stattgefunden, ich konnte anonym via Port 25 eine Mail versenden, was gibt es sonst noch für Lösungsansätze?

Link zu diesem Kommentar
vor 23 Minuten schrieb NorbertFe:

Richtig und wenn du da eine gültige absendeadresse einträgst geht das auch einfach so

 

Korrekt, das funktioniert auch. Ich habe als Absenderadresse unsere Support@unsereFirma.ch Mail verwendet und als Empfängeradresse meine pers. Mailadresse vom Geschäft.

vor 24 Minuten schrieb NorbertFe:

Also führt dein Skript/task eine Authentifizierung durch, was die Fehlermeldung ja auch aussagt.

 

Nach meinem, technischen Verständnis würde ich meinen, NEIN!

Das PS Skript habe ich vom Internet verwendet (den Code), ein wenig angepasst und nicht mehr.

 

In der Aufgabenplanung habe ich beim Aufruf des PS Skript auch keine Authentifizierung verwendet!

Link zu diesem Kommentar
vor 12 Minuten schrieb vonAbisZ:

Nach meinem, technischen Verständnis würde ich meinen, NEIN!

Das PS Skript habe ich vom Internet verwendet (den Code), ein wenig angepasst und nicht mehr.

 

In der Aufgabenplanung habe ich beim Aufruf des PS Skript auch keine Authentifizierung verwendet!


Und wie erklärst du dir die Fehlermeldung? ;) kommt die Fehlermeldung auch, wenn du das Skript mal nicht direkt auf dem Exchange ausführst (als task)?

Link zu diesem Kommentar
vor 5 Minuten schrieb NorbertFe:

Und wie erklärst du dir die Fehlermeldung? ;)

 

Wie schon erwähnt: wenn ich für die Aufgabenplanung meinen Domänen Administrator AD User hinterlege und das Skript laufen lasse, funktioniert der Mailversand.
Mit dem gleichen Domänen Admin AD User bin ich auch per RDP am Exchange Server eingeloggt.

 

Hinterlege ich in der Aufgabenplanung hingegen den AD User SMTP (ist ein Domänen- User, nicht mehr), erhalte ich diese Fehlermeldung.

Der Unterschied der beiden AD- User ist klar. Einerseits der Domänen Administrator User kontra dem normalen AD User SMTP, wo der Versand nicht funktioniert.

 

Wenn ich eine, deiner Argumentationen korrekt verstanden habe, sollte aber der Mailversand auch mit dem Domänen User möglich sein.

 

Darum poste ich anbei mal den Skript, vielleicht findest Du da drin irgendwo eine Code Schnipsel, welcher eine Authentifizierung verlangt? :-)

 

#################################################################################################################
# Requires: Windows PowerShell Module for Active Directory
##################################################################################################################
# Please Configure
$smtpServer="mailserver.domain.local" #FQDN mail server
$expireindays = 35 #days before reminding
$from = "Support <noreply@unsereFirma.ch>"
$logging = "Enabled" # Set to Disabled to Disable Logging
$logFile = "C:\LOGs\mail.csv" # ie. c:\mylog.csv
$testing = "Enabled" # Set to Disabled to Email Users
$testRecipient = "Vorname.Nachname@unsereFirma.ch" # If Testing Is Enabled - Email Administrator ONLY
#
###################################################################################################################
# Check Logging Settings
if (($logging) -eq "Enabled")
{
# Test Log File Path
$logfilePath = (Test-Path $logFile)
if (($logFilePath) -ne "True")
{
# Create CSV File and Headers
New-Item $logfile -ItemType File
Add-Content $logfile "Date,Name,EmailAddress,DaystoExpire,ExpiresOn,Notified"
}
} # End Logging Check
# System Settings
$textEncoding = [System.Text.Encoding]::UTF8
$date = Get-Date -format ddMMyyyy
# End System Settings
# Get Users From AD who are Enabled, Passwords Expire and are NOT Currently Expired
Import-Module ActiveDirectory
$users = get-aduser -filter * -properties Name, PasswordNeverExpires, PasswordExpired, PasswordLastSet, EmailAddress | where {$_.Enabled -eq "True"} | where { $_.PasswordNeverExpires -eq $false } | where { $_.passwordexpired -eq $false }
$DefaultmaxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
# Process Each User for Password Expiry
foreach ($user in $users)
{
$Name = $user.Name
$emailaddress = $user.emailaddress
$passwordSetDate = $user.PasswordLastSet
$PasswordPol = (Get-AduserResultantPasswordPolicy $user)
$sent = "" # Reset Sent Flag
# Check for Fine Grained Password
if (($PasswordPol) -ne $null)
{
$maxPasswordAge = ($PasswordPol).MaxPasswordAge
}
else
{
# No FGP set to Domain Default
$maxPasswordAge = $DefaultmaxPasswordAge
}
$expireson = $passwordsetdate + $maxPasswordAge
$today = (get-date)
$daystoexpire = (New-TimeSpan -Start $today -End $Expireson).Days
# Set Greeting based on Number of Days to Expiry.
# Check Number of Days to Expiry
$messageDays = $daystoexpire
if (($messageDays) -gt "1")
{
$messageDays = "in " + "$daystoexpire" + " Tagen"
}
else
{
$messageDays = "HEUTE"
}
# Email Subject Set Here
$subject="Dein Kennwort läuft $messageDays ab."
# Email Body Set Here, Note You can use HTML, including Images.
$body ="
<p style=""font-family:'Segoe UI', Segoe UI;""> Hallo $name, <br><br>
Dein Windows-Kennwort wird $messageDays ablaufen.<br>
Um Dein Kennwort zu ändern, drücke die Tastenkombination STRG-ALT-ENTF und wähle 'Kennwort ändern'.<br><br>
Dein ICT Team.<br>
(Diese Antwort wurde automatisch vom System generiert. Darum bitte nicht darauf antworten, danke.)
</P>"
# If Testing Is Enabled - Email only Administrator
if (($testing) -eq "Enabled")
{
$emailaddress = $testRecipient
} # End Testing
# If a user has no email address listed
if (($emailaddress) -eq $null)
{
$emailaddress = $testRecipient
}# End No Valid Email
# Send Email Message
if (($daystoexpire -ge "30") -and ($daystoexpire -lt $expireindays))
{
$sent = "Yes"
# If Logging is Enabled Log Details
if (($logging) -eq "Enabled")
{
Add-Content $logfile "$date,$Name,$emailaddress,$daystoExpire,$expireson,$sent"
}
# Send Email Message
Send-Mailmessage -smtpServer $smtpServer -from $from -to $emailaddress -subject $subject -body $body -bodyasHTML -priority High -Encoding $textEncoding
} # End Send Message
else # Log Non Expiring Password
{
$sent = "No"
# If Logging is Enabled Log Details
if (($logging) -eq "Enabled")
{
Add-Content $logfile "$date,$Name,$emailaddress,$daystoExpire,$expireson,$sent"
}
}
} # End User Processing
# End

Link zu diesem Kommentar
vor 20 Minuten schrieb vonAbisZ:

Wenn ich eine, deiner Argumentationen korrekt verstanden habe, sollte aber der Mailversand auch mit dem Domänen User möglich sein.

Warum führst du das Skript nicht als System aus? Wenn im Skript keine Authentifizierung stattfindet ist es doch egal, wer das Skript ausführt. :/

 

skripte sollte man als Code formatiert hier posten. So liest sich das echt unangenehm.

Link zu diesem Kommentar
vor 8 Minuten schrieb NorbertFe:

Warum führst du das Skript nicht als System aus?

 

Diese Variante hatte ich als bevorzugte Variante gesehen und darum auch als 1. Variante so angewendet, aber leider erhielt ich da eine Fehlermeldung.

Um diese Fehlermeldung zu rekonstruieren, habe ich soeben erneut als User in der Aufgabenplanung den System User hinterlegt.

 

Die PS Überwachung hat unteranderem folgendes aufgezeichnet:

 

**********************
PS>CommandInvocation(Out-String): "Out-String"
>> ParameterBinding(Out-String): Name="InputObject"; Wert="Von der Übertragungsverbindung können keine Daten gelesen werden: Eine vorhandene Verbindung wurde vom Remotehost geschlossen."
Send-Mailmessage : Von der Übertragungsverbindung können keine Daten gelesen werden: Eine vorhandene Verbindung wurde 
vom Remotehost geschlossen.
In C:\Skripts\Passwort-Ablauf-Mail.ps1:96 Zeichen:1
+ Send-Mailmessage -smtpServer $smtpServer -from $from -to $emailaddres ...

 

vor 11 Minuten schrieb NorbertFe:

Wenn im Skript keine Authentifizierung stattfindet ist es doch egal, wer das Skript ausführt. :/

 

 

Das sehe ich auch so wie Du.

Ich habe nur damit angefangen, einen User zu hinterlegen, weil eben, wie Du leider siehst, auch beim Ausführen mit dem System User in der Aufgabenplanung ein Fehler erscheint Und: Als ich merkte, dass beim Hinterlegen in der Aufgabenplanung mit dem Domänen Administrator der Skript ausgeführt wird, ich erst danach auf den Geschmack kam und dann eben den AD User SMTP verwendet (weil der eben schon für ähnliche Aufgaben schon verwendet wird, warum dann wieder einen neuen AD User erstellen?)

vor 14 Minuten schrieb NorbertFe:

skripte sollte man als Code formatiert hier posten. So liest sich das echt unangenehm.

 

Sorry, ich hatte im Moment, wo ich den Code Schnipsel hier gepostet hatte, nicht realisiert, dass man hier extra eine Funktion zum Einfügen von Code Schnipsel vorgesehen hat.

Soll ich den Code nochmals posten, aber lesbarer? :-)

 

Nein, war ein Witz. Du kannst ja Ihn kurz ein ein Notepad ++ kopieren oder nicht? :-)

So, meine lieben IT-Freaks: Für heute verabschiede ich mich hier.


Morgen, am Donnerstag habe ich frei. Aber ich werde trotzdem kurz hier in das Board schauen und wenn ich das Gefühl habe, es lohnt sich, kurz von zu Hause aus einen, möglichen Lösungsvorschlag von Euch zu testen, wäre ich dazu bereit :-)

Link zu diesem Kommentar

Ach so, Du bist ein iPhone Liebhaber? 

Das war ich jahrelang auch, dann Entschied ich mich für ein Google Pixel Smartphone und würde nie mehr etwas anderes wollen :-)

 

Doch, ein Linux Smartphone würde mich reizen, aber leider sind die von den Funktionen nicht über alle Zweifel erhaben. Easy, vielleicht liest hier noch ein PS Spezialist ein Code Schnipsel in Bezug Authentifizierung heraus?

 

Ich bin zwar kein PS Spezialist, aber mein Bescheidenes Wissen sagt mir, dass es KEINEN solchen Code hat ;)

Link zu diesem Kommentar

Guten Morgen Norbert

 

Deine letzte Frage an mich war ja: "Warum führst du das Skript nicht als System aus?"

Meine Antwort darauf hatte ich am Mittwoch, 21:56 Uhr geliefert inkl. Fehlermeldung, welche die PS Überwachung aufgezeichnet hat, während ich die Aufgabenplanung mit hinterlegtem System User gestartet hatte.

 

Hast Du eine Idee, warum diese Fehlermeldung kommt bzw. was Di uns konkret mitteilen möchte?
Ich werde leider aus dem Text nicht sehr schlau?!

Link zu diesem Kommentar

Am 27.04.2022 um 21:40 Uhr hast Du mich, lieber NorbertFe gefragt: "Warum führst du das Skript nicht als System aus?"

 

Meine Antworte lautete damals (siehe anbei den Text) und ist bis und mit heute unbeantwortet geblieben und somit ist natürlich, leider muss ich feststellen, mein Problem nach wie vor ungelöst?!

 

Diese Variante hatte ich als bevorzugte Variante gesehen und darum auch als 1. Variante so angewendet, aber leider erhielt ich da eine Fehlermeldung.

Um diese Fehlermeldung zu rekonstruieren, habe ich soeben erneut als User in der Aufgabenplanung den System User hinterlegt.

 

Die PS Überwachung hat unteranderem folgendes aufgezeichnet:

 

**********************
PS>CommandInvocation(Out-String): "Out-String"
>> ParameterBinding(Out-String): Name="InputObject"; Wert="Von der Übertragungsverbindung können keine Daten gelesen werden: Eine vorhandene Verbindung wurde vom Remotehost geschlossen."
Send-Mailmessage : Von der Übertragungsverbindung können keine Daten gelesen werden: Eine vorhandene Verbindung wurde 
vom Remotehost geschlossen.
In C:\Skripts\Passwort-Ablauf-Mail.ps1:96 Zeichen:1
+ Send-Mailmessage -smtpServer $smtpServer -from $from -to $emailaddres ...

Link zu diesem Kommentar
vor 34 Minuten schrieb winmadness:

Hast Du auch einen extra Empfangsconnector angelegt und mit diesem getestet? - siehe mein Beitrag.

 

Nein.
Anhand deiner Frage merke ich, dass mein Wissen in Bezug: "Empfangs und Sende Connectoren" "löchrig" ist und oder ich ein total falsches Verständnis dafür habe, was die Wörter senden und empfangen angeht? :-)

 

Denn in deinem Link, welchen Du mir gepostet hast steht: "Mit dem neuen Empfangsconnector soll verhindert werden, dass alle Systeme senden können. Es sollen nur bestimmte Systeme (über die IP) gezielt zugelassen werden."

 

Um mein Verständnis für Sende-Connectoren und Empfangs-Connectoren zu verbessern, musst Du mir jetzt Mal in aller Ruhe erklären, warum ich für dieses Szenario hier einen neuen Empfangs-Connector erstellen soll, welchen ich so konfiguriere, dass nur "anonyme Benutzer" zugelassen sind?

 

Hättest Du mir einen Post gezeigt, in welchem steht, ich müsse einen separaten Sende-Connecteor erstellen, hätte ich die Welt noch verstanden, aber warum bitte einen Empfangs-Connector?

 

Bis anhin dachte ich immer:

Sende-Connector = wie es das Wort Sende vermuten lässt, ist dafür da, dass der Exchange z.B. alle Mails in Bezug der Domain @gugus.de direkt an die Mailserver von @gugus.de senden soll, mit Betonung auf senden :)

 

Empfangs-Connector = wie es das Wort Empfang vermuten lässt, sei nur, mit Betonung auf nur, dafür da, dass er Mails für @domainX.ch entgegen nimmt, also das Gegenteil von einem Sendeconntor macht, nicht?

 

bearbeitet von vonAbisZ
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...