openssl拡張でimaps
popsができるんならimapsということでやってみた。環境は--with-openssl付きでbuildしたPHP5.1.4。
ぢょ〜@よくきたなです.
PHP が SSL stream に対応していたら POP3 over SSL はできます.
下記簡易的に書きます.$ php -r '
require_once "Net/POP3.php";
$obj = new Net_POP3;
var_dump( $obj->connect( "ssl://mail.example.com", 995));
var_dump( $obj->login( "user", "password"));
var_dump( $obj->numMsg());'
bool(true)
bool(true)
int(501)
<pre> <?php $sock = fsockopen("tls://imaps-server", 993, $errno, $errstr, 15); echo fread($sock,1024); $seq = 1; fwrite($sock, $seq++ . " capability\r\n"); echo fread($sock,1024); fwrite($sock, $seq++ . " LOGIN user password\r\n"); echo fread($sock,1024); fwrite($sock, $seq++ . " namespace\r\n"); echo fread($sock,1024); fwrite($sock, $seq++ . " examine inbox\r\n"); echo fread($sock,1024); fwrite($sock, $seq++ . " logout\r\n"); echo fread($sock,1024); ?> </pre>
な感じで、結果は
* OK [CAPABILITY IMAP4REV1 LOGIN-REFERRALS AUTH=PLAIN AUTH=LOGIN] imaps-server IMAP4rev1 2001.315rh at Thu, 10 Aug 2006 23:10:28 +0900 (JST) * CAPABILITY IMAP4REV1 IDLE NAMESPACE MAILBOX-REFERRALS SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND LOGIN-REFERRALS AUTH=PLAIN AUTH=LOGIN 1 OK CAPABILITY completed 2 OK [CAPABILITY IMAP4REV1 IDLE NAMESPACE MAILBOX-REFERRALS SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND] User user authenticated * NAMESPACE (("" "/")("#mhinbox" NIL)("#mh/" "/")) (("~" "/")) (("#shared/" "/")("#ftp/" "/")("#news." ".")("#public/" "/")) 3 OK NAMESPACE completed * 8 EXISTS * 0 RECENT * OK [UIDVALIDITY 1131553471] UID validity status * OK [UIDNEXT 8858] Predicted next UID * FLAGS (\Answered \Flagged \Deleted \Draft \Seen) * OK [PERMANENTFLAGS ()] Permanent flags * OK [UNSEEN 8] first unseen message in /var/spool/mail/user 4 OK [READ-ONLY] EXAMINE completed * BYE imaps-server IMAP4rev1 server terminating connection 5 OK LOGOUT completed
となった。まあ、openssl使ってIMAPコマンド叩いてるのと同じだわな。