[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[postfix-jp:01734] Re: postfix + smtp auth でpwcheckが使えません之二。



On Thu, 20 Jun 2002 16:14:47 +0900
"XIE from LAB" <xie@xxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:

> sasl側の設定は以下のようになってますが、netscape を使って送信したとこ
> ろ、固まる一方だ。皆さんはそういう問題に遭ったことあるでしょうか
>  /usr/local/lib/sasl/smtpd.conf:
>           pwcheck_method: pwcheck
> 
pwcheckを参照するようになってますね。

On Tue, 18 Jun 2002 17:50:22 +0900
"XIE from LAB" <xie@xxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:

> 送信したところ maillogで監視して 次のエラーが出ました
> Jun 11 19:44:04 host postfix/smtpd[12147]: warning: SASL authentication
> problem: unrecognized plaintext verifier pwcheck
> Jun 11 19:44:04 host postfix/smtpd[12147]: warning: domain: SASL PLAIN
> authentication failed
>
エラーメッセージで「pwcheckなんて確認法は知らない」と
言っているくらいですから、調べてもらうまでもなかったですね。
そこで次に、手元のcyrus-saslのソースで
"unrecognized plaintext verifier"をさがしてみました。

cyrus-sasl-1.5.27/lib/server.c

1351 static int _sasl_checkpass(sasl_conn_t *conn,
1352                            const char *mech, const char *service,
1353                            const char *user, const char *pass,
1354                            const char **errstr)
1355 {
1356     sasl_server_conn_t *s_conn = (sasl_server_conn_t *) conn;
1357     int result = SASL_NOMECH;
1358     struct sasl_verify_password_s *v;
1359
1360     if (mech == NULL) mech = DEFAULT_PLAIN_MECHANISM;
1361     for (v = _sasl_verify_password; v->name; v++) {
1362         if (is_mech(mech, v->name)) {
1363             result = v->verify(conn, user, pass,
1364                                service, s_conn->user_realm, errstr);
1365             break;
1366         }
1367     }
1368
1369     if (result == SASL_NOMECH) {
1370         /* no mechanism available ?!? */
1371         _sasl_log(conn, SASL_LOG_ERR, NULL, 0, 0,
1372                   "unrecognized plaintext verifier %s", mech);
1373     }
1374
1375     return result;
1376 }

_sasl_verify_passwordを順に手繰ってpwcheckのエントリを探しいって、
何故か見つからなくてエラーになっているようです。
_sasl_verify_passwordの内容は次のようになっていました。

cyrus-sasl-1.5.27/lib/checkpw.c

1787 struct sasl_verify_password_s _sasl_verify_password[] = {
1788     { "sasldb", &sasldb_verify_password },
1789 #ifdef HAVE_KRB
1790     { "kerberos_v4", &kerberos_verify_password },
1791 #endif
1792 #ifdef HAVE_GSSAPI_H
1793     { "kerberos_v5", &kerberos5_verify_password },
1794 #endif
1795 #ifdef HAVE_GETSPNAM
1796     { "shadow", &shadow_verify_password },
1797 #endif
1798 #ifdef HAVE_SIA
1799     { "sia", &sia_verify_password },
1800 #endif
1801 #ifdef HAVE_GETPWNAM
1802     { "passwd", &passwd_verify_password },
1803 #endif
1804 #ifdef HAVE_PAM
1805     { "pam", &pam_verify_password },
1806 #endif
1807 #ifdef HAVE_PWCHECK
1808     { "pwcheck", &pwcheck_verify_password },
1809 #endif
1810 #ifdef HAVE_MYSQL
1811     { "mysql", &mysql_verify_password },
1812 #endif
1813 #ifdef HAVE_LDAP
1814     { "ldap", &ldap_verify_password },
1815 #endif
1816 #ifdef HAVE_SASLAUTHD
1817     { "saslauthd", &saslauthd_verify_password },
1818 #endif
1819     { NULL, NULL }
1820 };

HAVE_PWCHECKがdefineされていないのが原因のようです。
試しに--with-pwcheckを付けないでconfigureしたライブラリで
テストしてみたところ
warning: SASL authentication problem: unrecognized plaintext verifier pwcheck
warning: localhost[127.0.0.1]: SASL PLAIN authentication failed
と最初のメールと同じエラーになりました。

メールの冒頭では--with-pwcheckつきでconfigureされていたので
この結果はちょっと変なのですが、
一応 config.hでHAVE_PWCHECKが定義されているか確認してみてはどうでしょう。

# pwcheck以外の方法でPLAIN認証する手もありますし、
# TLS通さないでPLAINなんて無謀という話もあるでしょうが、
# それは次の段階として...

Follow-Ups
[postfix-jp:01752] Re: postfix + smtp auth でpwcheckが使えません之二。, XIE from LAB
References
[postfix-jp:01730] postfix + smtp auth でpwcheckが使えません之二。, XIE from LAB

[検索ページ] [Postfix-JP ML Home]