saslauthdでplainとloginを有効にしたいのですが上手くできません。

http://www3.irishblue.net/hatena/command.txtの通り作業しました。
最初にBerkeleyDB.4.7をインストールしているのはcyrus-saslのconfigure時に、
configure: WARNING: Disabling SASL authentication database support
という警告が出るためです。

一部冗長的な部分もありますが、念のためと考えて実行しました。
解決方法をご教示ください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/06/03 22:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:JULY No.2

回答回数966ベストアンサー獲得回数247

ポイント35pt

PostfixによるSMTPサーバの構築(CentOS標準版編)

ちょっと、勘違いがあるように思えます。

SMTP AUTH の認証として、SASL の PLAIN、LOGIN メカニズムを提供したい、というのが目的ですよね。それが、smtp.conf で記述している内容ですよね。

# vi /etc/sasl2/smtpd.conf

pwcheck_method: saslauthd

mech_list: plain login

これは、SMTP AUTH で使う SASL の認証メカニズムとして、plain と login を使い、実際に送られてきたユーザ名、パスワードのチェックを saslauthd にやらせます、ということになります。

で、saslauthd の役割は、実際にユーザ名とパスワードが一致しているかをチェックすることで、saslauthd が何でチェックするか、というのが選べて、

# saslauthd -v

saslauthd 2.1.23

authentication mechanisms: getpwent kerberos5 rimap shadow

「getpwent」「kerberos5」「rimap」「shadow」の 4 種類が使えますよ、と言っています。

つまり、SMTP AUTH の中で「提供する」メカニズムと、そのバックエンドにある saslauthd が「利用する」メカニズムが、ごちゃ混ぜになっているような気がします。

SASL として提供するメカニズムとしては、一番シンプルな plain や login がありますが、

saslauthd(8): sasl authentication server - Linux man page

上記の saslauthd の manpage には saslauthd が利用する認証メカニズム(上記ページの Authentication Mechanisms)には、

  • dce (AIX のみ)
  • getpwent(全部ラットフォーム)
  • kerberos4 (全部ラットフォーム)
  • kerberos5 (全部ラットフォーム)
  • pam (Linux、Solaris)
  • rimap(全部ラットフォーム)
  • shadow(AIX, Irix, Linux, Solaris)

があります。ここには、plain や login は出てきません。saslauthd 自体がどうやってパスワードを確認するかは、SASL のメカニズムを使う訳ではありません。

この中で一番汎用的なのが pam で、saslauthd が pam を使えるようになっていれば、pam の設定次第で、実際には OS の /etc/passwd & /etc/shadow を使ったり、LDAP を使ったり、ということが可能ですが、残念ながら pam が使えないようですので、OS のアカウントを saslauthd に使わせるには、shadow になると思います。

id:yasunorin

フルインストールしてみました。結果は同じでした。JULYさんがおっしゃる通りで勘違いしまくりでした。

# saslauthd -v

saslauthd 2.1.22

authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

こんな感じになりました!ご回答ありがとうございます。

2009/05/29 20:09:00

その他の回答1件)

id:toohigh No.1

回答回数291ベストアンサー獲得回数37

ポイント35pt

手元で PLAIN/LOGIN が使える saslauthd を調べてみると -a pam で起動されていました。

質問者様の環境でしたら、saslauthd -a shadow で起動してみてはいかがでしょうか。

または、pam_appl.h のような pam 系の開発ライブラリを導入した状態で saslauthd を

configure / make し直してみると -a pam による PLAIN/LOGIN が使えるようになるかもしれません。

id:yasunorin

ありがとうございます。-a pam はunknown authentication mechanism、-a shadowはエラー出ませんでしたがsaslauthd -vでloginやplainは表示されませんでした。何か足りないのかな?ということで、テスト機にOSをフルインストールして試してみます。

2009/05/28 21:18:56
id:JULY No.2

回答回数966ベストアンサー獲得回数247ここでベストアンサー

ポイント35pt

PostfixによるSMTPサーバの構築(CentOS標準版編)

ちょっと、勘違いがあるように思えます。

SMTP AUTH の認証として、SASL の PLAIN、LOGIN メカニズムを提供したい、というのが目的ですよね。それが、smtp.conf で記述している内容ですよね。

# vi /etc/sasl2/smtpd.conf

pwcheck_method: saslauthd

mech_list: plain login

これは、SMTP AUTH で使う SASL の認証メカニズムとして、plain と login を使い、実際に送られてきたユーザ名、パスワードのチェックを saslauthd にやらせます、ということになります。

で、saslauthd の役割は、実際にユーザ名とパスワードが一致しているかをチェックすることで、saslauthd が何でチェックするか、というのが選べて、

# saslauthd -v

saslauthd 2.1.23

authentication mechanisms: getpwent kerberos5 rimap shadow

「getpwent」「kerberos5」「rimap」「shadow」の 4 種類が使えますよ、と言っています。

つまり、SMTP AUTH の中で「提供する」メカニズムと、そのバックエンドにある saslauthd が「利用する」メカニズムが、ごちゃ混ぜになっているような気がします。

SASL として提供するメカニズムとしては、一番シンプルな plain や login がありますが、

saslauthd(8): sasl authentication server - Linux man page

上記の saslauthd の manpage には saslauthd が利用する認証メカニズム(上記ページの Authentication Mechanisms)には、

  • dce (AIX のみ)
  • getpwent(全部ラットフォーム)
  • kerberos4 (全部ラットフォーム)
  • kerberos5 (全部ラットフォーム)
  • pam (Linux、Solaris)
  • rimap(全部ラットフォーム)
  • shadow(AIX, Irix, Linux, Solaris)

があります。ここには、plain や login は出てきません。saslauthd 自体がどうやってパスワードを確認するかは、SASL のメカニズムを使う訳ではありません。

この中で一番汎用的なのが pam で、saslauthd が pam を使えるようになっていれば、pam の設定次第で、実際には OS の /etc/passwd & /etc/shadow を使ったり、LDAP を使ったり、ということが可能ですが、残念ながら pam が使えないようですので、OS のアカウントを saslauthd に使わせるには、shadow になると思います。

id:yasunorin

フルインストールしてみました。結果は同じでした。JULYさんがおっしゃる通りで勘違いしまくりでした。

# saslauthd -v

saslauthd 2.1.22

authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

こんな感じになりました!ご回答ありがとうございます。

2009/05/29 20:09:00

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません