我正在配置 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 中