バーチャルドメイン対応のメールサーバでMySQLを用いている場合、
Courier-IMAPのauthdaemon経由でCRAM-MD5による認証ができません。
おやじさまのサイトでは明言されていないのですが、
インターネット側からフルアクセスする場合にはTLS化しないとダメと書かれているので
逆に読むとCRAM-MD5はサポートされていないのかな?と読んだのですが・・・
MySQLを使ったバーチャルドメイン対応で、もしできないのであれば、
authdaemonやrimapで設定する
/usr/lib/sasl2/smtp.conf
のmech_listのmd5は要らないのでは無いでしょうか?
> バーチャルドメイン対応のメールサーバでMySQLを用いている場合、
> Courier-IMAPのauthdaemon経由でCRAM-MD5による認証ができません。
> おやじさまのサイトでは明言されていないのですが、
> インターネット側からフルアクセスする場合にはTLS化しないとダメと書かれているので
> 逆に読むとCRAM-MD5はサポートされていないのかな?と読んだのですが・・・
CRAM-MD5はサポートされていますよ。但し、おやじはパスワードも大事ですが中身のほうがもっと重要であると考えていますので、パスワードにCRAM-MD5使うぐらいならplaintext+SSL化と考えています。
下記みたいな話もありますし。
http://itpro.nikkeibp.co.jp/article/NEWS/20070419/268830/?ST=security
ところで、CRAM-MD5については最初から使う気がなかったので試験が甘かったようで、コンテンツにミスがあります。連休中に修正しておきます。
CRAM-MD5を使いたければ、以下のとおりにしてください。これでIMAPやSMTP-AUTHでCRAM-MD5を使えます。
1. PostfixAdminでパスワードをplaintextに変更してから登録しなおす。
postfixadmin/config.inc.phpで下記を修正してください。
#$CONF['encrypt'] = 'md5crypt';
$CONF['encrypt'] = 'cleartext';
2./etc/authlib/authmysqlrcでMYSQL_CLEAR_PWFIELDのみ設定する。
#MYSQL_CRYPT_PWFIELD crypt
#
#MYSQL_CRYPT_PWFIELD password
##NAME: MYSQL_CLEAR_PWFIELD:0
#
#
# MYSQL_CLEAR_PWFIELD clear
MYSQL_CLEAR_PWFIELD password
3. /etc/courier-imap/imapdでAUTH=CRAM-MD5を追加する。
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 IDLE"
> MySQLを使ったバーチャルドメイン対応で、もしできないのであれば、
> authdaemonやrimapで設定する
> /usr/lib/sasl2/smtp.conf
> のmech_listのmd5は要らないのでは無いでしょうか?
素早いレス本当にありがとうございます。
Postfix-jpのMLにて、SASL2でMySQLに認証しに行く場合、
MySQLのテーブルにMD5Cryptされたパスワードが入っているときは
SMTP-AuthのパスワードはPlainでないと動作しないとありました。
またおやじさまのコンテンツの
http://www.aconus.com/~oyaji/centos/smtp-mysql-centos.htm
10. 次に、PostfixAdminで管理する・・・・
のところにCourier-IMAPではcleartextは×となっていたので
(現在は更新されていますね。素早い対応ありがとうございます。)
> authdaemonやrimapで設定する
> /usr/lib/sasl2/smtp.conf
> のmech_listのmd5は要らないのでは無いでしょうか?
と書かせていただいたのです。(説明不十分で申し訳ありません)
技術的には非常に興味があるので、おやじさまのコンテンツ更新を楽しみにしています。
(私的にはMySQLにPlainで格納するのは抵抗がありますので、現状のままTLS下のPlain認証にしますが)
> Postfix-jpのMLにて、SASL2でMySQLに認証しに行く場合、
> MySQLのテーブルにMD5Cryptされたパスワードが入っているときは
> SMTP-AuthのパスワードはPlainでないと動作しないとありました。
この理由はご存知ですか?
MD5は非可逆、つまり元には戻せないハッシュ関数なので、今回の場合(CRAM)、サーバ側にplainテキストがないと仕組み上チェックできません。
クライアントがCRAM-MD5で認証したいといってきたときに、チャレンジ(毎回変わる文字列)を送ります。クライアントはそれを元にパスワードのMD5ハッシュ値を作成しサーバに送ってきます。サーバ側では、同じ文字列を使用して覚えているパスワードでMD5ハッシュ値を作成し、一致していれば元のパスワードは同じであるとして認証しています。
従って、生パスワードをサーバが持っていないと認証できません。
> 技術的には非常に興味があるので、おやじさまのコンテンツ更新を楽しみにしています。
> (私的にはMySQLにPlainで格納するのは抵抗がありますので、現状のままTLS下のPlain認証にしますが)
それがいいと思います。
> この理由はご存知ですか?
知りませんでした。勉強になります。<_o_>
こんにちは。F/Aと申します。
postfix + authdaemond 環境で SMTPAUTH を検証していますが、
MUAのリクエストするAUTHメソッドがPLAINの場合には、
authdaemondが使用されますが、CRAM-MD5をリクエストすると
authdaemondは使用されず強制的にsasldb2ファイルを参照しているような動作になります。
CentOS4と5のpostfix2.2/2.3で検証しています。
CRAM-MD5を使用するとauthdaemondのログすら残らないので、
強制的にpostfixがsasldb2を参照しているようにも見えますが、
おやじ様、keele様の環境では発生しなかったでしょうか?
こちらの環境依存かもしれないですので、もう少し調べてみる予定です。
> postfix + authdaemond 環境で SMTPAUTH を検証していますが、
> MUAのリクエストするAUTHメソッドがPLAINの場合には、
> authdaemondが使用されますが、CRAM-MD5をリクエストすると
> authdaemondは使用されず強制的にsasldb2ファイルを参照しているような動作になります。
>
> CentOS4と5のpostfix2.2/2.3で検証しています。
>
> CRAM-MD5を使用するとauthdaemondのログすら残らないので、
> 強制的にpostfixがsasldb2を参照しているようにも見えますが、
> おやじ様、keele様の環境では発生しなかったでしょうか?
またまた、SMTP-AUTHのテストがいい加減だったようで、おやじも確認しましたがご指摘のとおりで駄目ですね。。
これはsaslの仕様のようで、mech_listでcram-md5を指定し、SMTP-AUTHでcram-md5を認証しようとすると、pwcheck_methodの設定が無視されauxpropになってしまうので、SMTP-AUTHでcram-md5はバーチャルな環境では使用できません。
courier-imapは当然先のとおりで問題ありませんが、中途半端になるので、やはりSSLで対応するのがスジと思います。
コンテンツ修正しておきました。
> またまた、SMTP-AUTHのテストがいい加減だったようで、おやじも確認しましたがご指摘のとおりで駄目ですね。。
お疲れ様です。
やはりそうですか…ご確認ありがとうございます。
まぁ、STARTTLSがいいんでしょうけど、
ベリサイン等の正当な証明書を使用するか、クライアントにCA証明書を
インポートしないとメーラーで証明書警告が出るので、
結構使い難い状況もありますね。
うちではLDAPメインで検証中なので、結局CentOS5で、
pwcheck_method: auxprop
auxprop_plugin: ldapdb
という所に落ち着きそうです。
(もちろんLDAP上のパスワードはCLEARTEXTです)