현재 기존 서버와 동일한 작업을 수행하기 위해 새 서버를 업데이트하고 있습니다(새 서버가 실행 중입니다).숨이 차는 데비안, 기존 서버가 실행 중입니다.데비안 스퀴즈).
내가 겪고 있는 문제는 다음 코드를 사용하여 배를 통해 이메일을 보내는 것입니다.
$smtp = Mail::factory('smtp', array ('host' => 'localhost',
'port' => '25',
'auth' => true,
'username' => 'linuxUser',
'password' => 'linuxPassword'));
$mail = $smtp->send($to, $headers, $text);
터미널에서 이메일을 보낼 수 있어요
$mail [email protected]
그러나 Pear를 통해 이메일을 보내기 위해 PHP 스크립트를 실행하려고 하면 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/default/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
이제 인증이 잘 됩니다.