我在 Debian 上用 Postfix、Dovecot 和 MySQL (MariaDB) 设置了一个小型邮件服务器。我还用 Let's Encrypt 配置了 TLS。rDNS、DMARC、DKIM、SPF 和 Fail2Ban 也已设置并确认可以正常工作。
我的 DMARC 记录如下所示:
v=DMARC1;p=reject;sp=reject;adkim=r;aspf=r;rua=mailto:report@[example].com;fo=1
问题是,应该偶尔将报告发送到同一邮件服务器上的电子邮件地址的功能不起作用。rua=mailto:[email protected]
/var/log/mail.log
报告:
Jan 18 14:47:05 [hostname] postfix/sendmail[20682]: fatal: open /etc/postfix/main.cf: Permission denied
Jan 18 14:47:05 [hostname] postfix/pipe[20681]: 553A01F977: to=<report@[example].net>, relay=spamassassin, delay=9533, delays=9533/0.01/0/0.3, dsn=4.3.0, status=deferred (temporary failure. Command output: sendmail: fatal: open /etc/postfix/main.cf: Permission denied )
的权限/etc/postfix/main.cf
为:
-rwxr-x--- 1 root root 3968 Jan 18 08:36 /etc/postfix/main.cf
需要什么样的权限sendmail
才能成功工作?或者这个问题可能与其他事情有关?
如果需要,我可以发布配置文件,但希望保持简洁。
更新 - 2022-01-26
/etc/postfix/main.cf
不幸的是,即使将的权限更改为 ,相同的权限问题仍然存在754
。
以下是今天早上的扩展摘录/var/log/mail.log
,希望有助于进一步调试:
Jan 26 06:17:48 [hostname] postfix/qmgr[18018]: BBF611E00B: from=<[email protected]>, size=3516, nrcpt=1 (queue active)
Jan 26 06:17:48 [hostname] postfix/sendmail[23302]: fatal: open /etc/postfix/main.cf: Permission denied
Jan 26 06:17:48 [hostname] postfix/pipe[23301]: BBF611E00B: to=<report@[example].net>, relay=spamassassin, delay=148779, delays=148779/0.01/0/0.33, dsn=4.3.0, status=deferred (temporary failure. Command output: sendmail: fatal: open /etc/postfix/main.cf: Permission denied )
Jan 26 06:27:48 [hostname] postfix/qmgr[18018]: 581341F9AA: from=<[email protected]>, size=3516, nrcpt=1 (queue active)
Jan 26 06:27:48 [hostname] postfix/sendmail[23436]: fatal: open /etc/postfix/main.cf: Permission denied
Jan 26 06:27:48 [hostname] postfix/pipe[23435]: 581341F9AA: to=<report@[example].net>, relay=spamassassin, delay=148788, delays=148788/0.01/0/0.14, dsn=4.3.0, status=deferred (temporary failure. Command output: sendmail: fatal: open /etc/postfix/main.cf: Permission denied )
Jan 26 06:38:20 [hostname] postfix/pickup[23498]: 891351FEEF: uid=0 from=<root>
Jan 26 06:38:20 [hostname] postfix/cleanup[23537]: 891351FEEF: message-id=<20230126053820.891351FEEF@[hostname].[example].net>
Jan 26 06:38:20 [hostname] postfix/qmgr[18018]: 891351FEEF: from=<root@[example].net>, size=150485, nrcpt=1 (queue active)
Jan 26 06:38:20 [hostname] dovecot: lmtp(23545): Connect from local
Jan 26 06:38:20 [hostname] postfix/lmtp[23544]: 891351FEEF: to=<root@[example].net>, orig_to=<root>, relay=[hostname].[example].net[private/dovecot-lmtp], delay=0.09, delays=0.05/0.01/0.01/0.02, dsn=5.1.1, status=bounced (host [hostname].[example].net[private/dovecot-lmtp] said: 550 5.1.1 <root@[example].net> User doesn't exist: root@[example].net (in reply to RCPT TO command))
Jan 26 06:38:20 [hostname] dovecot: lmtp(23545): Disconnect from local: Client has quit the connection (state=READY)
Jan 26 06:38:20 [hostname] postfix/cleanup[23537]: 9C4C31FEF2: message-id=<20230126053820.9C4C31FEF2@[hostname].[example].net>
Jan 26 06:38:20 [hostname] postfix/qmgr[18018]: 9C4C31FEF2: from=<>, size=3330, nrcpt=1 (queue active)
Jan 26 06:38:20 [hostname] dovecot: lmtp(23545): Connect from local
Jan 26 06:38:20 [hostname] postfix/bounce[23549]: 891351FEEF: sender non-delivery notification: 9C4C31FEF2
Jan 26 06:38:20 [hostname] postfix/qmgr[18018]: 891351FEEF: removed
Jan 26 06:38:20 [hostname] postfix/lmtp[23544]: 9C4C31FEF2: to=<root@[example].net>, relay=[hostname].[example].net[private/dovecot-lmtp], delay=0.01, delays=0/0/0/0.01, dsn=5.1.1, status=bounced (host [hostname].[example].net[private/dovecot-lmtp] said: 550 5.1.1 <root@[example].net> User doesn't exist: root@[example].net (in reply to RCPT TO command))
Jan 26 06:38:20 [hostname] dovecot: lmtp(23545): Disconnect from local: Client has quit the connection (state=READY)
Jan 26 06:38:20 [hostname] postfix/qmgr[18018]: 9C4C31FEF2: removed
需要注意的是,运行 的用户sendmail
似乎是root
。 运行ps aux | grep sendmail
,如下所示,返回:
root 24694 0.0 0.0 6044 888 pts/0 S+ 10:40 0:00 grep sendmail
以下是一些来自/var/spool/postfix:
drwx------ 2 postfix root 4096 Jan 26 09:27 active
drwx------ 2 postfix root 4096 Jan 26 06:38 bounce
drwx------ 2 postfix root 4096 Jan 11 13:59 corrupt
drwx------ 7 postfix root 4096 Jan 24 12:58 defer
drwx------ 7 postfix root 4096 Jan 24 12:58 deferred
drwxr-xr-x 2 root root 4096 Jan 16 11:09 dev
drwxr-xr-x 3 root root 4096 Jan 18 08:37 etc
drwx------ 2 postfix root 4096 Jan 11 13:59 flush
drwx------ 2 postfix root 4096 Jan 11 13:59 hold
drwx------ 2 postfix root 4096 Jan 26 06:38 incoming
drwxr-xr-x 3 root root 4096 Jan 11 13:59 lib
drwx-wx--T 2 postfix postdrop 4096 Jan 26 06:38 maildrop
drwxr-xr-x 2 opendkim postfix 4096 Jan 16 11:37 opendkim
drwxr-xr-x 2 root root 4096 Jan 16 08:57 pid
drwx------ 2 postfix root 4096 Jan 18 08:37 private
drwx--s--- 2 postfix postdrop 4096 Jan 18 08:37 public
drwx------ 2 postfix root 4096 Jan 11 13:59 saved
drwx------ 2 postfix root 4096 Jan 11 13:59 trace
drwxr-xr-x 3 root root 4096 Jan 11 13:59 usr
以下是来自的许可信息附录/etc/postifx:
drwxr-xr-x 23 root wheel 736B Dec 2 09:43 ./
drwxr-xr-x 80 root wheel 2.5K Jan 17 13:17 ../
-rw-r--r-- 1 root wheel 12K Dec 2 09:43 LICENSE
-rw-r--r-- 1 root wheel 1.6K Dec 2 09:43 TLS_LICENSE
-rw-r--r-- 1 root wheel 21K Dec 2 09:43 access
-rw-r--r-- 1 root wheel 9.8K Dec 2 09:43 aliases
-rw-r--r-- 1 root wheel 3.5K Dec 2 09:43 bounce.cf.default
-rw-r--r-- 1 root wheel 12K Dec 2 09:43 canonical
-rw-r--r-- 1 root wheel 44B Dec 2 09:43 custom_header_checks
-rw-r--r-- 1 root wheel 10K Dec 2 09:43 generic
-rw-r--r-- 1 root wheel 23K Dec 2 09:43 header_checks
-rw-r--r-- 1 root wheel 27K Dec 2 09:43 main.cf
-rw-r--r-- 1 root wheel 27K Dec 2 09:43 main.cf.default
-rw-r--r-- 1 root wheel 26K Dec 2 09:43 main.cf.proto
-rw-r--r-- 1 root wheel 6.0K Dec 2 09:43 makedefs.out
-rw-r--r-- 1 root wheel 7.3K Dec 2 09:43 master.cf
-rw-r--r-- 1 root wheel 7.3K Dec 2 09:43 master.cf.default
-rw-r--r-- 1 root wheel 6.1K Dec 2 09:43 master.cf.proto
-rw-r--r-- 1 root wheel 20K Dec 2 09:43 postfix-files
drwxr-xr-x 2 root wheel 64B Dec 2 09:43 postfix-files.d/
-rw-r--r-- 1 root wheel 6.8K Dec 2 09:43 relocated
-rw-r--r-- 1 root wheel 12K Dec 2 09:43 transport
-rw-r--r-- 1 root wheel 13K Dec 2 09:43 virtual
答案1
错误消息"fatal: open /etc/postfix/main.cf: Permission denied"
表明运行 sendmail 进程的用户没有足够的权限来读取 Postfix 配置文件。
上的权限/etc/postfix/main.cf
设置为-rwxr-x---
,表示所有者(root)具有读、写和执行的权限,但是组和其他用户没有执行权限。
运行 sendmail 进程的用户可能不属于 root 组,因此对配置文件没有执行权限。您可以尝试通过运行以下命令为该组或其他用户添加执行权限:
sudo chmod 754 /etc/postfix/main.cf
这将授予所有者读取、写入和执行权限、授予组读取和执行权限以及授予其他用户读取权限。
还需要注意的是,sendmail 进程很可能在不同于 root 的用户下运行,因此您还应该检查目录/var/spool/postfix
和子目录的权限,以确保 sendmail 用户有权写入队列目录。
如果您不知道 sendmail 进程以哪个用户身份运行,您可以使用该命令"ps aux | grep sendmail"
来查找它。
该问题也可能与其他问题有关,您可能需要检查其他错误,以便mail.log
更深入地了解问题的原因。
答案2
postfix 不以 root 用户身份运行,但您已将配置文件的权限设置为仅 root 用户。
chmod o+r /etc/postfix/main.cf
当然还有其他的 postfix 配置文件。