Was ist der richtige Weg, um Postfix dauerhaft auf Lion (nicht Server) laufen zu lassen?

Ich kann Postfix temporär starten mit:

$ sudo launchctl
launchd% start org.postfix.master

Console.app zeigt jedoch, dass es nur für kurze Zeit läuft:

26/11/11 2:00:55.710 PM postfix/master: master exit time has arrived

Ich denke, die Datei /System/Library/LaunchDaemons/org.postfix.master.plist muss aktualisiert werden, damit Postfix dauerhaft läuft, aber ich habe die Antwort noch nicht gefunden.

Was ist der richtige Weg, um Postfix beim Booten zu starten und dauerhaft auszuführen?

Aktualisieren Um die Datei wie von der ausgewählten Antwort empfohlen zu bearbeiten, habe ich sie zunächst in XML konvertiert.

plutil  -convert xml1 /System/Library/LaunchDaemons/org.postfix.master.plist

Dann einfach mit Vim bearbeitet:

sudo vim /System/Library/LaunchDaemons/org.postfix.master.plist

Ich hatte Probleme beim Versuch, Xcode dazu zu bringen, die Datei zu bearbeiten.

Antworten (1)

Folgende Änderungen haben bei mir funktioniert:

  1. Entfernen Sie die folgenden zwei Elemente aus /System/Library/LaunchDaemons/org.postfix.master.plist:

    <string>-e</string>
    <string>60</string>
    

    Dadurch wird das Beenden nach 60 Sekunden gestoppt.

  2. Fügen Sie das folgende Element als untergeordnetes Element des <dict>...</dict>Elements in derselben Plist-Datei hinzu:

    <key>KeepAlive</key>
    <true/>
    
  3. Datei neu laden:

    sudo launchctl unload /System/Library/LaunchDaemons/org.postfix.master.plist 
    sudo launchctl load /System/Library/LaunchDaemons/org.postfix.master.plist
    

Postfix sollte jetzt als Daemon laufen.

Das obige funktioniert auf Mountain Lion, Mavericks, Yosemite und El Capitan. Für Systeme mit Systemintegritätsschutz (El Capitan und höher) gibt es zwei Optionen:

  1. Kopieren /System/Library/LaunchDaemons/org.postfix.master.plistnach /Library/LaunchDaemons/org.postfix.custom.plist, Wechseln org.postfix.masternach org.postfix.customund dann Entladen und Laden wie oben.
  2. Deaktivieren Sie SIP (mit csrutil), nehmen Sie die Änderungen vor und aktivieren Sie SIP erneut.

Hinweis: Bei High Sierra und Mojave ist die Konfigurationsdatei com.apple.postfix.master.pliststatt org.postfix.custom.plist.

Hat bei Mavericks für mich funktioniert, aber ich musste den vollständigen Dateipfad eingeben, um ihn zu laden: sudo launchctl load /System/Library/LaunchDaemons/org.postfix.master.plist
Da war eine cd /System/Library/LaunchDaemonsZeile vor unloadund loaddie vielleicht übersehen wurde. Ich habe den vollständigen Pfad eingefügt, um es klarer zu machen.
ich musste "sudo postfix start" eingeben, um es zu mke, anstatt launchtl Zeug von mjturner zu laden; weiß nicht warum...
Auf El Capitan /System/Library/LaunchDaemons/org.postfix.master.plistist es nicht mehr bearbeitbar. Anregungen?
@ChrisWithers Ich habe einige Informationen hinzugefügt. Deaktivieren Sie SIP grundsätzlich, nehmen Sie die Änderungen vor und aktivieren Sie es erneut. Sie müssen jedoch von einem Rettungsmedium booten, bevor Sie SIP aktivieren/deaktivieren können.
@mjturner - SIP deaktivieren? nein nein nein ... Viel besser ist es, einfach eine neue .plist zu erstellen, die Sie in /Library/LaunchDaemons/ besitzen.
@ChrisWithers Fairer Kommentar (leider wurde Ihre vorgeschlagene Änderung abgelehnt, nicht von mir). Ich bevorzuge den Deaktivierungs-/Bearbeitungs-/Aktivierungsansatz, damit er offensichtlicher ist, aber Ihrer ist auch gültig.
@mjturner - ja, das ist komisch. Ich habe keine Benachrichtigung erhalten, und es ist ein bisschen traurig. Möchtest du dieselbe Bearbeitung vornehmen?
@ChrisWithers Ja, ich werde meine Antwort heute Abend bearbeiten und Ihren Vorschlag aufnehmen. 👍🏼
@mjturner In High Sierra wird org.postfix.master.plistes umbenannt in com.apple.postfix.master.plist. Vielleicht möchten Sie das der Antwort hinzufügen.
Ich musste hinzufügen <key>RunAtLoad</key> <true/>, um es beim Booten zu starten (auf High Sierra)
@mjturner: Durch das Einfügen der benutzerdefinierten Plist in LaunchDaemons wird der benutzerdefinierte Daemon nicht gestartet, da das Original bereits ausgeführt wird und effektiv Vorrang hat. Jedes Mal, wenn ich meinen Computer neu starte, muss ich also zuerst den ursprünglichen Daemon entladen und dann den benutzerdefinierten manuell über launchctldas Terminal laden. Gibt es eine Möglichkeit, macOS (ich bin auf 10.12) dazu zu bringen, die modifizierte Version von Postfix beim Start automatisch auszuführen, ohne mit SIP herumzuspielen?