У меня есть настройка saslauthd для аутентификации по PAM. Кажется, он делает свое дело:
root@sasltest:~# testsaslauthd -u quest -p #### -s smtp
0: OK "Success."
У меня libsasl 2.1.23, postfix 2.7.1.
У меня настроен постфикс:
smtpd_sasl_type = cyrus
smtpd_sasl_path = /var/spool/postfix/private/saslauthd/mux
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
С master.cf таким образом:
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
Однако попытка аутентификации в этом постфиксе дает следующее сообщение об ошибке:
Jan 23 22:13:14 sasltest postfix/smtpd[1252]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory
Jan 23 22:13:14 sasltest postfix/smtpd[1252]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory
Jan 23 22:13:14 sasltest postfix/smtpd[1252]: warning: X[A.B.C.D]: SASL LOGIN
ошибка аутентификации: ошибка аутентификации
Между тем, мой saslauthd для ведения журнала отладки не выводит сообщения.
Я интерпретирую это как означающее, что libsasl2 пытается использовать sasldb auth, а не пытается поговорить с saslauthd. Что я не могу понять, как сообщить libsasl, что я хочу, чтобы он разговаривал с saslauthd.
Различные инструкции сообщают вам о необходимости создания файла /etc/sasl2/smtpd.conf или /etc/postfix/sasl/smtpd.conf. Я попытался создать эти файлы, содержащие:
pwcheck_method: saslauthd
mech_list: LOGIN PLAIN
Но безрезультатно.
Как мне указать libsasl использовать аутентификацию saslauthd?
(Я, конечно, могу создать / var / spool / postfix / etc / sasldb2, но это все равно не приведет к подключению к saslauthd.)
это сообщение списка рассылки cyrus-sasl в конце концов поставил меня на правильный путь.
Для потомков попытка выдать достаточно явный config. /etc/postfix/main.cf:
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
cyrus_sasl_config_path = /etc/postfix/sasl
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
Уловка в приведенном выше conf заключается в том, что postfix + libsasl2 делает это: $ {cyrus_sasl_config_path} / $ {smtpd_sasl_path} .conf
Как только мы зашли так далеко, в /etc/postfix/sasl/smtpd.conf мы можем сообщить libsasl, что мы хотим поговорить с saslauthd:
pwcheck_method: saslauthd
mech_list: LOGIN PLAIN
saslauthd_path: private/saslauthd/mux
Поскольку smtpd привязан к корневому каталогу, saslauthd_path относится к / var / spool / postfix. Я использую привязку, чтобы сделать / var / run / saslauthd приватным.