カテゴリー : Postfix

このカテゴリーの登録数:1件 表示 : 1 - 1 / 1

May 31, 2007

Postfix + sasl + MySQL

ポスト @ 22:57:53 | Postfix

Debian上でpostfixでsaslを設定

目標 saslauthd を使わないで管理 BarklayDBはsaslpasswd2 -c ユーザID で /etc/sasldb2 が出来上がる chown postfix:sasl /etc/sasldb2 ln /etc/sasldb2 /var/spool/postfix/etc/sasldb2 でpostfix のchroot で動くディレクトリにハードリンクしておく

/etc/postfix/sasl ディレクトリにsmtpd.conf pwcheck_method: auxprop を記述することで上記BarklayDBで管理したsaslが可能になる。

さてここからMySQLの管理にするための設定 /etc/postfix/sasl ディレクトリにsmtpd.conf pwcheck_method: auxprop pwcheck_method: auxprop auxprop_plugin: sql allowanonymouslogin: no allowplaintext: yes mech_list: cram-md5 plain login sql_engine: mysql sql_user: sqluser ←任意 sql_passwd: saslsqlpass ←任意 sql_database: sasldb ←任意 sql_hostnames: localhost ←問題はココでした sql_select: SELECT %p FROM user_table WHERE username = '%u' and realm = '%r' sql_verbose: yes

と記述 データベースは mysqladmin create sasldb データベース作成 mysql sasldbとしてデータベースクライアント起動 CREATE TABLE user_table ( No int(11) NOT NULL auto_increment, username varchar(128) NOT NULL, realm varchar(128) NOT NULL, userPassword varchar(128) default NULL, cmusaslsecretPLAIN varchar(128) default NULL, cmusaslsecretCRAM-MD5 varchar(128) default NULL, PRIMARY KEY (No) ) ENGINE=MyISAM;

insert user_table values (NULL,'testuser','testpass','testpass','testpass');

とすることでpostfixにアクセスしてauth cram-md5 などして ユーザ認証できるはずなんですが、落とし穴がありました。 /etc/hosts には localhost があってきちんと認識してます。 でも、postfixのchroot環境ではこの限りでは無かったわけで warning: SASL authentication failure: no secret in database とmail.warn に記録されてます。 /var/spool/postfix/etc/hosts にもlocalhostは記述していたのですが、やはりうまくいきませんでした。 結局smtpd.confの記述を sql_hostnames: localhost ↓ sql_hostnames: 127.0.0.1 とすることで解決

これを見つける結果につながったのはsmtpd.conf に log_level: 5 とした時/var/log/auth.log に sql plugin try and connect to a host sql plugin trying to open db 'sasldb' on host 'localhost' sql plugin could not connect to host localhost sql plugin couldn't connect to any host と出てきたからでした。