Nie można uzyskać SASL auxprop / sasldb współpracującego z Postfix / Ubuntu 12.04

9

Mam system Ubuntu 8.04LTS z systemem Postfix 2.5.1. W tym systemie SMTP AUTH działa poprawnie . Zawartość /etc/postfix/sasl/smtpd.confto:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN

Właściwości związane z SASL to:

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

Kiedy sudo sasldblistusers2dostanę:

[email protected]: userPassword

Tak jak powiedziałem, że wszystko działa dobrze w systemie 8.04LTS.

Próbuję jednak migrować to do systemu Ubuntu 12.04LTS z Postfix 2.9.3 i po prostu nie mogę go uruchomić. Robię wszystko tak samo, ale postfix za każdym razem powoduje błędy uwierzytelnienia.

To nie jest /etc/sasldb2plik. Próbowałem przynieść plik ze starego systemu i to nie działa. I utworzyłem nowy plik, używając:

saslpasswd2 -c -u mail.mydomain.com authusername

i to nie działa, ale będzie działać na starym systemie, jeśli skopiuję go do starego systemu, dzięki czemu wiem, że plik nie ma nic złego.

Podobnie wiem, że postfix widzi smtpd.confplik. Jeśli dodam więcej mechanizmów do mech_listwiersza pliku, widzę, że te dodatkowe mechanizmy są reklamowane, kiedy łączę się z demonem smtpd. A kiedy je usuwam, znów odchodzą. Więc /etc/postfix/sasl/smtpd.confwyraźnie się przyzwyczaja.

Testuję zarówno przy użyciu rzeczywistego klienta poczty, jak i ręcznie rozmawiając z serwerem po wygenerowaniu tokena za pomocą:

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

następnie:

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

Wynikowa rozmowa to:

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

Ale jeśli zamiast tego połączę się the.oldsystem.com:587i zrobię to samo, otrzymam:

235 2.7.0 Authentication successful

Dane wyjściowe saslfinger na nowej maszynie to:

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

Czego mogłem brakować / robić źle? O ile mogłem powiedzieć, cała konfiguracja jest taka sama, ale nie będzie działać na nowym systemie.

QuantumMechanic
źródło

Odpowiedzi:

15

Rozdanie jest tutaj:

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

smtpdProces na submissionporcie pracuje w trybie chroot (ponieważ nie jest -w tej kolumnie, co oznacza ustawienie domyślne (co jest yes) ma zastosowanie i tak nie widać /etc/sasldb2.

Po skopiowaniu /etc/sasldb2do /var/spool/postfix/etcuwierzytelniania zaczęło działać dobrze.

QuantumMechanic
źródło
3
Ten komentarz położył kres dzisiejszemu szaleństwu po postfiksie. Należy również pamiętać, że przy użyciu tej konfiguracji użytkownik uwierzytelniający musi być użytkownikiem @ $ moja_hosta, a nie tylko „użytkownik”. To różni się od tej i mojej podobnej konfiguracji exim dla uwierzytelnionego przekaźnika.
David Dombrowsky
5

chroot jest zdecydowanie powodem, jednak w moim przypadku kopiowanie do /var/spool/postfix/etcnie działało.

Właśnie pozbyłem się chroota i to działa dla mnie.

Aby to zrobić, musisz edytować /etc/postfix/master.cf zlokalizować następujący wiersz:

smtp      inet  n       -       -       -       -       smtpd

i zmodyfikuj go w następujący sposób:

smtp      inet  n       -       n       -       -       smtpd
WawaBrother
źródło
4

Innym sposobem zsynchronizowania pliku sasldb2 z domyślnym więzieniem chroot w Postfix jest dodanie do niego twardego linku:

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

Zauważ, że dowiązanie symboliczne nie działa, ponieważ dowiązania symboliczne nie mogą być dostępne od wewnątrz więzienia, ale twarde linki mogą. Ma to tę zaletę, że po prostu kopiuje plik, ponieważ przyszli nowi użytkownicy i zmiany haseł będą automatycznie synchronizowane nawet bez ponownego ładowania postfiksów.

Josh
źródło
Jesteś piękna, udało mi się uzyskać serwer testowy Ubuntu 16, więc pomyślałem, że po prostu zaimplementuję moje zmiany na serwerze produkcyjnym Ubuntu 14 ... cały dzień próbując. Powodem był Chroot, ale zmiana na chroot nie dawała gorszych rezultatów, więc utrzymywanie chroota i wdrażanie powyżej rozwiązało moje problemy.
mrjamesmyers,