Неможливо змусити SASL auxprop / sasldb працювати з postfix / Ubuntu 12.04


9

У мене є система Ubuntu 8.04LTS під управлінням Postfix 2.5.1. У цій системі 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 все працює добре.

Однак я намагаюся перенести це на систему Ubuntu 12.04LTS, на якій працює Postfix 2.9.3, і я просто не можу змусити її працювати. Я все роблю так само, але постфікс кожного разу дає збої аутентифікації.

Це не /etc/sasldb2файл. Я намагався перенести файл зі старої системи, і це не працює. І я створив новий файл, використовуючи:

saslpasswd2 -c -u mail.mydomain.com authusername

і це не працює, хоча він буде працювати в старій системі, якщо я скопіюю її до старої системи, тому я знаю, що з файлом немає нічого поганого.

Точно так само я знаю, що 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порт працює в режимі кореневого (так як є -в цьому стовпці , що означає за замовчуванням (яке yes) застосовується , і тому не може бачити /etc/sasldb2.

Коли я скопіював /etc/sasldb2з /var/spool/postfix/etcаутентифікацією почав працювати нормально.


3
Цей коментар поклав кінець сьогоднішньому безумству постфікса. Також майте на увазі, що для використання цієї конфігурації користувачеві для автентифікації потрібно буде користувач @ $ myhostname, а не лише "користувач". Це відрізняється між цим та моїм аналогічним exim config для автентифікованого реле.
Девід Домбровський

5

chroot, безумовно, є причиною, однак для мого випадку копіювання /var/spool/postfix/etcне працювало.

Тож я просто позбувся хроту і це працює на мене.

n для цього вам потрібно буде відредагувати /etc/postfix/master.cf знайти наступний рядок:

smtp      inet  n       -       -       -       -       smtpd

і змінити його наступним чином:

smtp      inet  n       -       n       -       -       smtpd

4

Інший спосіб синхронізувати файл sasldb2 до в'язниці chroot за замовчуванням postfix - додати жорстке посилання на нього:

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

Зауважте, що посилання на симлінк не працює, оскільки доступ до символьних посилань не може бути зсередини в'язниці, але жорсткі посилання можуть. Це має перевагу перед простою копією файлу, оскільки майбутні нові користувачі та зміни паролів будуть автоматично синхронізовані, навіть не перезавантажуючи постфікс.


Ви, красуня, мені вдалося отримати тестовий сервер Ubuntu 16 ретрансляції, тому я думав, що я просто повторно впроваджу мої зміни на виробничому сервері Ubuntu 14 ... цілий день пробуючи речі. Chroot був причиною, але зміна на chroot дала гірші результати, тому тримання chroot та виконання вище вирішили мої проблеми.
mrjamesmyers
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.