Warum kann OS X E-Mails versenden, ohne zuerst SMTP zu konfigurieren?

Wenn ich den Befehl im Terminal versuche, wird eine E-Mail gesendet. Ich habe überprüft, dass kein lokales SMTP ausgeführt wird. Welchen Mechanismus verwendet Apple also hinter den Kulissen?

echo "Hello" | mail -s "Test" foo@bar.com

Antworten (3)

mailunter OS X scheint Postfix tatsächlich lange genug zu spawnen, um mit der Mail fertig zu werden, und reißt es kurze Zeit später wieder ab.

Um dies in Aktion zu sehen, versuchen Sie es telnet localhost 25vor dem Befehl mail, dann unmittelbar danach, warten Sie dann 5 Minuten und versuchen Sie es erneut.

Ich bin mir nicht sicher, ob dies tatsächlich eine richtige Antwort auf die Frage ist, da es nicht erklärt, wie Postfix erzeugt und abgebaut wird, aber hoffentlich hilft es bei der Beantwortung der Frage.

SMTP-Daemons oder -Server dienen zum Empfangen von E-Mails, nicht zum Senden. In Ihrem Beispiel mailist es ein reiner E-Mail-Client und stellt eine Verbindung zu jedem Server her, der durch den entsprechenden DNS-MX-Eintrag von definiert ist bar.com, und erfordert dazu keinen lokalen Server.

Abhängig von Ihrer E-Mail-Einrichtung müssen Sie sich jedoch möglicherweise bei einem ausgehenden Mailserver anmelden, um sich zu authentifizieren, oder, wenn nichts anderes, nur Absender- und Rücksendeadressen usw. angeben. Jetzt können Sie dies alles in der Befehlszeile tun, indem Sie die entsprechende Parameter auf dem Terminal, aber solange Sie Ihre Mail-App eingerichtet haben, ist diese Konfiguration bereits gespeichert, und durch einfaches vorübergehendes Hochfahren des Mail-Subsystems können die Terminalbefehle diese Informationen abrufen und haben jetzt einen oder mehrere Mail-SMTP-Server, die sie können auswählen, ausgehende Nachrichten zu senden. Es beendet dann die Prozesse, wenn sie abgeschlossen sind.

Sie können dies alles auf der Kommandozeile testen und die E-Mail senden, ohne einen E-Mail-Client verwenden zu müssen. Ich bin nicht an einem Mac, daher müssen diese Befehle möglicherweise von jemandem bearbeitet werden, der dies tut, aber Sie können dies tun:

nslookup
set type=mx
bar.com
exit

telnet MXServer 25 (where MXServer is one of the results returned above and 25 is the port number for SMTP servers)

Lesen Sie dies für weitere Informationen zum E-Mail-Versand über Telnet – es ist ein großartiges Debugging-Tool

Ihre Antwort hat zwar die meisten Stimmen erhalten, ist aber falsch. Der Mac erzeugt ein Postfix, um die E-Mail zu erhalten und automatisch herunterzufahren, wie oben von @zigg vorgeschlagen. Danke trotzdem für deine Mühe.
Es ist nicht so, dass es als solches falsch ist, alle Details sind korrekt, aber es beantwortet Ihre Frage nicht unbedingt in der aktuellen Form. Dazu bearbeitet.
@stuffe sagte: "SMTP-Daemons oder -Server sind da, um E-Mails zu empfangen, nicht um sie zu senden". Ich muss da anderer Meinung sein. Da dies ein Kommentar ist, zitiere ich diesen nur aus Wikipedia: "Client-Mail-Anwendungen auf Benutzerebene verwenden SMTP normalerweise nur zum Senden von Nachrichten."

Ich denke mail, verwendet immer lokales sendmail, um Mails zu senden. Unter OSX ist sendmail postfix. Und es wird definitiv genutzt.

Sie können die Kopfzeilen der E - Mail überprüfen Received: by [Your-Mac] (Postfix, from userid ....

Trotzdem ist es keine gute Idee, so etwas zu verwenden mail(oder besser postfix). Am besten verwenden Sie einen Smarthost für Ihr lokales Postfix, um häufig verwendete Firewall-Einschränkungen zu vermeiden.

Unter SMTP Smart Host Setup für Postfix in Snow Leopard finden Sie eine Lösung , die für mich funktioniert (auch für Lion, Mountain Lion).

Aus der Kopfzeile habe ich gefunden ... Empfangen: von 10.194.242.101 mit SMTP-ID xxx; ... X-Empfangen: von 10.68.92.196 mit SMTP-ID yyy; ... aber meine interne IP ist 192.168.xx