Office 365 mit Postfix-Relay unter Windows mit Linux (WSL)

Ich hatte bei einem Kunden das Problem, das dieser auf Office 365 umgestellt hat und ein altes MFP (Multifunktionsgerät) nicht mit Office 365 Exchange Online zusammenarbeiten wollte.

Deshalb entschloss ich mich dazu ein Mailrelay einzusetzen auf Postfix Basis.

Jedoch wollte ich nicht extra einen Raspberry dafür holen und auch nicht extra noch HyperV auf dem vorhandenem Server installieren.

Deshalb entschloss ich mich dazu WSL (Windows Subsystem for Linux) auszuprobieren.

Das hat wunderbar funktioniert, deshalb hier die Anleitung:

Als erstes installieren wir auf dem Server das WSL mit einer privilegierten Powershell (als Administrator starten) und geben dort folgendes ein:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Danach ist ein Neustart erforderlich.

Nun wieder in einer privilegierten Powershell die folgenden Befehle ausführen, damit Ubuntu installiert wird:

c:
cd \
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu.zip -UseBasicParsing
Expand-Archive ./Ubuntu.zip ./Ubuntu
$userenv = System.Environment::GetEnvironmentVariable("Path", "User")
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + ";C:\Ubuntu", "User") 
cd \ubuntu
.\ubuntu1804.exe

Beim ersten Aufruf wird nun das Ubuntu eingerichtet und nach einem Benutzer sowie einem Kennwort das angelegt werden soll.

Als nächstes aktualisieren wir den Server und installieren Postfix:

sudo apt-get update
sudo apt-get upgrade
 sudo apt-get install postfix mailutils 

Bei der Rückfragen Emailkonfiguratione wählen Sie bitte Internet Site.

Nun wird Postfix konfiguriert:

 sudo nano /etc/postfix/main.cf 

Löschen Sie die Zeile mit den Eintrag Relayhost und kopieren sie am Ende folgendes rein:

 relayhost = [smtp.office365.com]:587 
smtp_use_tls = yes
smtp_always_send_ehlo = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_generic_maps = hash:/etc/postfix/generic
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Suchen Sie die folgende Zeile:

mynetworks = 127.0.0.0/8
inet_interfaces = loopback-only

Und ändern Sie diese wie hier ab (tragen Sie jedoch bei mynetworks ihr eigenes Netz ein):

mynetworks = 192.168.1.0/24
inet_interfaces = all

Nun müssen wir eine Anmeldedatei erstellen, mit den Zugangsdaten zu Office 365:

 sudo nano /etc/postfix/sasl_passwd 

Nun die Zugangsdaten für Office 365 eintragen (natürlich richtige Daten einsetzen:

 [smtp.office365.com]:587 username@yourdomain:office365password 

Nun noch die Rechte anpassen:

sudo chown root:root /etc/postfix/sasl_passwd
sudo chmod 0600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

Jetzt noch die Adressen maskieren, da Office 365 nur die echte Emailadresse annimmt, dazu folgender Befehl:

 sudo nano /etc/postfix/generic 

In der Datei den folgenden Inhalt einfügen (user@domain.com durch die echte Office 365 Adresse ersetzen):

root@localdomain user@domain.com
@localdomain user@domain.com

Nochmal die Rechte anpassen:

sudo chown root:root /etc/postfix/generic
sudo chmod 0600 /etc/postfix/generic
sudo postmap /etc/postfix/generic 

Postfix neustarten:

 sudo service postfix restart 

Und eine Testmail senden:

echo "This is a test body" | mail -s "Relay Test Email" <externe Testadresse> -a "FROM:<office365 Adresse>" 

Weitere Quellen: