我已经按照教程http://flurdy.com/docs/postfix/设置电子邮件服务器,大部分功能都正常(从 Courier 切换到 Dovecot 后)。只是无法通过 SMTP 发送电子邮件。使用 发送sendmail
功能正常。
/var/log/auth.log
这是我尝试使用 Thunderbird 发送电子邮件时看到的内容:
May 22 18:45:59 myserver postfix/submission/smtpd[16560]: sql auxprop plugin using mysql
May 22 18:45:59 myserver saslauthd[16141]: pam_unix(smtp:auth): check pass; user unknown
May 22 18:45:59 myserver saslauthd[16141]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
May 22 18:46:01 myserver saslauthd[16141]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
May 22 18:46:01 myserver saslauthd[16141]: : auth failure: [user=user1] [service=smtp] [realm=myserver.nl] [mech=pam] [reason=PAM auth error]
May 22 18:46:01 myserver saslauthd[16142]: pam_unix(smtp:auth): check pass; user unknown
May 22 18:46:01 myserver saslauthd[16142]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
May 22 18:46:04 myserver saslauthd[16142]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
May 22 18:46:04 myserver saslauthd[16142]: : auth failure: [user=user1] [service=smtp] [realm=myserver.nl] [mech=pam] [reason=PAM auth error]
(我以 身份登录[email protected]
,并且 IMAP 可以正常运行。)
我可以看到一些针对用户的 mysql 查询[email protected]
,但是有许多进程、守护进程和配置一起工作,我不知道哪个部分失败了。
总结:
- postfix 设置为使用 sasl(在
/etc/postfix/main.cf
和 中/etc/postfix/sasl/smtpd.conf
) - saslauthd 设置为使用 pam(在 中
/etc/default/saslauthd
) - pam smtp 设置为使用 mysql 作为其用户数据库(但似乎从来没有?)(在
/etc/pam.d/smtp
)
from用于查询。我可以在 mysql 日志中看到那里的更改sql_select
。/etc/postfix/sasl/smtpd.conf
user1
配置的表和列/etc/pam.d/smtp
从未使用过。更改那里的内容不会产生任何影响。
testsaslauthd
仅当我添加时才对我“有效” -f /var/spool/postfix/var/run/saslauthd/mux
,但它始终返回NO "authentication failed"
并且从不查询 mysql,所以我不知道它怎么会起作用。但输出auth.log
与 Thunderbird 的真实请求的输出非常相似(确实触发了 mysql 查询/查找):
May 22 18:59:56 myserver saslauthd[16756]: pam_unix(imap:auth): check pass; user unknown
May 22 18:59:56 myserver saslauthd[16756]: pam_unix(imap:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
May 22 18:59:58 myserver saslauthd[16756]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
May 22 18:59:58 myserver saslauthd[16756]: : auth failure: [[email protected]] [service=imap] [realm=] [mech=pam] [reason=PAM auth error]
然后是密码哈希。我已将 Dovecot 设置为仅接受 SSL 并使用纯文本密码 ( users.clear
)。我不知道哈希密码 ( users.crypt
) 是否正确,或者 Postfix 是否使用它。我已在所有配置文件中尝试了所有组合。输出auth.log
始终相同。没有详细信息。
Thunderbird 告诉我它无法发送消息,然后显示一种错误消息:...“意外错误 80004005”...“由于未知原因无法发送”。这似乎不是密码错误,而是某个内部服务器错误。但日志中没有可怕的错误消息......
在某处添加一些调试级别后(抱歉我记不清了,配置文件太多了!)系统日志包含更多有关 smtp 连接的信息:
May 22 19:10:45 myserver postfix/submission/smtpd[16779]: SSL_accept:SSLv3/TLS read finished
...
May 22 19:10:45 myserver postfix/submission/smtpd[16779]: Anonymous TLS connection established from ip-1.2.3.4.ip.myisp.net[4.3.2.1]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
...
May 22 19:10:45 myserver postfix/submission/smtpd[16779]: Read 22 chars: EHLO [192.168.0.101]??
...
May 22 19:10:45 myserver postfix/submission/smtpd[16779]: Read 49 chars: AUTH PLAIN AHVzZXIxQG15c2VydmVyLm5sAHBp
May 22 19:10:48 myserver postfix/submission/smtpd[16779]: warning: SASL authentication failure: Password verification failed
May 22 19:10:48 myserver postfix/submission/smtpd[16779]: warning: ip-1.2.3.4.ip.myisp.net[4.3.2.1]: SASL PLAIN authentication failed: authentication failure
May 22 19:10:48 myserver postfix/submission/smtpd[16779]: Write 64 chars: 535 5.7.8 Error: authentication failed:
...
May 22 19:10:48 myserver postfix/submission/smtpd[16779]: Read 12 chars: AUTH LOGIN??
May 22 19:10:48 myserver postfix/submission/smtpd[16779]: Write 18 chars: 334 VXNlcm5hbWU6??
...
May 22 19:10:50 myserver postfix/submission/smtpd[16779]: warning: ip-1.2.3.4.ip.myisp.net[4.3.2.1]: SASL LOGIN authentication failed: authentication failure
May 22 19:10:50 myserver postfix/submission/smtpd[16779]: Write 64 chars: 535 5.7.8 Error: authentication failed:
...
May 22 19:10:52 myserver postfix/submission/smtpd[16779]: disconnect from ip-1.2.3.4.ip.myisp.net[4.3.2.1] ehlo=2 starttls=1 auth=0/2 quit=1 commands=4/6
+很有趣... EHLO 就没意思了?记录的 base64 被截断了?然后是“密码验证失败”,但没有关于哪部分失败的详细信息EHLO
。AUTH PLAIN ...
myserver
我找不到比这更多的调试了。系统日志、邮件日志、身份验证日志、mysql 日志。所有配置文件都很大,所以我没有添加大部分。我跟着http://flurdy.com/docs/postfix/非常准确,并且对每个步骤进行了多次验证,所以这就是我得到的。除了 clear 与 crypt,我对此进行了几次更改。
有什么好主意吗?
答案1
我认为它有效……天哪,感觉真好!现在要弄清楚在哪里可以禁用这种大量的调试……
解决方案:https://unix.stackexchange.com/a/417882/43000
而且我还从 PAM 更改为 Postfix 的 SQL 插件(“auxprop sql”?):http://www.postfix.org/SASL_README.html#auxprop_sql因为我不想要加密密码。
现在
postfix/submission/smtpd[16560]: Read 49 chars: AUTH PLAIN AHVzZXIxQG15c2VydmVyLm5sAHBp
postfix/submission/smtpd[16560]: warning: SASL authentication failure: Password verification failed
postfix/submission/smtpd[16560]: warning: ip-1-2-3-4.ip.prioritytelecom.net[4.3.2.1]: SASL PLAIN authentication failed: authentication failure
postfix/submission/smtpd[16560]: Write 64 chars: 535 5.7.8 Error: authentication failed:
我明白了
postfix/submission/smtpd[23504]: Read 49 chars: AUTH PLAIN AHVzZXIxQG15c2VydmVyLm5sAHBp
postfix/submission/smtpd[23504]: Write 37 chars: 235 2.7.0 Authentication successful??
我不知道发生了什么??
,但是的,它似乎是成功了。
它甚至将已发送的邮件复制到已发送邮件文件夹几次,但现在不再如此(Thunderbird 永远挂起)。