Posts mit dem Label EXCHANGE werden angezeigt. Alle Posts anzeigen
Posts mit dem Label EXCHANGE werden angezeigt. Alle Posts anzeigen

Donnerstag, 17. November 2022

[OFFICE365][EXCHANGE] Wie richtig ein zweites Postfach als Konto hinzufügen

Eine Methode ist es ja, das zweite Postfach (B) in Outlook einfach ganz normal hinzuzufügen.

In zeiten von MFA ist das aber nicht mehr wirklich praktikabel, es müsste dann ja jeder den MFA vom Postfach B auch haben.

Nun, eine Variante ist es natürlich, dem Hauptpostfach (A) übers Exchange GUI Vollzugriff auf Postfach B zu gewähren.

Funktioniert auch gut und das Postfach B erscheint dann auch automatisch in Outlook.
Wenn A nur einsicht in Postfach B benötigt, ist das auch gut so.
Sobald A aber viel verschickt, ist das handling besser wenn es als Konto hinzugefügt ist.

Fügt man nun das Konto einfach hinzu und nimmt Benutzername / Passwort von A, geht es so so lala. Outlook ist je nach dem manchmal etwas verwirrt. Verbinde ich nun via dem Konto? oder doch über die Vollzugriffs-Zuweisung?

Lösen lässt sich das am besten so:

1: Vollzugriff erstmal komplett entfernen, in den Anmeldeinformationsverwaltung alles von B löschen, sowie in Windows unter Einstellungen -> Konten alles von B rausschmeissen

2: Mit Powershell auf O365 (Connect-ExchangeOnline) oder Exchange verbinden,und folgende Befehle eingeben:

Add-MailboxPermission -Identity b@contoso.ch -User a@contoso.ch -AccessRights FullAccess -AutoMapping $false

Add-RecipientPermission -Identity b@contoso.ch -Trustee a@contoso.ch -AccessRights SendAs


Wichtig dabei ist der Zusatz: -AutoMapping $false

3: In Outlook nun das Konto B hinzufügen, und die Anmeldeinformationen von A nutzen.

Fertig

--------------------------------

Wichtig noch für Admins:

Wie sieht man nun, wer "-AutoMapping $false" nutzt und wer nicht?

Office365:

Erstmal schauen, wer Zugriff hat:
Get-MailboxPermission -Identity b@contoso.ch | Select User, AccessRights

Der befehl zeigt leider nicht, wer "-AutoMapping $false" nutzt.

Mit diesem Befehl kann aber geschaut werden, wer "-AutoMapping $false" NICHT hat:

(Get-MailboxPermission b@contoso.ch -ReadFromDomainController)[0].DelegateListLink


Die welche in der Liste NICHT erscheinen, haben "-AutoMapping $false"
(Excel machts einfach da zu vergleichen ;) )

Mittwoch, 28. September 2022

[EXCHANGE] Exchange suche auf neueren CU's aka BigFunnel

Bei neueren Exchange Servern / CUs kann die Suche manchmal zicken machen.
Da es neu via Bing "BigFunnel" läuft, ergeben die meisten suchen im Internet alte antworten.


Wie sehe ich ob BigFunnel aktiv ist?

Exchange Powershell:
Get-MailboxDatabaseCopyStatus * | Sort Name | Select Name, Status, ContentIndexState

-> ContentIndexState: NotApplicable = BigFunnel


Wichtig erstmal:

Diese beiden Dienste:
Microsoft Exchange Search Host Controller
Microsoft Exchange-Suche

Müssen natürlich gestartet sein.


Hier mal ein befehl um zu schauen, welche Mailboxen nicht komplet indexiert sind:

Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | ? {$_.BigfunnelNotIndexedCount -ge "1"} | ft DisplayName,BigfunnelNotIndexedCount


Abhilfe kann wie folgt geschaffen werden:


New-SettingOverride -Name "Big Funnel Permanent Retry" -Component "BigFunnel" -Section "BigFunnelFailedItemsQuerySettings" -Parameters @("ExcludePermanentFailures=false") -Reason "Re-Index Messages"

Anmerkung:
In der Quelle (siehe unten) hat der obige Befehl noch folgenden Zusatz:
-MinVersion "15.2.922.7" -MaxVersion "15.2.986.22"

Dies limitiert das ganze aber und es funktioniert ggf. nicht bei künftigen updates.
Da es Optionale argumente sind, habe ich diese extra weggelassen.

Dies sollte BigFunnel dazu verleiten, es nochmals zu versuchen mit der indexierung.

Ein bisschen warten (1-2 Stunden) später, sollte mit dem "BigfunnelNotIndexedCount" von oben die Zahlen runtergehen

Weitere nützliche Befehle:

Exchange Version:
get-exchangeserver | select admindisplayversion

Zeige alle "SettingsOverride":

get-settingoverride


Wichtig dabei jeweils:
Status            : Accepted



Entfernen der Einstellung:
Remove-SettingOverride -Identity "Big Funnel Permanent Retry"

Sollte sich der BigfunnelNotIndexedCount nicht ändern:

Alle Mailboxen:
Get-Mailbox -ResultSize Unlimited | Start-MailboxAssistant -AssistantName BigFunnelRetryFeederTimeBasedAssistant

Einzelne Mailbox:
Start-MailboxAssistant mailbox -AssistantName BigFunnelRetryFeederTimeBasedAssistant


Quelle: https://imamitsingh.com/how-to-fix-big-funnel-indexing-issues-in-exchange-2019/

Mittwoch, 20. Oktober 2021

[EXCHANGE] Alle gelöschten Elemente wiederherstellen

Auf dem Exchange per Powershell:

Man braucht erstmal die Berechtigungen:

New-ManagementRoleAssignment –Role "Mailbox Import Export" –User Administrator

-> Powershell neu starten

Alles wiederherstellen:
Restore-RecoverableItems -Identity xy@contoso.ch

Montag, 23. November 2020

[EXCHANGE][OUTLOOK] Empfänger bekommt winmail.dat

 Der Empfänger eines Mails bekommt die Mail nicht richtig, im Anhang befindet sich eine Datei namens winmail.dat

Ursache ist, wenn von Outlook eine Mail im Format "Rich-Text" versendet wird, der Empfänger aber kein Outlook benutzt.

Lösungen:

1 Outlook: In Outlook, das Mail unter "Text formatieren" als HTML oder Nur Text schicken, nicht als Rich-Text

2: Exchange:

Office365:
In der Exchange Admin konsole:
Nachrichtenfluss -> Remotedomänen -> Default Bearbeiten

Rich Text format verwenden: Nie

Exchange 2007/2010:
Exchange Management Console

Organization Configuration -> Hub Transport -> Remote Domains

Default Bearbeiten:
"Format of original..." / "Message Format" - Tab

Exchange rich-text format: Never use

Exchange 2013 und neuer:
Exchange Management Shell:

Get-RemoteDomain | Where {$_.TNEFEnabled -ne $false}

Zeigt an, ob es aktiv ist

Abstellen mit:

Set-RemoteDomain -Identity DomainName -TNEFEnabled $false

Wobei DomainName der Name aus dem ersten Befehl ist (meist "Default")

WICHTIG: Transportdienst neu starten



Dienstag, 10. November 2020

[EXCHANGE] PRX2 - Oder wie setze ich die DNS richtig

Im Log des Empfangsconnectors war folgendes ersichtlich:

451 4.7.0 Temporary server error. Please try again later. PRX2

Mögliche Ursache 1:

Auf dem Netzwerkadapter waren 2 DNS Server eingetragen. Ein interner (z.B. 192.168.10.2 des DCs) und ein externer (z.B: 8.8.8.8)

Einfach den externen entfernen und nur den internen nutzen!

(Evntl. noch prüfen, ob die DNS Weiterleitung auf dem DC richtig konfiguriert ist)

Mögliche Ursache 2:
In der Exchange ECP: Server -> Server -> Bearbeiten
Unter DNS-Lookup ist "Alle-Netzwerkadapter" eingestellt.
Oft funktioniert das gut, manchmal aber nicht.
Setzt dort den Ethernet Adapter oder gebt die DNS Benutzerdefiniert ein (bevorzuge ich)

Mit Exchange Powershell prüfen:
get-transportservice | fl
ExternalDNSServers / InternalDNSServers

über die GUI werden aber diese nicht gesetzt:
get-frontendtransportservice | fl
ExternalDNSServers / InternalDNSServers

Also setzt diese Manuel:
set-frontendtransportservice EXCHANGE -ExternalDNSServers 192.168.10.2
set-frontendtransportservice EXCHANGE -InternalDNSServers 192.168.10.2

Mögliche Ursache 3:
IPv6 deaktivieren:
http://blog.thunderbyte.ch/2020/11/server-ipv6-richtig-deaktivieren.html

Dienstag, 29. Oktober 2019

[EXCHANGE] Anhang Limit über Mobile oder Web maximal 10MB

Anhänge via Handy oder via OWA sind auf 10MB Standardmässig beschränkt.
Eine Anpassung der Limits in den Connectoren (senden / empfangen) änder nichts daran

Abhilfe schaffen diese Einstellungen:


(Quelle: https://docs.microsoft.com/en-us/Exchange/architecture/client-access/client-message-size-limits?redirectedfrom=MSDN&view=exchserver-2019 )

Client Access (frontend)
%ExchangeInstallPath%FrontEnd\HttpProxy\Sync\web.config
maxAllowedContentLength="30000000"   Not present by default (see comments).
bytes
Client Access (frontend)
%ExchangeInstallPath%FrontEnd\HttpProxy\Sync\web.config
maxRequestLength="10240"
kilobytes
Backend
%ExchangeInstallPath%ClientAccess\Sync\web.config
maxAllowedContentLength="30000000 bytes"   Not present by default (see comments).
bytes
Backend
%ExchangeInstallPath%ClientAccess\Sync\web.config
maxRequestLength="10240"
kilobytes
Backend
%ExchangeInstallPath%ClientAccess\Sync\web.config
<add key="MaxDocumentDataSize" value="10240000">
bytes


CMD:

set LimitInBytes=102400000
set LimitInKiloBytes=102400

echo %LimitInBytes%
echo %LimitInKiloBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/Microsoft-Server-ActiveSync/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:%LimitInBytes%
$lim
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/Microsoft-Server-ActiveSync/" -section:system.web/httpRuntime /maxRequestLength:%LimitInKiloBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/Microsoft-Server-ActiveSync/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/Microsoft-Server-ActiveSync/" -section:system.web/httpRuntime /maxRequestLength:%LimitInKiloBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/Microsoft-Server-ActiveSync/" -section:appSettings /[key='MaxDocumentDataSize'].value:%LimitInBytes%


%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/ews/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSAnonymousHttpsBinding'].httpsTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSAnonymousHttpBinding'].httpTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSBasicHttpsBinding'].httpsTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSBasicHttpBinding'].httpTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSNegotiateHttpsBinding'].httpsTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSNegotiateHttpBinding'].httpTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityHttpsBinding'].httpsTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityHttpBinding'].httpTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecuritySymmetricKeyHttpsBinding'].httpsTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecuritySymmetricKeyHttpBinding'].httpTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityX509CertHttpsBinding'].httpsTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityX509CertHttpBinding'].httpTransport.maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /webHttpBinding.[name='EWSStreamingNegotiateHttpsBinding'].maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /webHttpBinding.[name='EWSStreamingNegotiateHttpBinding'].maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/owa/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/owa/" -section:system.web/httpRuntime /maxRequestLength:%LimitInKiloBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.web/httpRuntime /maxRequestLength:%LimitInKiloBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpsBinding'].maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpBinding'].maxReceivedMessageSize:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpsBinding'].readerQuotas.maxStringContentLength:%LimitInBytes%

%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpBinding'].readerQuotas.maxStringContentLength:%LimitInBytes%

net stop w3svc /y

net start w3svc

Donnerstag, 12. September 2019

[EXCHANGE] Nachrichtensuche mit Exchange Powershell

Der Befehl: get-messagetrackinglog kann einem helfen, Nachrichten zu suchen.

Um die Suche etwas einzugrenzen, benutzen wir folgende Parameter:

-Sender xy@xy.ch
-Start mm/dd/yyyy
-End mm/dd/yyyy

Also z.B:

get-messagetrackinglog -Start 9/10/2019 -End 9/12/2019 -Sender xy@xy.ch

Für mehr Details, muss am ende | fl angefügt werden

get-messagetrackinglog -Start 9/10/2019 -End 9/12/2019 -Sender xy@xy.ch | fl


Weitere Parameter:

-Recipients xy@xy.ch
-ResultSize unlimited
(sollten sehr viele Mails angezeigt werden)

-EventID "FAIL"
(Nur Fehlerhafte Mails)

Sortieren:
z.B:
| Sort-Object Sender

Ausgabe Einschränken:
Select-Object Sender, @{l="Recipients";e={$_.Recipients -join " "}}, MessageSubject, Timestamp, EventID, Source


Suchen nach Betreffinhalt
 | Where-Object {$_.MessageSubject -match "XY" -or $_.MessageSubject -ilike "*ZZ*"}

Suche nach SMTP einschränken

| where {[string]$_.Source -like "SMTP"} 

 Export:
| export-csv c:\messlog.csv

bzw, fix für .csv / umlaute:
| export-csv "c:\tmp\123.csv" -Delimiter ";" -NoType -Encoding UTF8



Rausfiltern von System-Mailboxen
| where -Property Recipients -NotLike "*Health*" 
| where -Property Recipients -NotLike "Postmaster*" 
| Where -property sender -Notlike "Postmaster*" 
| Where -property sender -Notlike ""


Unter Umständen, blockt auch ein Contenfilter / Sender ID Filter, die Logs sind hier zu finden:

Get-TransportService | Format-List AgentLog*



Beispiel etwas komplexer Befehl;

get-messagetrackinglog -Start 9/1/2019 -EventID "FAIL" -ResultSize unlimited | Sort-Object Sender | Select-Object Sender, @{l="Recipients";e={$_.Recipients -join " "}}, MessageSubject, Timestamp | export-csv c:\messlog.csv



Get-MessageTrackingLog -resultsize unlimited -start 09/1/2019 -end 09/17/2019 -eventid fail | where {[string]$_.Source -like "SMTP"} | where -Property Recipients -NotLike "*Health*" | where -Property Recipients -NotLike "Postmaster*" | Where -property sender -Notlike "Postmaster*" | select-object eventid;timestamp;source;messageid;sender;{$_.recipients};messagesubject | export-csv C:\maillog.csv