web-dev-qa-db-ja.com

Debian 7へのアップグレード:PostfixAuthが失敗する

さまざまなDebian6サーバーをDebian7にアップグレードしています。いくつかの小さな問題がありますが、これはショーストッパーです。

Debianでは、Postfixはchrootされた環境で実行されます。その環境は正しくセットアップされています(Debian6では完全に機能していました)。

私はdebianリポジトリの安定版リリースのソフトウェアのみを使用しています

関連する(の一部の)構成(匿名化):

/ etc/default/saslauthd内:


START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="ldap"
MECH_OPTIONS=""
THREADS=5
PARAMS=" -m /var/spool/postfix/run/saslauthd -O /etc/saslauthd.conf"
OPTIONS=" -m /var/spool/postfix/run/saslauthd -O /etc/saslauthd.conf"
PIDFILE="/var/spool/postfix/run/saslauthd/saslauthd.pid"

/etc/saslauthd.conf内:

# With multiple servers, separate URIs with a space
ldap_servers: ldaps://my.ldap.server

# Don't use SASL to connect to LDAP!! (Use SSL)
#ldap_version: 3
ldap_use_sasl: no
ldap_bind_dn: uid=courier,ou=roles,dc=mydomain,dc=tld

#watch out for trailing whitespace after the pasword!
ldap_bind_pw: #######
ldap_timeout: 10
ldap_time_limit: 10

ldap_scope: sub 
ldap_search_base: ou=people,dc=mydomain,dc=tld
ldap_auth_method: bind
ldap_filter: (mail=%u)
#ldap_filter: (mail=%u@%r)

ldap_debug: 1
ldap_verbose: off 
ldap_referrals: yes 

# Settings below are needed for ldaps URIs
ldap_ssl: yes 
ldap_start_tls: no
ldap_tls_cacert_file: /etc/ssl/certs/allcacerts.pem
ldap_tls_cert: /etc/ssl/certs/myserver.mydomain.tld.crt
ldap_tls_key: /etc/ssl/private/myserver.mydomain.tld.key

/etc/postfix/sasl/smtpd.conf内:

#global parameters
log_level: 5
# WARNING !!! POSTFIX runs in a chrooted jail!!
# Need to adjust paths to get the socket available!
# adjust this in /etc/defaults/saslauthd
# eg: PARAMS=/var/spool/postfix/run/saslauthd/
# real saslauthd_path: /var/spool/postfix/run/saslauthd/mux
pwcheck_method: saslauthd 
saslauthd_path: /run/saslauthd/mux
mech_list: PLAIN LOGIN
auxprop_plugin: ldapdb
#allow_plaintext: true
#the database used is /var/spool/postfix/etc/sasldb2

/etc/postfix/main.cf内

#sasl configuration
smtpd_sasl_auth_enable = yes 
smtpd_sasl_path= smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = 
#broken_sasl_auth_clients = yes

# TLS configuration
smtpd_use_tls = yes 
smtpd_tls_loglevel = 1 
smtpd_tls_received_header = yes 
smtpd_tls_key_file = /etc/ssl/private/myserver.mydomain.tld.key
#smtpd_tls_cert_file = /etc/ssl/certs/myserver.mydomain.tld.crt
smtpd_tls_cert_file  = /etc/ssl/certs/myserver.mydomain.tld.pem
tls_random_source = dev:/dev/urandom
# CAfile is read BEFORE entering chroot jail
smtpd_tls_CAfile = /etc/ssl/certs/allcacerts.pem
# CApath is used withIN chroot jail
#smtpd_tls_CApath = /usr/share/ssl/certs/

CyrusSASLのソケットは/var/spool/postfix/run/saslauthd/mux

私はテストします:

testsaslauthd -s smtpd -f /var/spool/postfix/run/saslauthd/mux -u [email protected] -p PASSWD

与える:0: OK "Success."

参考:資格情報が正しくないと失敗します:)

これらの結果から、私の結論は、saslが正しく機能しているということです。

'swaks'を使用してESMTP認証をテストする場合:

swaks -s myserver.mydomain.tld -p 25 -ehlo myclient.mydomain.tld -au [email protected] -ap PASSWD -t [email protected] -f [email protected]

=== Trying myserver.mydomain.tld:25...
=== Connected to myserver.mydomain.tld.
<-  220 ***********************
 -> EHLO myclient.mydomain.tld
<-  250-myserver.mydomain.tld
<-  250-PIPELINING
<-  250-SIZE 15360000
<-  250-VRFY
<-  250-ETRN
<-  250-XXXXXXXA
<-  250-AUTH PLAIN LOGIN
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250 DSN
 -> AUTH LOGIN
<-  334 VXNlcmgfhgWU6
 -> bWFyY2hgh28ubmw=
<-  334 UGFzfghdfmQ6
 -> bWFyUzYdfghgfhg==
<** 535 5.7.8 Error: authentication failed: no mechanism available
 -> AUTH PLAIN AG1hcmdfhgdfgd1hclM2NW9ndCo=
<** 535 5.7.8 Error: authentication failed: no mechanism available
*** No authentication type succeeded
 -> QUIT
<-  221 2.0.0 Bye
=== Connection closed with remote Host.

そしてログで:

postfix/smtpd[5646]:auxpropfunc error invalid parameter supplied
postfix/smtpd[5646]:_sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb
postfix/smtpd[5646]:anonuserfunc error -7
postfix/smtpd[5646]:_sasl_plugin_load failed on sasl_canonuser_init for plugin: ldapdb 
postfix/smtpd[5646]:warning: unknown[192.168.114.69 : SASL LOGIN authentication failed: no mechanism available 
postfix/smtpd[5646]:warning: unknown[192.168.114.69 : SASL PLAIN authentication failed: no mechanism available 

(IPはクライアントマシンのものです)

Postfixユーザーはsaslグループのメンバーです。

Debianがトリプレットを挿入してライブラリのディレクトリ構造を変更し、マルチアーチ対応にしたことは知っています。

以前は:/usr/lib/sasl2 今でしょ: /usr/lib/x86_64-linux-gnu/sasl2(x86 64ビットシステムの場合)

Sasl2ディレクトリをさまざまな場所にコピーしてライブラリを利用できるようにしましたが、何も変わりませんでした。

誰でも?

マルセル

1
Marcel van Dorp

解決しました!

多くのデバッグが必要でしたが、次の設定ですべてが再び機能します。

/etc/postfix/smtpd.conf内:

pwcheck_method: saslauthd
saslauthd_path: /run/saslauthd/mux
mech_list: PLAIN LOGIN
# DO NOT SPECIFY THE AUX_PROP PLUGIN!!
#auxprop_plugin: ldapdb

/etc/saslauthd.conf内:

...
ldap_auth_method: bind
#ldap_filter: (mail=%u)
ldap_filter: (mail=%u@%r)
...

元々このフィルターを使用していましたが、LDAPログに[email protected]@のログイン試行が表示されたため、フィルターを変更しました(元の投稿を参照)。

!!必要なのは、auxprop_plugin設定をコメントアウトすることだけでした。

ただし、私のsaslセットアップでは、私は[〜#〜] only [〜#〜] ldapバックエンドを使用することに注意してください。

マルセル

2
Marcel van Dorp

警告:localhost [127.0.0.1]:SASL PLAIN認証に失敗しました:使用可能なメカニズムがありません

私は同じ問題を抱えていましたが、mysqlを使用しています。この行をコメントアウトした後:#auxprop_plugin、すべて正常に動作します!

pwcheck_method: saslauthd
mech_list: plain login cram-md5 digest-md5
allow_plaintext: true
#auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: postfix
sql_passwd: pass
sql_database: postfix
loglevel: 0
sql_select: select password from mailbox where username = '%u@%r'
0
Genilto