Warum kann OS X E-Mails versenden, ohne zuvor SMTP konfiguriert zu haben?


9

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

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

Antworten:


4

mail Unter OS X scheint Postfix tatsächlich lange genug zu erscheinen, um die E-Mails zu bearbeiten, und sie kurze Zeit später abzureißen.

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

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


7

SMTP-Daemons oder -Server empfangen E-Mails und senden sie nicht. In Ihrem Beispiel mailhandelt es sich lediglich um einen E-Mail-Client, der eine Verbindung zu einem beliebigen Server herstellt, der durch den entsprechenden DNS-MX-Eintrag von definiert ist. Dazu bar.commuss kein lokaler Server ausgeführt werden.

Abhängig von Ihrem E-Mail-Setup müssen Sie sich möglicherweise bei einem ausgehenden Mailserver anmelden, um sich zu authentifizieren, oder wenn nichts anderes nur Absender- und Absenderadressen usw. bereitstellt. Jetzt können Sie dies alles über die Befehlszeile tun, indem Sie die entsprechenden Anweisungen übergeben Parameter auf dem Terminal, aber solange Sie Ihre Mail-App eingerichtet haben, ist diese Konfiguration bereits gespeichert. Durch einfaches vorübergehendes Starten des Mail-Subsystems können die Terminalbefehle diese Informationen abrufen und verfügen nun über einen oder mehrere Mail-SMTP-Server Wählen Sie, ob Sie ausgehende Nachrichten senden möchten. Nach Abschluss werden die Prozesse beendet.

Sie können dies alles über die Befehlszeile testen und die E-Mail senden, ohne einen E-Mail-Client verwenden zu müssen. Ich bin nicht auf einem Mac, daher müssen diese Befehle möglicherweise von jemandem bearbeitet werden, 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, um weitere Informationen zum E-Mail-Versand über Telnet zu erhalten - es ist ein großartiges Debugging-Tool


Ihre Antwort erhielt zwar die höchste Stimmenzahl, ist aber falsch. Der Mac erzeugt einen Postfix, um die E-Mail zu erhalten und automatisch herunterzufahren, wie oben bei @zigg vorgeschlagen. Trotzdem danke für deine Mühe.
Yoga

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

@stuffe sagte: "SMTP-Daemons oder -Server sind dazu da, E-Mails zu empfangen, nicht zu senden." Ich muss darum bitten, mich zu unterscheiden. Da dies ein Kommentar ist, zitiere ich dies nur aus Wikipedia: "Client-Mail-Anwendungen auf Benutzerebene verwenden SMTP normalerweise nur zum Senden von Nachrichten"
Seamus

1

Ich denke, verwendet mailimmer lokale sendmail, um Mails zu senden. Unter OSX ist sendmail ein Postfix. Und es wird definitiv verwendet.

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

Trotzdem ist es keine gute Idee, so etwas zu verwenden mail(oder besser postfix). Es wird empfohlen, einen Smart Host für Ihr lokales Postfix zu verwenden, 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 dem Header fand ich ... Empfangen: bis 10.194.242.101 mit SMTP-ID xxx; ... X-empfangen: bis 10.68.92.196 mit SMTP-ID yyy; ... aber meine interne IP ist 192.168.xx
Yoga
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.