
私は 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
testsaslauthd による認証テストは次のように機能します:
# testsaslauthd -s smtp -u test -p test
0: OK "Success."
telnetでも同様です:
# 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
[メイン.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
saslauthd 構成で -r が削除されました。ドキュメントによると、"-r レルムとログインを組み合わせます (間に '@' 記号を入れます)。たとえば、ログイン: "foo" レルム: "bar" は、ログイン: "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 エンコード) では telnet は依然として失敗します。
答え1
コメントにもあるように、ユーザー名はそしてレルムは SASL ライブラリに送信されます。
-r
saslauthd 構成から削除されました (予期しない動作、領域は引き続き送信されます)。smtpd_sasl_local_domain
動作をテストするように強制できます。
この設定では、swask が認証し、telnet も認証します。telnet の場合、エラーは base64 エンコード エラーでした (申し訳ありません)。念のため、-n
echo で改行なしで base64 エンコードするには、次のようにします。
echo -n $USERNAME | base64