Postfix Configuration macOS
Postfix Configuration macOS #
This is a little step-by-step guide which worked for me to send emails from macOS on my local machine.
Step 1 – sasl_passwd file #
Create a SASL (a Simple Authentication and Security Layer) password file:
> sudo vi /etc/postfix/sasl_passwd
The file contains only a single line consisting of the following data:
[mailserver]:[port] [username@domain.com]:[password]
You have to replace [mailserver], [username@domain.com] as well as [password] with the actual data. You might be able to skip the :[port] part.
For example:
smtp.provider.de johndoe@somewhere.de:qwertzuiop
Step 2 – postfix lookup #
Create a postfix lookup for the SASL password file, this is done by executing the following command:
> sudo postmap /etc/postfix/sasl_passwd
You could test this configuration by running:
> postmap -q [mailserver] hash:/etc/postfix/sasl_passwd
This should return your configuration data, continuing the example from above:
> postmap -q smtp.provider.de hash:/etc/postfix/sasl_passwd
johndoe@somewhere.de:qwertzuiop
Step 3 – main configuration #
Now you have to adapt the postfix main configuration file main.cf
. I recommend backing it up before you start editing it.
> sudo vi /etc/postfix/main.cf
Some of these settings might be set already, just enter the missing parts at the bottom of the file:
mail_owner = _postfix
setgid_group = _postdrop
# specifix configuration
myhostname = <domain.de>
relayhost = <mailserver>:<port>
smtpd_sender_restrictions = permit_inet_interfaces
# enable SASL
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
# enable TLS
smtp_use_tls=yes
smtp_tls_security_level=encrypt
smtp_sasl_mechanism_filter = AUTH LOGIN
# what domains to receive mail for
mydestination =
Step 4 – (re)start postfix #
Now you've to (re)start postfix in order to read in the current configuration:
> sudo postfix start
(or rather) sudo postfix reload
Step 5 – Testing #
It's time to test the configuration by sending a test mail. You could do so by executing:
> date | mail -s testmail recipient@domain.de
> php -r "if (mail('recipient@domain.de', 'postfix test', date('D M d H:i:s T Y'))) { echo 'success'; }"
Step 6 – Mail Queue #
From time to time it's quite useful to have a look at the mail queue:
> mailq
You could reset the mail queue manually by running:
> sudo postsuper -d ALL
Step 7 – Logging #
/var/log/mail.log
does not work since macOS Sierra. Apple uses a new log system and does not use the log files / asl any longer.
Now the logs are stored in memory or in a log db.
@see: Server 5.2 missing SMTP Logs
You can use the following command:
> log stream --predicate '(process == "smtpd") || (process == "smtp")' --info | grep "to=<"
You can also redirect the output directly into a file:
> log stream --predicate '(process == "smtpd") || (process == "smtp")' --info > ~/mail.log