開発日記
for 1.4.x
for 1.4.x
- APOP before SMTP (APOP認証を可能に/APOPをデフォルトに/STATおよびQUITを発行する)
- cvs:mail.php (v1.4:1.2, 1.3)
- pop_before_smtp() を書き直しました。
- 今までのAPOPの実装は、存在しない変数 $buf を参照しているため、動作しないことがわかりました。恐らくは、ソース整理の途中で動かない状態になってしまったのではないかと思います。
- デフォルトで(パスワードを平文で流さないので)より安全なAPOP認証を試みます。ただし、グローバル変数 $pop_auth_use_apop が FALSE であるか、サーバーが(APOP認証に必要な)チャレンジ文字列を投げて来ないならば、必ずPOP認証を試みます。
- APOP/POPどちらに判定されたかは、認証失敗時の返り値を見ることで判断できます。
- 将来の布石: グローバル変数の中にメールサーバーのアカウント、パスワード、サーバー名などを収めてしまうというのはとても怖い状態なので、関数の引数からこれらを与えられる様にしました。ただし、現状はグローバル変数があればそれぞれの引数は無視されます。
- テストはこのファイル単体で行っています。基本的な動作は元の実装のままです。
- cvs:mail.php (v1.4:1.4)
- グローバル変数 $pop_auth_use_apop が TRUE であれば必ずAPOPで、FALSE であれば必ずPOPで、未設定であれば自動(APOP対応サーバーにはAPOP、そうでなければPOP)で認証を行う様に修正しました。
- POP認証(パスワードがそのままネットワークを流れてしまいます)を絶対に避けたい方や、(サーバー側のPOP before SMTPの仕様に合わせる、といった都合により)POPを強制したい方向けのオプション(= 選択肢)です。
- cvs:mail.php (v1.4:1.5)
- サーバー資源の早期解放(= 負荷集中の防止)を期待すべく、QUITコマンドのやりとりを省略せずに行います。
- cvs:mail.php (v1.4:1.6,1.7)
- 今まではサーバーからの返答が "+OK "(プラス、O、K、半角スペース) で始まるかどうかをチェックしていましたが、半角スペースが含まれない可能性があるため "+OK"(プラス、O、K) までをチェックする様に訂正しました。
- POP before SMTP の(サーバー側の)動作を確実にするため、認証後にSTATコマンドを発行する様に修正しました。この操作が無くとも (POP before SMTPが) 動く環境なのであれば、お好みでコメントアウトして下さい。
- POP/APOPなどについて詳しくは osdev-j:POP をどうぞ。
Last-modified: 2004-07-18 (日) 00:02:01