Postfix auf Mac OS

Aus Wikizone
Wechseln zu: Navigation, Suche

Hinweise[Bearbeiten]

Bei meinem neuen Mac mußte ich unter XAMPP nichts einstellen. Der PHP Mailer versendet unter der fritz.box mit diesen Hadern (Auszug)

From: MAILER-DAEMON@Stephans-iMac-2.fritz.box (Mail Delivery System)
Received: by Stephans-iMac-2.fritz.box (Postfix)

Wird dann allerdings als SPAM identifiziert.

Received-SPF: None (no SPF record) identity=helo; client-ip=149.172.225.28; helo=stephans-imac-2.fritz.box; envelope-from=<>; receiver=schlegel@geo-bit.de 

Also im Spam Ordner schauen oder einen SPF Record für die Domain setzen.

Siehe auch:

SPF (Sender Policy Framework)

Links[Bearbeiten]

Ausführliche Anleitung - http://www.admin-magazin.de/Online-Artikel/Postfix-einrichten-und-absichern

Mailversand mit mail und sendmail auf mac - http://hints.macworld.com/article.php?story=20081217161612647

Send Mail over your network - http://www.mactricksandtips.com/2008/09/send-mail-over-your-network.html

Anleitung 1[Bearbeiten]

Quelle: http://mkleine.de/blog/2013/02/27/postfixmail-unter-mac-os-x-einrichten/ 2014/12 + Ergänzungen

Um Mails in der lokalen Entwicklungsumgebung (MAMP) verschicken zu können (beispielsweise unter PHP mit der Funktion mail), muss man Postfix konfigurieren. Das Ganze geht einfacher als gedacht – wie genau, möchte ich in diesem kurzen Beitrag vorstellen.

Passwortdatei[Bearbeiten]

sudo vi /etc/postfix/sasl_passwd

In diese Datei müsst ihr nun einen SMTP-Server eurer Wahl eintragen (inklusive Benutzerdaten). Dazu haltet ihr Euch an das folgende Schema:

<mailserver>:<port> <username>:<passwort>

Das könnte zum Beispiel so aussehen:

mail.deinedomain.de:587 max.mustermann:musterpasswort

Genauso könnt ihr beispielsweise auch den gmail-Server, gmx oder web.de verwenden – je nach dem was Euch zur Verfügung steht. Wie sich dafür im einzelnen die Benutzernamen zusammensetzen könnt ihr auf den Seiten der einzelnen Provider nachlesen.

Konfiguration anpassen[Bearbeiten]

Habt ihr diese Datei erstellt und gespeichert, muss eine weitere Datei im selben Verzeichnis bearbeitet werden. Die main.cf. Wer auf Nummer sicher gehen will, legt von dieser Datei zuvor ein Backup/eine Kopie an.

sudo vi /etc/postfix/main.cf

Konfiguration anpassen - das meiste wird schon drin stehen. Relayhost ist z.B. smtp.google.de etc.:

mydomain_fallback = localhost
mail_owner = _postfix
setgid_group = _postdrop
relayhost=deinmailserver.de:587

smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options=

Postfix starten[Bearbeiten]

sudo postfix start

oder neu starten (nach jeder Änderung in main.cf )

sudo postfix reload

Postfix Konfiguration ausgeben[Bearbeiten]

Zum schauen ob Änderungen übernommen sind im Terminal:

postconf -n

Test von Konsole[Bearbeiten]

Bei den ersten Beispielen mit ctrl-D Beenden (End of File)

mail -s "hello" "example@example.com"

oder

echo "this is the body" | mail -s "this is the subject" "to@address"

oder

mail -s "hello" "example@example.com" <<EOF
hello
world
EOF

This will send an email to example@example.com with the subject hello and the message

Hello
World

Test mit php[Bearbeiten]

<?php
 
if (mail("max.mustermann@deinedomain.de", "php test", "Per PHP versendet")) {
    echo 'Es hat funktioniert!';
}
?>

Problembehebung[Bearbeiten]

Maillog verfolgen[Bearbeiten]

Terminal:

tail -f /var/log/mail.log

Falls man etwas an den Einstellungen von postfix geändert hat, hilft es auch ein reload auszuführen. Aus irgend einem Grund hilft ein stop + start oft nicht.

TLS aktivieren[Bearbeiten]

Wenn von SMTP Server benötigt

# Enable Transport Layer Security (TLS), i.e. SSL.
smtp_use_tls=yes
smtp_tls_security_level=encrypt
tls_random_source=dev:/dev/urandom

sasl_passwd refresh mit postmap[Bearbeiten]

Und nach jeder Änderung von sasl_passwd muss evtl.

sudo postmap sasl_passwd

ausgeführt werden

Anleitung 2[Bearbeiten]

Quelle: http://www.heise.de/netze/artikel/Postfix-223790.html (12/2014)

Postfix Das Postfix-Paket gehört beim Mac zum Lieferumfang, es muss nur aus dem Dornröschenschlaf geweckt werden. Kopieren Sie dafür den LaunchDeamon in den Ordner /System/Library/LaunchDaemons und die Postfix-Konfigurationsdateien in den Ordner /etc. Wenn Sie das Mail-Server-Archiv auf dem Desktop Ihres Macs entpackt haben, geht das über das Terminal mit Administrator-Rechten beispielsweise so:

cd Desktop/ct-Mac-Mail-Server/Postfix sudo cp org.postfix.master.plist \ /System/Library/LaunchDaemons sudo cp access aliases main.cf master.cf sasl_passwd \ /etc/postfix/ In den Abschnitten für Fetchmail, Dovecot und SpamAssassin verfahren Sie dann entsprechend mit den übrigen LaunchDaemons und Konfigurationsdateien. Die LaunchDaemons sollten grundsätzlich dem User root und der Gruppe wheel gehören, sonst weigert sich der Prozess launchd, die darin enthaltenen Anweisungen auszuführen.

Um nun Ihre individuellen Postfix-Einstellungen einzutragen, öffnen Sie die neu einkopierte Konfigurationsdatei für Postfix, main.cf:

sudo pico /etc/postfix/main.cf Die Zeilen mit den individuellen Einstellungen haben wir in den Konfigurationsdateien kommentiert (#), sodass leicht zu erkennen ist, wo Ihre lokalen Einstellungen einzutragen sind, etwa der Host- und Domain-Name. Während der Erprobungsphase empfiehlt es sich, die Postfix-Eingangskontrolle für Mails etwas zu lockern, damit lokal versandte Testmails, die keine kompletten Header haben, durchgelassen werden; wenn das System zuverlässig läuft, sollte man diese Einstellung abschalten.

soft_bounce = yes In unserem Beispiel ist Postfix so eingerichtet, dass es eingehende Nachrichten annimmt, die für lokale, am Mac eingetragene User bestimmt sind; er leitet sie an diese mittelbar über SpamAssassin weiter. Der Mail-Versand ist lokal über Port 25 für alle Teilnehmer im selben Subnetz zugelassen. Außerhalb des Subnetzes ist für den Mail-Versand nur über Port 587 verfügbar. Wir gehen dabei von einem NAT-Router aus, der den Zugang zum Internet herstellt und Anfragen von dort an den Port 587 via Port-Forwarding zum Mac durchstellt. Der Server akzeptiert nur am Mac eingetragene User nach Authentifizierung mit ihrem Mac-Passwort (smtpd_sasl_auth_enable). Die Kommunikation wird via TLS verschlüsselt (Transport Layer Security). Das Port-Forwarding für den Port 25 darf nicht eingeschaltet werden, weil dieser nicht via TLS abgesichert ist und deshalb die im Klartext übermittelten Passwörter abhörbar wären.

Ein Ziel bei der Konzeption des Mail-Servers war, für die Authentifizierung die Mac-OS-X-eigene User-Datenbank über Pluggable Authentication Modules zu nutzen (PAM), um die Erstellung und den Entwurf einer separaten User-Datenbank zu vermeiden. Das klappte auf dem Mac zunächst nicht, weil eine PAM-Einstellungsdatei fehlt und weil Apple den Daemon saslauthd, der die PAM-Authentifizierung normalerweise vermittelt, ohne PAM-Unterstützung kompiliert hat. Glücklicherweise kann Postfix für die PAM-Authentifizierung den SASL-Dienst des Dovecot-Mail-Servers nutzen (smtpd_sasl_type = dovecot). Das erspart es auch, für die TLS-Verschlüsselung zusätzliche SSL-Zertifikate zu erzeugen: Stattdessen bereiten wir Postfix dafür vor, die später für Dovecot erzeugten Zertifikate zusätzlich für die TLS-Kommunikation über Port 587 zu nutzen (smtpd_tls_key und smtpd_tls_cert).

Prinzipskizze: Mail-Versand Der Mail-Versand läuft nur nach Authentifizierung und TLS-verschlüsselt. Nachrichten laufen wahlweise direkt zum Ziel oder über ein öffentliches Mail-Relay. Vergrößern Der Mail-Versand erfolgt nicht direkt vom Mac-Server zum Ziel, sondern mittelbar über einen öffentlichen Mail-Server, der als Relay dient (relayhost). Bei diesem vermittelten Versand werden die vom privaten Mail-Server abgeschickten Mails mit dem Header eines öffentlich akzeptierten SMTP-Servers versehen und erst von diesem zugestellt. Deshalb bestehen sie die ersten Spam-Analysen und werden bis zum Ziel-SMTP weitergereicht.

Der Relay-Service ist Bestandteil vieler kostenpflichtiger Mail-Dienste (Liste von SMTP-Relays), aber auch separat erhältlich, zum Beispiel von www.smtp.com für rund 2 US-Dollar pro Monat. Der Versand via Relay ist in der Regel nur nach einer Authentifizierung möglich; man muss dafür also ein registrierter Kunde beim Betreiber des öffentlichen Mail-Servers sein, der als Relay fungiert. In unserem Beispiel wird ein Relayhost über Port 587 angesprochen und der lokale Postfix-SMTP authentifiziert sich bei ihm per SASL-Verfahren (Simple Authentication and Security Layer, smtp_sasl_auth_enable) mit der Kennung, die für den Relay-Dienst erforderlich ist. Das kann auch die reguläre Kennung für den Postabruf und -versand von diesem öffentlichen Mail-Server sein; sie wird später in der Datei /etc/postfix/sasl_passwd eingetragen.

Mit den Parametern mailbox_size_limit und message_size_limit lassen sich die Volumina der Postfächer sowie einzelner Nachrichten beschränken. Wir schalten keine Grenzen ein, weil wir davon ausgehen, dass Nachrichten, die bereits die Beschränkungen der Mail-Betreiber passiert haben, nicht zu groß sein dürften. Für die Variablen mydomain und myhostname geben Sie die Namen an, die auf Ihr Netz und Ihren Mail-Server zutreffen. Bei relayhost tragen Sie den öffentlichen Mail-Server ein, der Ihre per Postfix abgeschickten Mails ins Internet weiterleiten soll, also etwa mail.gmx.de, wenn Sie Zugriff auf diesen SMTP-Relay haben.

Sind alle individuellen Parameter gesetzt, speichern Sie main.cf mit Ctrl-X und Y und editieren nacheinander /etc/postfix/access, /etc/postfix/aliases und /etc/postfix/sasl_passwd gemäß den Kurzanleitungen, die wir diesen Dateien vorangestellt haben. So werden die für Postfix essenziellen Aliasnamen, Senderechte für SMTP-Nutzer und das Relay-Passwort festgelegt.

Anschließend legt man die Alias-, Access- und SASL-Passwort-Datenbanken an. Der jeweilige Schritt ist auch später erforderlich, wenn Sie den Inhalt einer der Textdateien ändern:

sudo newaliases sudo postmap /etc/postfix/access sudo postmap /etc/postfix/sasl_passwd Anschließend schränkt man den Zugriff auf die beiden Passwortdateien auf die Postfix-Gruppe und den Root ein, schließt Dritte also aus:

sudo chown root:postfix sasl_passwd* sudo chmod 640 sasl_passwd* Stellen Sie sicher, dass die erforderlichen Spool-Verzeichnisse vorhanden sind – falls der Ordner /private/var/spool/postfix nicht existiert, legen Sie ihn so an:

sudo mkdir /private/var/spool/postfix sudo postfix check Mit dem Kommando postfix check legt man alle Spool-Verzeichnisse auf einen Schlag an. Nun entfernt man den ursprünglichen LaunchDaemon …

sudo launchctl unload /System/Library/LaunchDaemons/org.postfix.master.plist … und startet den neu eingerichteten:

sudo launchctl load -w /System/Library/LaunchDaemons/org.postfix.master.plist Ob der Service gestartet ist, kann man mit dem Programm "Konsole" aus dem Ordner "Dienstprogramme" prüfen; die Ausgaben landen in mail.log. Einen erfolgreichen Start vermeldet Postfix so:

Apr 30 15:50:01 LeoClient1 postfix/master[365]: daemon started -- version 2.4.3, configuration /etc/postfix Der Postfix-LaunchDaemon enthält den KeepAlive-Parameter, mit dem man festlegt, dass Postfix dauerhaft laufen soll. Falls die Konfiguration fehlerhaft ist, quittiert Postfix umgehend den Dienst, aber der LaunchDaemon startet es erneut – das führt zu einer Unzahl von Fehlermeldungen im Log, weshalb man den Teufelskreis mit der obigen Zeile launchctl unload … durchbricht.

Falls das Problem länger besteht und Postfix deshalb auch nach Neustarts nicht mehr geladen werden soll, fügt man hinter "unload" den Schalter "-w" ein. Korrekturen der Konfigurationsdateien oder auch Änderungen an access, alias oder sasl_passwd übernimmt Postfix so:

sudo postfix reload Die Änderungen übernimmt dann gleich das ganze Mail-Transportsystem.

Probleme lösen[Bearbeiten]

Schreibproblem im maildrop Ordner[Bearbeiten]

mail.log

normalerweise unter

private/var/log/

zeigt ein Schreibproblem (access denied)

Repair Permissions with Disk Utility (Festplattendienstprogramm) Danach separat nochmal die Rechte für postfix über:


sudo postfix set-permissions
sudo postfix reload