我目前正在更新我的新服务器,以执行与我原来的旧服务器相同的任务(新服务器正在运行Debian 气喘吁吁, 旧服务器正在运行Debian 挤压)。
我遇到的问题是使用以下代码通过 pear 发送电子邮件:
$smtp = Mail::factory('smtp', array ('host' => 'localhost',
'port' => '25',
'auth' => true,
'username' => 'linuxUser',
'password' => 'linuxPassword'));
$mail = $smtp->send($to, $headers, $text);
我可以从终端发送电子邮件
$mail [email protected]
但是,当我尝试运行 php 脚本通过 pear 发送电子邮件时,我的 mail.log 中出现错误
邮件日志错误
postfix/smtpd[7835]: warning: SASL authentication failure: unable to canonify user
and get auxprops
postfix/smtpd[7835]: warning: localhost[::1] SASL DIGEST-MD5 authentication failed:
authentication failure
我将概述一些我更改的配置文件
/etc/postfix/main.cf
# SMTP Authentication
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtp_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,
check_relay_domains, reject_unauth_destination
...
smtpd_banner = mail.$mydomain ESMTP $mail_name
mydomain = domain.com
myorigin = $mydomain
myhostname = mail.domain.com
inet_interfaces = all
/etc/默认/saslauthd
START=yes
MECHANISMS="shadow"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
/etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
我最初认为 SASL 用户名和密码设置不正确 - 大多数在线教程显示用户名和密码存储在单独的数据库文件中。然而,在我的例子中,用户名和密码被分配给 Linux 用户名/密码。
我不知道为什么这不起作用,这是 postfix/SMTP 错误还是 pear/php 错误?
答案1
我更改了以下配置文件
/etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
现在,身份验证可以正常工作。