Назад | Перейти на главную страницу

Не удается заставить SASL auxprop / sasldb работать с postfix / Ubuntu 12.04

У меня есть система 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 и просто не могу заставить ее работать. Я все делаю так же, но 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, и у меня это работает.

Для этого вам нужно будет отредактировать /etc/postfix/master.cf, найдите следующую строку:

smtp      inet  n       -       -       -       -       smtpd

и измените его следующим образом:

smtp      inet  n       -       n       -       -       smtpd

Другой способ синхронизировать файл sasldb2 с chroot jail по умолчанию postfix - добавить на него жесткую ссылку:

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

Обратите внимание, что символическая ссылка не будет работать, потому что символические ссылки недоступны изнутри тюрьмы, а жесткие ссылки могут. Это имеет преимущество перед простым копированием файла, потому что будущие новые пользователи и изменения пароля будут автоматически синхронизироваться без перезагрузки постфикса.