VMWare Upgrade: [Errno 28] No space left on device

Ich wollte einen ESXi von 6.5 auf 6.7 upgraden – aber das Upgrade lief auf folgenden Fehler:

[InstallationError]
[Errno 28] No space left on device
vibs = VMware_locker_tools-light_10.2.0.7253323-8169922
Please refer to the log file for more details.

Gelöst hab ich das Problem in dem ich das angezeigte Paket einzeln vor dem eigentlichen Upgrade installiert habe. Gemacht hab ich das folgendermaßen:

cd /tmp
wget http://hostupdate.vmware.com/software/VUM/PRODUCTION/main/esx/vmw/vib20/tools-light/VMware_locker_tools-light_10.2.0.7253323-8169922.vib
esxcli software vib install -f -v /tmp/VMware_locker_tools-light_10.2.0.7253323-8169922.vib

danach lief das Upgrade durch 🙂

Quelle: vivithemage.com

Sophos XG: ActiveSync veröffentlichen

Da bei uns immer mehr die Sophos XG verwendet wird gibt jetzt hier eine kleine Anleitung wie man ActiveSync veröffentlicht 🙂

1) Zertifikat installieren

Zuerst müssen wir das Zertifikat für die externe Domäne (hier als Beispiel test.friedlandreas.net) installieren. Man kann das Zertifikat in verschieden Formaten importieren – am einfachsten gehts es meiner Meinung nach per PFX:

Dann sollte es hier auftauchen

2) Webserver erstellen

Jetzt muss der Exchange-Server als WebServer angelegt werden.

Zuerst legen wir einen Host an

Danach können wir den WebServer anlegen

Unter Host wird unser neu angelegter Exchange-Host angebenden und der Typ auf HTTPS umgestellt und das Zertifikat angegeben.

In der Übersicht sollte es dann so aussehen:

3) Firewall-Regel erstellen

Jetzt kann die eigentlich Veröffentlichung konfiguriert werden.

Wir wählen hier das als Anwendugnsvorlage Exchange General und stellen den WAN-Port (bei mir hier der Port2) und das Zertifikat ein

Weiter unten unter „Geschützer Server“ entfernen wir jetzt alle nicht benötigten Einträge und lassen nur Microsoft-Server-ActiveSync stehen und editieren den Eintrag

Wir fügen hier unseren Exchange hinzu und entfernen die Authentifizierung


Unter Ausnahmen entfernen wir alles unnötige und editieren den Eintrag

Hier entfernen wir auch alles unnötige und passen die Pfade auf /Microsoft-Server-ActiveSync?* und /Microsoft-Server-ActiveSync/* an


Danach sollte es so aussehen

Unter „Erweitert“ sollte es so aussehen und dann können wir auch schon speichern 🙂

Jetzt sieht es in der Firewall so aus:

Jetzt sind wir fertig und es sollte alles funktionieren 🙂

Kurze Anmerkung zum Microsoft Remove Connecitvity Analycer : In der Standardeinstellung des Sophos XG klappt der Test nicht – er wirft einen Fehler das er sich nicht verbinden kann.

Das liegt daran das die Sophos standardmäßig ihre WebServer nur mit TLS 1.1 oder höher veröffentlicht – der Connectivity Analycer aber nur mit TLS 1.0 funktioniert.

Dies kann unter General Setting unter WebServer konfiguriert werden:

Ich lasse aber TLS 1.1 eingestellt – mit Clients hatte ich nie Probleme. Ich stelle zum testen der Verbindung kurz um – und wenn der Analyzer glücklich ist und mir ein grünes Häkchen bringt stelle ich wieder um 🙂

Exchange: Mailboxen in PST exportieren

Manchmal will man entweder eine einzelne Mailbox oder alle Mailboxen auf einem Exchange in eine PST-Datei exportieren – das geht natürlich wunderbar einfach über die Powershell 😉

Zuerst muss man dem User mit dem man die PSTs exportieren will – z.B. dem Administrator – überhaupt das Recht zum Exportieren geben:

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

Danach bitte die Powershell-Konsole schließen und eine neue aufmachen.

Einzelne Mailbox exportieren

Eine einzelne Mailbox kann mit

New-MailboxExportRequest -Mailbox user -FilePath \\server\freigabe\user.pst

exportiert werden – hier mit dem Beispiel Administrator

New-MailboxExportRequest -Mailbox Administrator -FilePath \\localhost\c$\pst\administrator.pst

Alle Mailboxen exportieren

Will man alle Mailboxen exportieren geht das mit

get-mailbox | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath "\\server\freigabe\$_.pst"}

Hier mein Beispiel:

get-mailbox | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath "\\localhost\c$\pst\$_.pst"}

Das Ergebnis sieht dann so aus:

Status anzeigen

Die Fortschritte bzw. den Status des Exports kann man sich mit

Get-MailboxExportRequest

anzeigen lassen.

Aufräumen

Um alle Export-Request am Exchange am Ende wieder zu löschen kann man das mit

Get-MailboxExportRequest | Remove-MailboxExportRequest

die PST-Dateien bleiben natürlich 😉

Quelle: www.itnator.net

Exchange: Mailbox erstellen für alle User einer Organisationseinheit

Wenn man mal für alle User einer Organisationseinheit eine Exchange-Mailbox erstellen will geht das super einfach per Powershell:

Get-User -OrganizationalUnit „OU=Finanzverwaltung,OU=Abteilungen,DC=test,DC=local“ | Enable-Mailbox

Kurze Erklärung: Mit Get-User zeigen wir uns alle Benutzer in der angegebenen OU an (muss im LDAP-Pfad-Format bzw. als DistinguishedName angegeben sein) und dann pipen wir es in ein Enable-Mailbox wo eben die Mailbox erstellt wird. fertig 🙂

Nginx: upstream timed out (110: Connection timed out)

Ich hatte bei einem Nginx als ReverseProxy das Problem das dieser oft in Fehler upstream timed out (110: Connection timed out) lief und so die Seite nicht funktionierte – der User bekam dann eine 504 Fehlerseite.

Ich habe das mit dem hinzufügen der beiden Zeilen

proxy_http_version 1.1;
proxy_set_header Connection „“;

gefixt – danach lief alles ohne Probleme.

Quelle: stackoverflow

Nginx: Einbinden von allen Domains erlauben

Ich hatte das Problem eine Seite bzw. Unterseite die unter einem Nginx als ReverseProxy lief so zu konfigurieren, dass diese sich von jeder Seite einbinden lassen lies. Dies verhindern aber eigentlich die sehr sinnvollen X-Frame-Options.

Diese lassen sich aber einfach mit proxy_hide_header X-Frame-Options für eine Seite oder auch nur für Unterseiten deaktivieren – hier ein Beispiel für eine Unterseite:

location /api {
    proxy_pass https://1.2.3.4/api;
    proxy_hide_header X-Frame-Options;
}

Nach einem Reload oder Restart des Nginx klappte mit der Einbindung 🙂

Exchange: Move-Request für alle Maiboxen einer Organisationseinheit

Bei Exchange-Migrationen verschiebe ich die Mailboxen der User eigentlich immer per Exchange Powershell mit dem Move-Request-Befehl.

Bei größeren Umgebungen verschiebe ich die Mailboxen gerne per Organisationseinheiten (OU). Im Active Directory sind die Benutzer eh hoffentlich schon in sinnvollen OUs strukturiert – Finanzabteilung, IT, etc. – und so kann ich hier einfach auf diese Struktur zurückgreifen.

Das geht ganz einfach über die Exchange Powershell:

Get-Mailbox -OrganizationalUnit "OU=Finanzabteilung,OU=Users,DC=Domain,DC=local" | New-MoveRequest -TargetDatabase "ExchangeDB01"

Kurze Erklärung: Mit Get-Mailbox zeigen wir uns alle Mailboxen in der angegebenen OU an (muss im LDAP-Pfad-Format bzw. als DistinguishedName angegeben sein) und dann pipen wir es in ein New-MoveRequest mit angegebener Datenbank.

Fertig 🙂

Übrigens: Den LDAP-Pfad bzw. den DistinguishedName bekommt man am einfachsten über das Active Directory-Benutzer und Computer-MMC:

Unter Ansicht die erweiterten Features aktivieren

In den Eigenschaften der OU auf Attribut-Editor gehen und dort den Wert distinguishedName mittels Ansicht anzeigen lassen – von dort kann man ihn einfach kopieren

IIS: X-Forwarded-For Header im Log

Wenn man einen Microsoft Internet Information Services (IIS) hinter einem Reverse Proxy oder einem Load Balancer betreibt, sieht man in den Logs des IIS nur immer die IP-Adresse der Reverse Proxys bzw. dem Load Balancers und nicht die eigentliche IP des Clients.

Wenn der Reverse Proxy bzw. Load Balancer richtig konfiguriert wurde – z.B. bei Nginx wäre es

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

dann wird die IP des Clients an den IIS jedoch sauber übergeben.

Um diese jetzt in den Logs zu sehen muss jetzt nur noch der X-Forwarded-For-Header aktiviert werden.

Den IIS Manager starten und den Punkt Protokollierung öffnen

Dort bei Format auf Felder auswählen…

Dort auf Feld hinzufügen

Dort folgende Werte eintragen:

Feldname: x-forwarded-for
Quelltyp: Anforderungsheader
Quelle: X-Forwarded-For

und mit OK bestätigen.

nochmal mit OK bestätigen und auf Übernehmen klicken

Jetzt taucht im Log-Verzeichnis eine Log-Datei mit eine vorangestellten x_ auf – dort wird jetzt reingeloggt – mit dem X-Forwarded-For-Header und so auch mit der originalen Client-IP.

Quelle: www.loadbalancer.org

Exchange 2013 und 2016: Mails bleiben in Entwürfe hängen

Es gibt manchmal mal das Problem unter Exchange Server 2013 und 2016 dass Emails nicht versendet werden und in Entwürfe (Drafts) bzw. manchmal auch in Postausgang hängen bleiben.

Das Problem tritt sowohl in Outlook als auch in der Outlook Web App (OWA) auf.

Der Grund war bei mir bisher immer eine fehlerhafte DNS-Konfiguration des Exchanges!

Vor allem bei mehreren Netzwerkkarten oder bei mehreren DNS-Servern kann hier die Automatik versagen.

Einzustellen ist das am einfachsten in der ECP:

Hier stehen die DNS-Lookups (intern und extern) standardmäßig auf „Alle Netzwerkkarten“:

Hier kann die richtige Netzwerkkarte ausgewählt werden – oder auch ein DNS-Server manuell eingetragen werden:

Danach sollte das Problem gelöst sein 🙂

Quelle: thoughtsofanidlemind.com

PowerShell: Der watch-Befehl aus Linux

Unter Linux gibt es ja den watch-Befehl mit dem man einen Befehl alle x Sekunden wiederholen kann. Unter der Windows PowerShell gibts sowas leider standardmäßig nicht – aber man kann den Befehl mit Boardmitteln nachbauen:

while ($true) {Clear-Host; gci; sleep 15}

In diesem Beispiel wird zuerst mit Clear-Host die aktuelle Anezige der PowerShell gelöscht, dann gci ausgeführt und zum Schluss 15 Sekunden gewartet. Danach wiederholt sich das ganze bis man es mit STRG-C abbricht.

der Befehl lässt sich natürlich durch fast jeden anderen Befehl ersetzten 😉

Das ganze lässt sich gut für z.B. anzeigen von Verschiebeanforderungen bei Exchange benutzen:

while ($true) {Clear-Host; get-moverequest; sleep 15}

man kann auch Befehle kombinieren – z.B. das Datum anzeigen und etwas pingen

while ($true) {Clear-Host; date; ping 9.9.9.9; sleep 15}