Mail, macOS - Postfix Konfiguration für MAMP Webserver

Die PHP Funktion mail() setzt bei einem lokalen Webserver eine funktionierende Postfix oder ähnliche Mail Server Konfiguration voraus. Diese Anleitung hilft dabei Postfix unter macOS zu konfigurieren. Für den populären PHPMailer wird die Postfix Konfiguration und auch die Änderung in der MAMP php.ini nicht benötigt. Es kommt halt auf den Einsatzzweck für die Mail Anwendung an.
Ohne die Anleitung von Zulhilmi Zainudin aus Kuala Lumpur, die er im Februar 2020 auf GitHub Gist veröffentlicht hat, wäre das mit meiner macOS Postfix MAMP Konfiguration nichts geworden - vielen Dank dafür. Originalbeitrag - How to send e-mail on Mac using MAMP (not PRO version) and Hotmail SMTP .
Warnung - macOS Ventura
<update 02.03.2023>
Diese Anleitung funktioniert unter macOS Ventura leider nicht mehr. Ich musste mein neues MacBook Pro mit M2 Pro löschen und neu installieren. Postfix hat falsche Anfragen an meinen Mail-Provider abgeschickt und der hat die benutzte Mailadresse nach mehrfachen Wiederholungen gesperrt. Ich konnte dies in der Postfix Konfiguration auch nicht mehr rückgängig machen.
Wenn Sie tiefergehende Kenntnisse der Postfix Konfiguration haben und die Installation bei Ihnen unter macOS Ventura funktioniert, wäre ich für einen entsprechenden Kommentar dankbar.
</update>
Warum brauche ich einen lokalen E-Mail Server für mein Hugo Projekt?
In Deutschland gibt es rechtliche Vorgaben für Domain-Inhaber. Jeder muss ein Impressum zur Verfügung stellen. Neben der Adresse des Domain-Inhabers muss eine E-Mailadresse und eine Telefonnummer des Inhabers angegeben werden. Da ich meine Telefonnummer nicht im Internet veröffentlichen möchte, muss ich stattdessen ein Kontaktformular zur Verfügung stellen. Der Gesetzgeber geht davon aus, dass nicht jeder einen Mail-Provider hat und deshalb das Kontaktformular als Telefonnummer Ersatz zur Verfügung gestellt werden muss.
Hugo ist ein statischer Website Generator. Die Dynamik für ein Kontaktformular erhalte ich für die Entwicklung durch die Integration des MAMP Servers, der auch PHP zur Verfügung stellt. Es gibt externe Dienste die Kontaktformulare zur Integration anbieten. Ich möchte aber nicht auf externe Dienstleister, die Kosten spielen auch eine Rolle, angewiesen sein. Die rechtlichen Vorgaben der EU, für externe Dienstleistungen außerhalb der EU, sind sehr umfangreich bis unmöglich zu erfüllen.
Konfiguration - Postfix macOS
Meine aktuelle Betriebssystemversion ist macOS Big Sur Version 11.5.1 (Intel). Die zurzeit aktuellste MAMP-Version ist 6.3, als PHP-Version benutze ich 7.4.12. Die folgende Konfiguration hat mein System nicht kaputt gemacht und Mail läuft auch noch ohne Probleme.
<update Jan 16, 2023>
Mein geliebtes MacBook Pro von mitte 2015 läuft leider nur noch unter macOS Monterey, in der zurzeit letzten Version 12.6.2. Aber die Konfiguration funktioniert immer noch. Wenn ich heute vor dem Abenteuer (für einen nicht-Administrator) der Konfiguration stehen würde, hätte mich diese Info etwas beruhigt.
</update>
Zulhilmi Zainudin hat in seiner Anleitung geschrieben “You’ll see a lot of warnings in your Terminal throughout this process. That’s normal.” Ich hatte nur einen Fehler und der wurde durch die main.cf
und den Eintrag inet_protocols = ip4
erzeugt. Nachdem ich diese hinzugefügte Zeile entfernt habe wurde kein Fehler mehr angezeigt. In dieser Dokumentation habe ich den Eintrag nicht übernommen.
Der in dieser Anleitung benutzte Terminal GNU nano 2.0.6 Editor bietet zum Speichern die Tastenkombination ctrl O
an. Verlassen können Sie den Editor mit ctrl X
.
/etc/postfix/main.cf
Öffnen Sie ein Terminal und los gehts …
sudo nano /etc/postfix/main.cf
Am Ende der Datei folgende Zeilen einfügen:
# MAMP postfix data
myorigin = your-smtp-server.com
myhostname = xxxx.your-smtp-server.com
relayhost = xxxx.your-smtp-server.com:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
smtp_tls_security_level=encrypt
tls_random_source=dev:/dev/urandom
xxxx.your-smtp-server.com - geben Sie den von Ihrem Provider genannten SMTP Hostnamen an. In Apple Mail wird dieser auch benutzt.
/private/etc/postfix/master.cf
sudo nano /private/etc/postfix/master.cf
Bei der OS-Version die Zulhilmi Zainudin zu dem Zeitpunkt benutzt hat, musste das Kommentarzeichen vor dem tlsmgr
noch entfernt werden. Bei meiner macOS Version war das nicht nötig, da die Zeile nicht auskommentiert war.
tlsmgr unix - - n 1000? 1 tlsmgr
/etc/postfix/sasl_passwd
sudo nano /etc/postfix/sasl_passwd
Das Passwort wird in der Datei sasl_passwd
gespeichert. Die folgende Zeile einfach mit Ihren Daten hinzufügen.
xxxx.your-smtp-server.com:587 my-mailadrdess@example.com:your-secure-smtp-password
Diverse andere Anweisungen
Die folgenden Anweisungen müssen nacheinander, so wie angegeben im Terminal ausgeführt werden:
sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
sudo launchctl stop org.postfix.master
sudo launchctl start org.postfix.master
sudo postfix upgrade-configuration
sudo postfix reload
sudo postfix flush
Konfiguration - MAMP
Die php.ini der benutzten PHP-Version muss jetzt angepasst werden. In meinem Fall habe ich php[version.you.use]
durch php7.4.12
ersetzt. Auch auf deutschen Systemen funktioniert der Applications
Pfad. macOS arbeitet intern mit der amerikanischen Version und zeigt nur auf der Oberfläche die in die jeweilige Landessprache übersetzte Bezeichnung an. Die mail function
beginnen bei dieser Version ab Zeile 1002.
nano /Applications/MAMP/conf/php[version.you.use]/php.ini
Für macOS muss die php.ini
Mail Konfiguration wie folgt aussehen:
[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP = localhost
; http://php.net/smtp-port
;smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = your-mail-address@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = /usr/sbin/sendmail -t -i -f your-mail-address@example.com
Nach dem Speichern der php.ini
sollten Sie den MAMP Server neu starten.
SMTP Log als Stream anzeigen
Bei Problemen kann das Log von macOS in einem Terminal Window in real-time angezeigt werden. Auch Fehler werden im log stream angezeigt.
log stream –predicate '(process == "smtpd") || (process == "smtp")' –info
Verschicken Sie eine Mail in einem anderen Terminal Window und beobachten den Log Stream. Die Anweisung für das Terminal lautet:
date | mail -s test your_another_email@example.com
Wichtige Zusatzinformation
Wenn Sie Ihr SMTP-Passwort für die E-Mailadresse ändern, müssen Sie in der /etc/postfix/sasl_passwd
das Passwort ebenfalls ändern.
Im Apple Mail-Programm wird unter | Einstellungen | Accounts | Ihre-Emailadresse | Servereinstellungen | der Name des E-Mail-Ausgangsserver (SMTP) vom Mail-Programm mit (offline)
erweitert. Mit anderen Worten Sendmail bzw. Postfix ist nicht mehr gestartet.
Als ersten Schritt zur Behebung des Problems müssen Sie in der sasl_passwd
das Passwort ändern. Dann die Anweisungen aus dem Abschnitt - Diverse andere Anweisungen
- bis auf die letzten beiden sudo
-Anweisungen ausführen, denn Postfix ist zu diesem Zeitpunkt nicht mehr gestartet. Mit sudo postfix start
das Postfix Mail System starten.
Durch das manuelle Verändern der Mail Server Konfiguration ist man gezwungen bei E-Mail Passwortwechsel diese Schritte auch für die manuelle Änderungen durchzuführen. Danach das Apple Mail Programm neu starten.
Fazit
Noch einmal der Hinweis - wenn Sie PHPMailer einsetzen möchten, statt der einfachen mail() PHP Funktion, benötigen Sie diese Konfiguration nicht.
Das Ganze funktioniert bei mir lokal bis zur Version macOS 12.6.3. Da ich kein Administrator bin und auch keine Ambitionen habe mich in diesen Bereich einzuarbeiten, kann ich auch keine Fragen in Bezug auf die oben beschriebenen Anweisungen beantworten.
Ab macOS Ventura gibt es bei mir Probleme mit der Postfix Konfiguration. Nur durch löschen und neu installieren des OS konnte ich den Fehler beheben.
Linkliste zu diesem Beitrag
Das könnte Sie auch interessieren
- MAMP Webserver lokal mit Hugo benutzen
Lokale MAMP macOS Serverumgebung für Hugo einrichten.
- PHP in Hugo benutzen
Mit PHP dynamische Funktionen im statischen Webseiten Generator Hugo ermöglichen.
- Hugo - Kontaktformular mit PHP
PHP mail() Kontaktformular für den statischen Webseiten Generator Hugo.
Kommentare werden bei deutscher Spracheinstellung nicht in der englischen Variante der Webseite angezeigt und umgekehrt.