Sendmail SMTP 확인은 간단합니다. 확인이 실패하는 이유는 무엇입니까?

Sendmail SMTP 확인은 간단합니다. 확인이 실패하는 이유는 무엇입니까?

sendmail에서는 smtp 인증 sasl이 실행 중이므로 이 작업을 수행합니다.

root      1609     1  0 05:16 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root      1610  1609  0 05:16 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root      1611  1609  0 05:16 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root      1612  1609  0 05:16 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root      1613  1609  0 05:16 ?        00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5

Sasl sendmail 구성(/usr/lib/sasl2/sendmail.conf)

pwcheck_method: saslauthd
mech_list: LOGIN PLAIN

나는 sendmail smtp를 이와 같이 구성했습니다

define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl

물론 파일을 컴파일하고 sendmail을 다시 시작하면 smtp 인증이 작동하는 것 같습니다(telnet localhost).

250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 2097152
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP

이렇게 하면 인증 로그인에서 base64로 인코딩된 사용자를 묻는 메시지가 표시됩니다. 이를 입력한 다음 비밀번호를 입력하고 입력하면 표시됩니다.

535 5.7.0 authentication failed

Base64로 변환하려면 이 스크립트를 사용합니다.

#!/usr/bin/perl
use strict;
use MIME::Base64;
print encode_base64("$ARGV[0]");
exit 0;

물론, 먼저 saslpasswd2 사용자를 위한 제안이 있습니까?

답변1

해결책을 찾아라여기

saslauthd 사용에 -a pam을 사용하지 마십시오 -a sasldb 이와 같이

saslauthd  -a sasldb

관련 정보