[Comm] Postfix + SMTP-AUTH + SASL + MySQL

Alexei Takaseev =?iso-8859-1?q?alexei_=CE=C1_taf=2Eru?=
Вс Окт 30 19:28:00 MSK 2005


On Sun, 30 Oct 2005 19:01:21 +0300
Eugene Prokopiev wrote:

> Здравствуйте!
> 
> Задача: настроить SMTP-авторизацию в Postfix, имена и пароли 
> пользователей уже хранятся в MySQL (открытым текстом):
> 
> mysql> select userid, passwd from dbmail_users;
> +--------------------------------+----------+
> | userid                         | passwd   |
> +--------------------------------+----------+
> | john                           | jpwd     |
> +--------------------------------+----------+
> 
> Имею установленные:
> 
> # rpm -qa | grep postfix (взят из бэкпортов)
> postfix-control-1.2-alt1
> postfix-2.2.4-alt0.M24.1
> postfix-html-2.2.4-alt0.M24.1
> postfix-mysql-2.2.4-alt0.M24.1
> postfix-tls-2.2.4-alt0.M24.1
> 
> # rpm -qa | grep sasl (сначала пытался взять из бекпортов, но там
> # alt0, 
> т.е. версия младше - как это получилось?)
> libsasl2-2.1.19-alt1
> libsasl2-plugin-sql-2.1.19-alt1
> cyrus-sasl2-2.1.19-alt1
> cyrus-sasl2-docs-2.1.19-alt1
> 
> Читаю /usr/share/doc/postfix-2.2.4/README.ALT-ru_RU.KOI8-R: "Вся 
> конфигурация SASL находится в /etc/postfix/sasl"
> 
> Однако:
> 
> # ls -l /etc/postfix/sasl
> ls: /etc/postfix/sasl: No such file or directory
> 
> Пытаюсь определить, где лежат конфиги, стандартым методом :)

postfix-2.2.x относить к стандартным в ALM24 сомнительно.

> # rpm -qli `rpm -qa | grep sasl` | grep /etc
> /etc/sasl2
> /etc/sasl2/sasldb2
> /etc/rc.d/init.d/saslauthd
> /etc/sasl2/saslauthd.conf
> /etc/sasl2/saslpasswd.conf
> /etc/sysconfig/saslauthd
> 
> Cмотрю, что там уже наконфигурено:
> 
> # cat /etc/sasl2/saslpasswd.conf
> pwcheck_method: sasldb
> 
> # cat /etc/sasl2/saslauthd.conf | grep -v "^[#]"
> ldap_servers: ldap://10.1.1.15/ ldap://10.1.1.25/
> ldap_bind_dn: cn=operator,ou=Profile,o=foo.com
> ldap_bind_pw: secret
> ldap_version: 3
> ldap_timeout: 5
> ldap_time_limit: 5
> 
> Прихожу в некоторое замешательство от отсутствия упоминаний об sql и
> иду  в search.altlinux.ru, где упоминается совсем другой файл 
> /usr/lib/sasl2/smtpd.conf. О lib говорит и google в ответ на "postfix 
> sasl mysql". Предполагаю, что и в ALT когда-то следовали общим
> правилам,  а затем решили поместить этот файл в более приличное место.

Вообще-то ноги у этого поведения растут от Debian.

> Создаю этот файл и вписываю в него:
> 
> pwcheck_method: auxprop
> auxprop_plugin: sql
> mech_list: plain login
> sql_engine: mysql
> sql_hostnames: localhost
> sql_user: dbmail
> sql_passwd: dbmailpwd
> sql_database: dbmail
> sql_select: select passwd from dbmail_users where userid='%u'
> 
> После запуска сервиса saslauthd приходит мысль протестировать 

saslauthd не умеет работать с SQL. Для этого существует
libsasl2-plugin-sql

Конфиги от реально работающей системы ALM24:
postfix-2.0.20-alt1.3
postfix-pgsql-2.0.20-alt1.3
postfix-pcre-2.0.20-alt1.3
libsasl2-2.1.19-alt1
libsasl2-plugin-sql-2.1.19-alt1

 username |  password  | domain_name | active
----------+------------+-------------+--------
 user1    | XXXXXXXXXX | mydomain.ru |      1

/etc/postfix/sasl/smtpd.conf:
auxprop_plugin: sql

sql_engine: pgsql
sql_user: mail
sql_passwd: secret
sql_hostnames: localhost
sql_database: mail

sql_statement: select password from mailusers where username = '%u' and
domain_name = '%r' and active = 1


Вот, собственно, и вся настройка.



Подробная информация о списке рассылки community