postmap:致命:打开数据库/etc/postfix/sasl_passwd.db:权限被拒绝

Jam*_*ers 10 postfix gmail

我正在配置 Postfix 以使用外部 smtp。为此,我使用了本教程

跟踪之后,在日志中发现/etc/postfix/sasl_passwd.db无法读取。该文件不存在。我使用 postmap hash:/etc/postfix/sasl_passwd ( http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailservers.html ) 作为 root,但我得到:

postmap: fatal: open database /etc/postfix/sasl_passwd.db: Permission denied
Run Code Online (Sandbox Code Playgroud)

为什么我会得到这个?

OS: Fedora 14
User "postfix" exists.
Run Code Online (Sandbox Code Playgroud)

更新:

sudo ls -l /etc/postfix/sasl_passwd.db ls:

cannot access /etc/postfix/sasl_passwd.db: No such file or directory

touch /etc/postfix/sasl_passwd.db
chmod 640 /etc/postfix/sasl_passwd.db
chown postfix:root /etc/postfix/sasl_passwd.db

sudo ls -l /etc/postfix/sasl_passwd.db

-rwxr--r--. 1 postfix root 0 Feb 19 04:16 /etc/postfix/sasl_passwd.db
-rw-r-----. 1 postfix root 0 Feb 19 04:16 /etc/postfix/sasl_passwd.db

postmap hash:/etc/postfix/sasl_passwd

postmap: fatal: cannot remove zero-length database file /etc/postfix/sasl_passwd.db: Permission denied.
Run Code Online (Sandbox Code Playgroud)

chmod 777 给出与上面相同的错误。

Kha*_*led 18

您需要确保 postfix 用户能够读取该文件。您可以发布输出$ sudo ls -l /etc/postfix/sasl_passwd.db以获得更多帮助。

要创建此文件,您可以使用以下命令:

$ sudo postmap sasl_passwd
Run Code Online (Sandbox Code Playgroud)

这将创建.db文件。


小智 10

这个问题,至少在 Ubuntu 12.04 上,是由 /etc/postfix 文件夹不属于 postfix 用户引起的。(如上所述)。

错误消息是因为您不应直接自己创建 .db 文件。如果您这样做了,请将其删除。

postmap: fatal: cannot remove zero-length database file /etc/postfix/sasl_passwd.db: Permission denied.
Run Code Online (Sandbox Code Playgroud)

对原始问题的简单修复是:

sudo chown postfix /etc/postfix
Run Code Online (Sandbox Code Playgroud)

之后,你可以运行这个

sudo postmap sasl_passwd
Run Code Online (Sandbox Code Playgroud)

假设您的明文密码在文件 sasl_passwd 中