postfix / Ubuntu 12.04에서 SASL auxprop / sasldb를 사용할 수 없습니다.


9

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 --

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

답변:


15

공짜는 여기 있습니다 :

-- 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인증 잘 작동하기 시작했다.


3
이 의견은 오늘 밤의 접미사 광기를 종식시켰다. 또한이 구성을 사용하려면 인증 사용자는 "user"가 아니라 user @ $ myhostname이어야합니다. 이것은 인증 된 릴레이에 대한 이것과 비슷한 exim 구성과 다릅니다.
David Dombrowsky

5

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

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

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

smtp      inet  n       -       -       -       -       smtpd

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

smtp      inet  n       -       n       -       -       smtpd

4

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

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

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


아름다움, 나는 테스트 서버 Ubuntu 16 릴레이를 얻었으므로 프로덕션 서버 Ubuntu 14에서 변경 사항을 다시 구현할 것이라고 생각했습니다. 하루 종일 시도해보십시오. Chroot가 그 이유 였지만 chroot가 아닌 것으로 변경하면 더 나쁜 결과를 얻었으므로 chroot를 유지하고 위를 구현하면 문제가 해결되었습니다.
mrjamesmyers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.