postfix / Ubuntu 12.04에서 SASL auxprop / sasldb를 사용할 수 없습니다. authentication failure 그러나 대신 연결 the.oldsystem.com:587하고 같은

Postfix 2.5.1을 실행하는 Ubuntu 8.04LTS 시스템이 있습니다. 해당 시스템에서 SMTP AUTH가 정상적으로 실행됩니다 . 내용 /etc/postfix/sasl/smtpd.conf은 다음 과
같습니다.

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN

SASL 관련 속성은 다음과 같습니다.

smtpd_sasl_type = cyrus
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $myhostname

sudo sasldblistusers2내가 얻을 때 :

authusername@mail.mydomain.com: userPassword

내가 말했듯이 모든 것이 8.04LTS 시스템에서 잘 작동합니다.

그러나 Postfix 2.9.3을 실행하는 Ubuntu 12.04LTS 시스템으로 이것을 마이그레이션하려고하는데 작동하지 않습니다. 나는 모든 것을 똑같이하고 있지만 postfix는 매번 인증 실패를 제공합니다.

/etc/sasldb2파일 이 아닙니다 . 이전 시스템에서 파일을 가져 오려고했지만 작동하지 않습니다. 그리고 다음을 사용하여 새 파일을 만들었습니다.

saslpasswd2 -c -u mail.mydomain.com authusername

그것이 비록 그것은하지 작업을 수행 내가 파일에 아무것도 잘못이 알고 어떻게 기존의 시스템에 복사하면 기존 시스템에서 작동합니다.

마찬가지로 postfix가 smtpd.conf파일을 보고 있다는 것을 알고 있습니다. mech_list파일 줄에 더 많은 메커니즘을 추가 하면 smtpd 데몬에 연결할 때 추가 메커니즘이 보급되는 것을 볼 수 있습니다. 내가 제거하면 다시 사라집니다. 그래서 /etc/postfix/sasl/smtpd.conf분명히 사용됩니다.

실제 메일 클라이언트를 사용하고 다음과 같이 토큰을 생성 한 후 서버와 수동으로 대화하여 테스트하고 있습니다.

perl -MMIME::Base64 -e 'print encode_base64("\000authusername\000thePassword");'

그때:

openssl s_client -quiet -starttls smtp -connect the.newsystem.com:587

결과 대화는 다음과 같습니다.

250 DSN
EHLO example.com
250-the.newsystem.com
250-PIPELINING
250-SIZE 20971520
250-ETRN
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN theBase64EncodedToken
535 5.7.8 Error: authentication failed: authentication failure

그러나 대신 연결 the.oldsystem.com:587하고 같은 일을하면 다음과 같은 결과를 얻습니다.

235 2.7.0 Authentication successful

새 머신에서 saslfinger의 출력은 다음과 같습니다.

# sudoh saslfinger -s
saslfinger - postfix Cyrus sasl configuration Sat Jul 21 00:24:24 EDT 2012
version: 1.0.4
mode: server-side SMTP AUTH

-- basics --
Postfix: 2.9.3
System: Ubuntu 12.04 LTS \n \l

-- smtpd is linked to --
        libsasl2.so.2 => /usr/lib/i386-linux-gnu/libsasl2.so.2 (0xb76c5000)


-- active SMTP AUTH and TLS parameters for smtpd --
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
smtpd_tls_CAfile = /etc/ssl/certs/MyCA.pem
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/postfix/ssl/server.crt
smtpd_tls_key_file = /etc/postfix/ssl/server.key
smtpd_tls_loglevel = 1
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s


-- listing of /usr/lib/sasl2 --
total 16
drwxr-xr-x  2 root root 4096 Jul 20 23:00 .
drwxr-xr-x 67 root root 8192 Jul 20 21:25 ..
-rw-r--r--  1 root root    1 May  4 00:17 berkeley_db.txt

-- listing of /etc/postfix/sasl --
total 20
drwxr-xr-x 2 root root 4096 Jul 20 21:29 .
drwxr-xr-x 5 root root 4096 Jul 20 23:58 ..
-rw-r--r-- 1 root root   64 Jul 20 21:29 smtpd.conf



-- content of /etc/postfix/sasl/smtpd.conf --
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN

-- content of /etc/postfix/sasl/smtpd.conf --
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN


-- active services in /etc/postfix/master.cf --
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

[snipping the rest of the services]

-- mechanisms on localhost --

-- end of saslfinger output --

무엇을 놓치고 / 잘못 할 수 있습니까? 내가 알 수있는 한 모든 구성은 동일하지만 새 시스템에서는 작동하지 않습니다.



답변

공짜는 여기 있습니다 :

-- active services in /etc/postfix/master.cf --
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd

포트 의 smtpd프로세스 submission가 chroot 모드에서 실행 중입니다 ( -해당 열에 기본값이 있음을 의미 yes하므로 볼 수 없음) /etc/sasldb2.

내가 복사하는 경우 /etc/sasldb2/var/spool/postfix/etc인증 잘 작동하기 시작했다.


답변

chroot는 확실히 그 이유이지만, 필자의 경우 복사가 /var/spool/postfix/etc작동하지 않았습니다.

그래서 나는 chroot를 제거했고 그것은 나를 위해 작동합니다.

n /etc/postfix/master.cf를 편집하여 다음 줄을 찾으십시오.

smtp      inet  n       -       -       -       -       smtpd

다음과 같이 수정하십시오.

smtp      inet  n       -       n       -       -       smtpd


답변

sasldb2 파일을 postfix의 기본 chroot jail과 동기화하는 또 다른 방법은 하드 링크를 추가하는 것입니다.

ln /etc/sasldb2 /var/spool/postfix/etc/

교착 상태 내부에서 심볼릭 링크에 액세스 할 수 없지만 하드 링크는 액세스 할 수 있기 때문에 심볼릭 링크가 작동하지 않습니다. 이것은 미래의 새로운 사용자와 비밀번호 변경이 접미사 다시로드없이 자동으로 동기화되므로 파일을 단순히 복사하는 것보다 이점이 있습니다.


답변