I get an error when trying to run sendmail. I am on OS X 10.8 Mountain Lion.
sendmail: fatal: chdir /Library/Server/Mail/Data/spool: No such file or directory
Ask Different is a question and answer site for power users of Apple hardware and software. It only takes a minute to sign up.
Sign up to join this communityJust execute in terminal
sudo mkdir -p /Library/Server/Mail/Data/spool
sudo /usr/sbin/postfix set-permissions
sudo /usr/sbin/postfix start
That did the trick for me.
In order to get rid of all warnings I had to do the following:
sudo mkdir -p /Library/Server/Mail/Data/spool
sudo gzip /usr/share/man/man1/{postalias.1,postcat.1,postconf.1,postdrop.1,postfix.1,postkick.1,postlock.1,postlog.1,postmap.1,postmulti.1,postqueue.1,postsuper.1,sendmail.1}
sudo gzip /usr/share/man/man5/{access.5,aliases.5,bounce.5,canonical.5,cidr_table.5,generic.5,header_checks.5,ldap_table.5,master.5,mysql_table.5,nisplus_table.5,pcre_table.5,pgsql_table.5,postconf.5,postfix-wrapper.5,regexp_table.5,relocated.5,tcp_table.5,transport.5,virtual.5}
sudo gzip /usr/share/man/man8/{anvil.8,bounce.8,cleanup.8,discard.8,error.8,flush.8,local.8,master.8,oqmgr.8,pickup.8,pipe.8,proxymap.8,qmgr.8,qmqpd.8,scache.8,showq.8,smtp.8,smtpd.8,spawn.8,tlsmgr.8,trivial-rewrite.8,verify.8,virtual.8}
sudo /usr/sbin/postfix set-permissions
sudo chmod 700 /Library/Server/Mail/Data/mta
sudo /usr/sbin/postfix start
chown: /usr/share/man/man1/postalias.1.gz: No such file or directory
Oct 20, 2012 at 20:28
The solution appears to also fix an error in 10.8 where the fax service has stopped sending emails after the 10.8 upgrade.
TLDR: Change the queue_directory
variable in /etc/postfix/main.cf
to /var/spool/postfix
.
Full answer:
The mkdir -p
approach likely works, but I suspect there's a simpler solution. Fair warning, I am new to Postfix, and this may all be incorrect.
It seems various editions of Mac OS X use one of two root directories for mail:
/var/spool/postfix
/Library/Server/Mail
These two seem to have been muddled over time. (Note /var
is actually a symlink to /private/var
, so you often see those used interchangeably.)
From what I can tell, /Library/Server/Mail
is a directory that Mac OS X Server uses for its Mail services, which depend on, but are not the same as, Postfix. /var/spool/postfix
, on the other hand, is the preferred directory (p. 14) for Postfix's internal operations.
There are two major configuration files which references these directories:
/etc/postfix/main.cf
/System/Library/LaunchDaemons/org.postfix.master.plist
You're seeing the "No such file or directory error," I suspect, because the queue_directory
variable in Postfix's main.cf
refers to /Library/Server/Mail/Data/spool
, which does not exist. On regular Mac OS X (unlike Server), the entire /Library/Server
directory doesn't exist. Instead of creating it, try correcting the queue_directory
variable to be /var/spool/postfix
.
A second point of inconsistency is in the default settings for launchd, Mac OS X's daemon manager. It isn't necessary to run Postfix all of the time, as launchd can watch a directory for outgoing mail and only run Postfix when there's something to send. To make sure this will happen, the QueueDirectories
key in org.postfix.master.plist
needs to list the maildrop
subdirectory of the directory in main.cf
's queue_directory
variable. For example, I changed my org.postfix.master.plist
file to include:
<key>QueueDirectories</key>
<array>
<string>/var/spool/postfix/maildrop</string>
</array>
With these two directories consistent, Postfix should launch. You should be able to watch /var/log/mail.log
while you run:
$ sudo launchctl unload /System/Library/LaunchDaemons/org.postfix.master.plist
$ sudo launchctl load /System/Library/LaunchDaemons/org.postfix.master.plist
$ sudo launchctl start org.postfix.master
The last of these commands kick-starts Postfix, so you can watch mail.log
for immediate debugging feedback, but again it isn't necessary to execute on a normal basis. Launchd will run Postfix as needed. (If you are certain you want Postfix running all the time, use the KeepAlive
key detailed in the launchd.plist
man page.)