Why is OS X able to send out email without first configuring SMTP?
When I try the command in terminal, an email is sent. I have checked there is no local SMTP is running, so what is the mechanism used by Apple behind the scene?
echo "Hello" | mail -s "Test" [email protected]
mail
on OS X does actually seem to spawn Postfix long enough to deal with the mail, then tear it down a short time later.
To see this in action, try telnet localhost 25
before the mail command, then immediately after, then wait 5 minutes and try it again.
I am not sure this is actually a proper answer to the question because it doesn't explain how Postfix is spawned and torn down, but hopefully it helps answer the question.
SMTP daemons or servers are there to receive mail, not send it. In your example, mail
is purely an email client, and it connects to whatever server is defined by the appropriate DNS MX record of bar.com
, and has no requirement for a local server to be running in order to do so.
However, depending on your mail setup, you may require to log into an outgoing mailserver to authenticate, or if nothing else just to provide sender and return-to addresses etc. Now, you can do all this at the command line by passing the appropriate parameters on the terminal, but as long as you have set up your Mail app, this config is already stored, and by simply temporarily firing up the mail subsystem the terminal commands can grab that info and now have one or more mail smtp servers they can choose to send outgoing messages. It will then terminate the processes when complete.
You can test this all out at the command line and send the mail without having to use a mail client. I'm not at a Mac, so these commands may need editing by someone who is, but you can do this:
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)
Read This for more info on emailing via telnet - it's a great debugging tool
I think mail
always uses local sendmail to send mails. At OSX sendmail is postfix. And it is definitely used.
You can check the mail headers Received: by [Your-Mac] (Postfix, from userid ...
.
Nevertheless it is not a good idea to use mail
(or better postfix
) like this. Best practice would be to use a Smart Host for your local Postfix to avoid often used firewall restrictions.
You can find a solution at SMTP Smart Host Setup for Postfix in Snow Leopard which works for me (also on Lion, Mountain Lion).