From: will@... Date: 2003-12-24T12:53:18+09:00 Subject: [PATCH] STARTTLS support for Net::SMTP --=-=-= Hello folks, I'm contributing the following file, smtps.rb, to Ruby in hopes that it will be added to the standard distribution. Net::SMTPS is a simple extention of Net::SMTP that executes the STARTTLS command at the start of an SMTP session, and replaces the plaintext Net::InternetMessageIO with an encrypted Net::SSLIO connection. Thanks, Will -- http://glozer.net --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=smtps.rb Content-Transfer-Encoding: base64 Content-Description: smtps.rb PWJlZ2luCj0gJFJDU2ZpbGUkIC0tIFNUQVJUVExTIGVuaGFuY2VtZW50IGZvciBOZXQ6OlNNVFAu Cgo9IEluZm8KICBDb3B5cmlnaHQgKEMpIDIwMDMgV2lsbCBHbG96ZXIgPHdpbGxAZ2xvemVyLm5l dD4KICBBbGwgcmlnaHRzIHJlc2VydmVkLgoKPSBMaWNlbmNlCiAgVGhpcyBwcm9ncmFtIGlzIGxp Y2VuY2VkIHVuZGVyIHRoZSBzYW1lIGxpY2VuY2UgYXMgUnVieS4KICAoU2VlIHRoZSBmaWxlICdM SUNFTkNFJy4pCgo9IFZlcnNpb24KICAkSWQkCgo9PSBjbGFzcyBOZXQ6OlNNVFBTCgpTdWJjbGFz cyBvZiBOZXQ6OlNNVFAgdGhhdCBjYW4gZXhlY3V0ZSB0aGUgU1RBUlRUTFMgY29tbWFuZCBmb3Ig c2VjdXJlIGVtYWlsLgoKPWVuZAoKcmVxdWlyZSAnbmV0L3Byb3RvY29scycKcmVxdWlyZSAnbmV0 L3NtdHAnCgptb2R1bGUgTmV0CiAgY2xhc3MgU01UUFMgPCBTTVRQCiAgICBkZWYgaW5pdGlhbGl6 ZShhZGRyZXNzLCBwb3J0ID0gbmlsLCBzdGFydHRscyA9IHRydWUpCiAgICAgIEBzdGFydHRscyA9 IHN0YXJ0dGxzCiAgICAgIHN1cGVyKGFkZHJlc3MsIHBvcnQpCiAgICBlbmQKCiAgICBkZWYgU01U UFMuc3RhcnQoYWRkcmVzcywgcG9ydCA9IG5pbCwgaGVsbyA9ICdsb2NhbGhvc3QubG9jYWxkb21h aW4nLAogICAgICAgICAgICAgICAgICAgIHVzZXIgPSBuaWwsIHNlY3JldCA9IG5pbCwgYXV0aHR5 cGUgPSBuaWwsIHN0YXJ0dGxzID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAmYmxvY2spCiAg ICAgIG5ldyhhZGRyZXNzLCBwb3J0LCBzdGFydHRscykuc3RhcnQoaGVsbywgdXNlciwgc2VjcmV0 LCBhdXRodHlwZSwgJmJsb2NrKQogICAgZW5kCgogICAgZGVmIGRvX3N0YXJ0KCBoZWxvZG9tYWlu LCB1c2VyLCBzZWNyZXQsIGF1dGh0eXBlICkKICAgICAgcmFpc2UgSU9FcnJvciwgJ1NNVFAgc2Vz c2lvbiBhbHJlYWR5IHN0YXJ0ZWQnIGlmIEBzdGFydGVkCiAgICAgIGNoZWNrX2F1dGhfYXJncyB1 c2VyLCBzZWNyZXQsIGF1dGh0eXBlIGlmIHVzZXIgb3Igc2VjcmV0CgogICAgICBpb19jbGFzcyA9 IEBzdGFydHRscyA/IE5ldDo6U1NMSU8gOiBOZXQ6OkludGVybmV0TWVzc2FnZUlPCiAgICAgIEBz b2NrZXQgPSBpb19jbGFzcy5vcGVuKEBhZGRyZXNzLCBAcG9ydCwgQG9wZW5fdGltZW91dCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlYWRfdGltZW91dCwgQGRlYnVnX291dHB1dCkK ICAgICAgCiAgICAgIGNoZWNrX3Jlc3BvbnNlKGNyaXRpY2FsIHsgcmVjdl9yZXNwb25zZSgpIH0p CgogICAgICBpZiBAc3RhcnR0bHMKICAgICAgICBzdGFydHRscygpCiAgICAgICAgQHNvY2tldC5z c2xfY29ubmVjdCgpCiAgICAgIGVuZAogICAgICAKICAgICAgYmVnaW4KICAgICAgICBpZiBAZXNt dHAKICAgICAgICAgIGVobG8gaGVsb2RvbWFpbgogICAgICAgIGVsc2UKICAgICAgICAgIGhlbG8g aGVsb2RvbWFpbgogICAgICAgIGVuZAogICAgICByZXNjdWUgUHJvdG9jb2xFcnJvcgogICAgICAg IGlmIEBlc210cAogICAgICAgICAgQGVzbXRwID0gZmFsc2UKICAgICAgICAgIEBlcnJvcl9vY2N1 cmVkID0gZmFsc2UKICAgICAgICAgIHJldHJ5CiAgICAgICAgZW5kCiAgICAgICAgCiAgICAgICAg cmFpc2UKICAgICAgZW5kCgogICAgICBhdXRoZW50aWNhdGUgdXNlciwgc2VjcmV0LCBhdXRodHlw ZSBpZiB1c2VyCiAgICAgIEBzdGFydGVkID0gdHJ1ZQogICAgZW5zdXJlCiAgICAgIEBzb2NrZXQu Y2xvc2UgaWYgbm90IEBzdGFydGVkIGFuZCBAc29ja2V0IGFuZCBub3QgQHNvY2tldC5jbG9zZWQ/ CiAgICBlbmQKCiAgICBkZWYgc3RhcnR0bHMoKQogICAgICBnZXRvaygnU1RBUlRUTFMnKQogICAg ZW5kCiAgZW5kCmVuZAo= --=-=-=--