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

Что я мог упустить / сделать неправильно? Насколько я могу судить, все настройки одинаковы, но в новой системе они не будут работать.

QuantumMechanic
источник

Ответы:

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аутентификации начал работать нормально.

QuantumMechanic
источник
3
Этот комментарий положил конец безумству сегодняшнего постфикса. Также имейте в виду, что при использовании этой конфигурации для аутентификации пользователя должно быть user @ $ myhostname, а не просто «user». Это отличается между этим и моим похожим конфигом exim для аутентифицированного ретранслятора.
Дэвид Домбровский
5

chroot определенно является причиной, однако для моего случая копирование в /var/spool/postfix/etcне сработало.

Так что я только что избавился от chroot, и это работает для меня.

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

smtp      inet  n       -       -       -       -       smtpd

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

smtp      inet  n       -       n       -       -       smtpd
WawaBrother
источник
4

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

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

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

мистифицировать
источник
Вы, красавица, мне удалось получить тестовый сервер Ubuntu 16 для ретрансляции, поэтому подумал, что я просто заново внедрю свои изменения на рабочем сервере Ubuntu 14 ... весь день пробую что-то. Причина была в Chroot, но изменение не в chroot дало худшие результаты, поэтому сохранение chroot и реализация выше решили мои проблемы.
mrjamesmyers