jompsi
Goto Top

Registry Wert wird korrekt gesetzt, jedoch wird dieser vom Programm nicht beachtet(Outlook SMTP Passwort via Registry setzen)

Hallo zusammen

Wir haben mehrer POP3 Accounts. Über diese verschicken wir Emails. Leider hat unser Provider immer mal wieder Probleme mit dem Mailversand. Deshalb habe ich ein Powershell Skript geschrieben, welches bei den Mail Accounts einen alternativen SMTP Server eintragen soll.

# Funktion welche prüft, ob ein Registry Eintrag existiert
function Test-RegistryValue 
{
    param 
    (
        [parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]$Path,
        
        [parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]$Value
    )

    try 
    {
        Get-ItemProperty -Path $Path | Select-Object -ExpandProperty $Value -ErrorAction Stop | Out-Null
        return $true
    }
    
    catch 
    {
        return $false
    }
}

# Funktion zum ändern der Registry
function Change-Registry
{
    # SMTP Server ändern
    Set-ItemProperty . "SMTP Server" -Value ([byte[]](0x7,..............))  
    # Benutzer und Passwort setzen
    New-ItemProperty . "SMTP User" -PropertyType Binary -Value ([byte[]](0x6,.....................))  
    New-ItemProperty . "SMTP Auth Method" -PropertyType DWord -Value "1"  
    New-ItemProperty . "SMTP Password" -PropertyType Binary -Value ([byte[]](0x02,.......................))  
}

# Variabeln
$registry = "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles"  
$mailaccount1 = "10 ..............................."  
$mailaccount2 = "10 ..............................."  
$mailaccount3 = "11 ..............................."  

# Registry Pfad öffnen
Set-Location $registry
# Alle Mailprofile durchgehen
ForEach ( $profile in Get-ChildItem . -Name ) {
$profileloop = "$registry\$profile\9375CFF0413111d3B88A00104B2A6676"  
echo $profileloop
Set-Location $profileloop
	# Jede Mail Account Konfig durchgenen
	ForEach ( $key in Get-ChildItem . -Name ) {
		$registryloop = "$profileloop\$key"  
		Set-Location $registryloop
		# Funktion zum prüfen ob der Registry Wert existiert, aufrufen
		$exists = Test-RegistryValue . "Email"  
		# Wenn der Registry Key Email existiert
		if ( $exists -eq "true" )  
		{   
			$email = Get-ItemProperty . "Email"  
			$email2 = $email."Email"   
			# Ist die Notfall Konfiguration aktiv? Wenn der Wert "SMTP Auth Method" existiert, ist die Notfall Konfiguration aktiv 
			$notfallconf = Test-RegistryValue . "SMTP Auth Method"  
			# echo "notfallconf: $notfallconf" 
			if ("$notfallconf" -eq "false")  
			{
				# Ist der ausgelesene Wert mailaccount1
				if ("$email2" -eq $mailaccount1)  
				{
					Change-Registry
				}
				# Ist der ausgelesene Wert mailaccount2
				if ("$email2" -eq $mailaccount2)  
				{
					Change-Registry
				}
				# Ist der ausgelesene Wert mailaccount3
				if ("$email2" -eq $mailaccount3)  
				{
					Change-Registry
				}
			}
		}
	}
}

Dieses Skript funktioniert auf meinem PC einwandfrei, aber auf zwei anderen PCs habe ich das Problem, dass in der Registry der Wert "SMTP Password" gesetzt wird, jedoch von Outlook nicht beachtet wird. Das heisst, wenn ich unter Systemsteuerung -> Mail -> E-Mail Accunts... -> mailaccount1 -> More Settings -> Outgoing Server nachschaue, ist das Passwort leer, also nicht gesetzt. Wenn ich dann in der Registry den Wert "SMTP Password" manuell lösche und das Passwort von Hand setze, wird in der Registry derselbe Schlüssel erstellt, welcher auch von meinem Skript erstellt wird.

Auf den beiden Fehlerhaften PCs läuft das Skript ohne Fehlermeldung und der Registry Key für "SMTP Password" wird korrekt erstellt. Outlook beachtet diesen einfach nicht.

Alle PCs haben Win 7 Prof und Office 2010 installiert. Kann mir jemand sagen, weshalb auf meinem PC das setzen des SMTP Passwort funktioniert und auf den anderen beiden nicht?

Danke und Grüsse
jompsi

Content-Key: 277547

Url: https://administrator.de/contentid/277547

Printed on: April 18, 2024 at 06:04 o'clock

Member: StefanKittel
Solution StefanKittel Jul 16, 2015, updated at Jul 20, 2015 at 06:41:46 (UTC)
Goto Top
Hallo,

frag mich jetzt nicht wo.
Soweit ich weiß kann man Kennwörter für z.B. Mail-Account und VPN nicht direkt setzten.
Das Kennwort ist da, aber es fehlt der Hinweis, dass es korrekt eingegeben wurde.
Also genau das was Du beschreibst.

Vieleicht kann man das über MAPI setzen?

Wie wäre es sonst mit einem kleinen eigenen Mailserver?
HMailServer ist einfach und kostenfrei.
Dann musst Du nur zentral die Zugangsdaten dort ändern.

Btw.
Ist das nicht frickeln an der falschen Stelle.
Wenn der Provider nicht zuverlässig arbeitet wechselt man den und fertig.

Viele Grüße

Stefan
Member: jompsi
jompsi Jul 16, 2015 at 14:40:49 (UTC)
Goto Top
Hallo Stefan

Danke für deinen Input. Was du beschreibst macht schon Sinn, aber warum geht es ausgerechnet auf meinem Computer face-smile

HMailServer sieht spannend aus, aber ist leider nichts für uns. Wir wollen den MailServer (noch) nicht Inhouse betreiben.

Btw.
Bin die Migration zu einem anderen Provider am planen face-smile das Skript ist als Übergangslösung gedacht.

Viele Grüsse
jompsi
Member: Ravers
Ravers Jul 16, 2015 at 16:10:17 (UTC)
Goto Top
Hi,

bin mir recht sicher das man die Passwörter nicht mehr so setzen kann.
Weiterhin denke ich (je nach Benutzeranzahl), das ihr mit einem neuen Provider evtl. auch nicht besser fährt.
Aber warum willst du Passwort und alles neu setzen - reicht es nicht nur den Server zu ändern? Auth. sollte ja gleich sein, denk ich.

Warum es bei dir geht? Mal die Keys alle gelöscht und dann nochmal versucht? Welche Outlookversion wird jeweils eingesetzt?

greetz
ravers
Mitglied: 122990
Solution 122990 Jul 19, 2015, updated at Jul 20, 2015 at 06:41:06 (UTC)
Goto Top
Moin jompsi,
aber warum geht es ausgerechnet auf meinem Computer
das kann ich dir sagen:
Der Key der gespeichert wird auf jedem Rechner individuell verschlüsselt, also auf zwei Systemen ist der Binary-Wert nie exakt gleich

Gruß Grexit