Postfix / sasldb : "인증 실패"

Postfix / sasldb : "인증 실패"

저는 postfix 전문가가 아닙니다... debian 11.8에서 posfix 3.5 인증 문제가 있습니다.

테스트 사용자를 추가했습니다.

# saslpasswd2 -c test
Password: test

swaks를 사용하여 postfix에 대한 인증을 테스트하면 다음 오류가 발생합니다.

# swaks --to root --server 172.31.0.69:25 --auth LOGIN
Username: test
Password: test
535 5.7.8 Error: authentication failed: authentication failure
*** No authentication type succeeded

로그:

postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-xxx.localdomain
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-PIPELINING
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-SIZE 10240000
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-VRFY
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-ETRN
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-AUTH=CRAM-MD5 DIGEST-MD5 LOGIN PLAIN
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-ENHANCEDSTATUSCODES
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-8BITMIME
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250-DSN
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 250 CHUNKING
postfix/smtpd[3144881]: watchdog_pat: 0x55af645786d0
postfix/smtpd[3144881]: < unknown[172.31.0.69]: AUTH LOGIN
postfix/smtpd[3144881]: xsasl_cyrus_server_first: sasl_method LOGIN
postfix/smtpd[3144881]: xsasl_cyrus_server_auth_response: uncoded server challenge: Username:
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 334 VXNlcm5hbWU6
postfix/smtpd[3144881]: < unknown[172.31.0.69]: dGVzdA==
postfix/smtpd[3144881]: xsasl_cyrus_server_next: decoded response: test
postfix/smtpd[3144881]: xsasl_cyrus_server_auth_response: uncoded server challenge: Password:
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 334 UGFzc3dvcmQ6
postfix/smtpd[3144881]: < unknown[172.31.0.69]: dGVzdA==
postfix/smtpd[3144881]: xsasl_cyrus_server_next: decoded response: test
postfix/smtpd[3144881]: warning: unknown[172.31.0.69]: SASL LOGIN authentication failed: authentication failure
postfix/smtpd[3144881]: > unknown[172.31.0.69]: 535 5.7.8 Error: authentication failed: authentication failure

testaslauthd를 통한 인증 테스트는 다음과 같이 작동합니다.

# testsaslauthd -s smtp -u test -p test
0: OK "Success."

텔넷도 마찬가지입니다.

# telnet 172.31.0.69 25
Trying 172.31.0.69...
Connected to 172.31.0.69.
Escape character is '^]'.
220 xxx.localdomain ESMTP Postfix (Debian/GNU)
HELO xxx.com
250 xxx.localdomain
AUTH LOGIN
334 VXNlcm5hbWU6
dGVzdAo=
334 UGFzc3dvcmQ6
dGVzdAo=
535 5.7.8 Error: authentication failed: authentication failure

[main.cf]

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no                                                         

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, localhost.$mydomain, localhost
relayhost = XXX
smtp_fallback_relay = XXX
mynetworks = 127.0.0.0/8
#inet_interfaces = loopback-only
inet_protocols = ipv4
recipient_delimiter = +

inet_interfaces = all
smtpd_relay_restrictions = permit_mynetworks
permit_sasl_authenticated reject
                                                                                
# auth
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
cyrus_sasl_config_path = /etc/postfix/sasl

debug_peer_list = 172.31.0.69

[sasl/smtpd.conf]

pwcheck_method: saslauthd
auxprop_plugin: sasldb
aslech_list: CRAM-MD5 DIGEST-MD5 LOGIN PLAIN

[/etc/default/saslauthd]

START=yes
MECHANISMS="sasldb"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
PARAMS="-m /var/spool/postfix/var/run/saslauthd -r"

편집 1

[/etc/메일이름]

backup6

사용자:

# sasldblistusers2 
test@backup6: userPassword

편집 2

-r saslauthd 구성에서 제거되었습니다. 문서에 따르면, "-r 영역을 로그인과 결합합니다(그 사이에 '@' 기호 포함). 예를 들어 login: "foo" 영역: "bar"는 login: "foo@bar"로 전달됩니다. 영역은 계속 전달되므로 예기치 않은 동작이 발생할 수 있습니다."

[/etc/default/saslauthd]

START=yes
MECHANISMS="sasldb"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
PARAMS="-m /var/spool/postfix/var/run/saslauthd"

그런 다음 swaks가 작동합니다.

# swaks --to root --server 172.31.0.69:25 --auth LOGIN
Username: test@backup6
Password: test
[...]
235 2.7.0 Authentication successful

그러나 텔넷은 사용자 이름 test@backup6(base64 인코딩)으로 인해 여전히 실패합니다.

답변1

댓글에서 말했듯이 사용자 이름은그리고영역은 SASL 라이브러리로 전송됩니다.

-rsaslauthd 구성에서 제거되었으며(예기치 않은 동작, 영역은 여전히 ​​전송됨) smtpd_sasl_local_domain동작을 테스트하도록 강제될 수 있습니다.

이 구성을 사용하면 swask가 인증되고 telnet도 인증됩니다. 텔넷의 경우 오류는 base64 인코딩 오류였습니다(죄송합니다!). 참고로 -necho에서 줄 바꿈 없이 base64 인코딩을 사용하세요.

echo -n $USERNAME | base64

관련 정보