Ubuntu 16.04新邮件服务器可以接收但不能发送邮件

Ubuntu 16.04新邮件服务器可以接收但不能发送邮件

我按照 Digitalocean 上的分步教程学习如何使用 Postfix、Dovecot、Mysql(我将最后一个更改为 MariaDB)在 Ubuntu 上设置邮件服务器。

我面临的问题是我可以接收邮件,但无法发送任何邮件。

也许了解我是使用我的用户和关键字完成整个安装的sudo

所以,我已经遇到这个问题两个星期了,尝试了很多方法,现在是时候试试我的运气了。

运行时sudo service postfix status我看到以下错误返回

May 06 09:27:05 mailserver01 postfix/qmgr[8494]: 6AC1F2C093A: from=<[email protected]>, size=652, nrcpt=1 (queue active)
May 06 09:27:05 mailserver01 postfix/postdrop[25691]: fatal: /etc/postfix/dynamicmaps.cf: file open failed: Permission denied
May 06 09:27:06 mailserver01 postfix/sendmail[25689]: warning: command "/usr/sbin/postdrop -r" exited with status 1
May 06 09:27:06 mailserver01 postfix/sendmail[25689]: fatal: [email protected](1001): unable to execute /usr/sbin/postdrop -r: Success
May 06 09:27:06 mailserver01 postfix/pipe[25688]: 6AC1F2C093A: to=<[email protected]>, relay=spamassassin, delay=147723, delays=147722/0/0/1, dsn=4.3.0, status=deferred (temporary failure. Command output: postdrop: fatal: /etc/postfix/dynamicmaps.cf: file open failed: Permission denied sendmail: status=deferred (temporary failure. Command output: postdrop: fatal: /etc/postfix/dynamicmaps.cf: file open failed: Permission denied sendmail: warning: command "/usr/sbin/postdrop -r" exited with status 1 sendmail: fatal: [email protected](1001): unable to execute /usr/sbin/postdrop -r: Success )
May 06 09:33:48 mailserver01 postfix/submission/smtpd[25746]: connect from cust-228-37-109-94.dyn.as47377.net[94.109.37.228]

也许这是权限问题,我知道这一点,但为了清楚起见,我已经尝试创建一个新组,其中 root、postfix、myuser、dovecot、spamd 是该组的用户。然后我授予该组对该 postfix 文件夹和子文件夹的读写权限。但没成功...

以下是今天的权限:

-rw-r----- 1 root root      153 Apr 28 12:51 dynamicmaps.cf
-rw-r--r-- 1 root root     2674 May  5 09:05 main.cf
-rw-r----- 1 root root     1388 Apr 28 14:23 main.cf.orig
-rw-r----- 1 root root     6261 May  5 09:49 master.cf
-rw-r----- 1 root postfix   142 May  1 13:07 mysql-virtual-alias-maps.cf
-rw-r----- 1 root postfix   130 May  1 13:08 mysql-virtual-mailbox-domains.cf
-rw-r----- 1 root postfix   129 May  1 13:07 mysql-virtual-mailbox-maps.cf
-rw-r----- 1 root root    21233 Apr 13  2016 postfix-files
-rwxr-x--- 1 root root     9344 Apr 13  2016 postfix-script
-rwxr-x--- 1 root root    29446 Apr 13  2016 post-install
drwxr-x--- 2 root root     4096 Apr 13  2016 sasl

有人知道如何解决这个问题吗?

答案1

postdrop通常已应用 setgid 位,这意味着当其他进程(如 spamassasin)使用它来传递邮件时,该进程将在其他进程用户(例如 spamassasin)下执行,但postdrop在 的组下执行:

$ ls -la `which postdrop`
-r-xr-sr-x 1 root postdrop 14328 Feb  5  2015 /usr/sbin/postdrop
      ^               ^
      |               |
setgid bit set     executed with postdrop's privileges

现在日志告诉您,postdrop无法访问它必须读取的配置文件:

May 06 09:27:05 mailserver01 postfix/postdrop[25691]: fatal: /etc/postfix/dynamicmaps.cf: file open failed: Permission denied

查看文件的权限,该文件对 root 用户可读可写,对 root 组可读。它是不是任何人都可以阅读(这是一件好事)。

-rw-r----- 1 root root      153 Apr 28 12:51 dynamicmaps.cf

要解决此问题,请将文件的所有权更改为postdrop组 ( chown postdrop /etc/postfix/dynamicmaps.cf)。读取权限应该足够了,因此没有必要修改权限。如果其他文件也需要调整权限,请逐个进行调整(或仔细重新考虑所需权限)。通常,如果服务器进程识别出广泛颁发的权限,它们会拒绝执行任何操作,以通知您消除因系统上每个人的读写权限不足而导致的安全问题。

相关内容