def smtp_tls_session(host, port='25', fromaddr='*****@*****.**', to='*****@*****.**'): print "smtp tls test client" sock = coro.make_socket(socket.AF_INET, socket.SOCK_STREAM) print "host=%r port=%r" % (host, port) port = string.atoi(port) sock.connect((host, port)) print sock.recv(8192) sock.send('EHLO fang\r\n') print sock.recv(8192) sock.send('STARTTLS\r\n') print sock.recv(8192) ctx = coro_ssl.ssl_ctx(sslip.SSLV2_CLIENT_METHOD) client = coro_ssl.ssl_sock(ctx) client.create(sock=sock) # client.ssl.set_connect_state() try: coro.print_stderr('calling ssl_connect()\n') client.ssl_connect() coro.print_stderr('ssl_connect done()\n') except sslip.Error: coro.print_stderr("TLS negotiation failed\n") coro.print_stderr("hit <return> to attempt fallback\n") client.shutdown() raw_input() else: sock = client print "ssl_connect() finished" sock.send('HELP\r\n') print sock.recv(8192) sock.send('MAIL FROM:<' + fromaddr + '>\r\n') print sock.recv(8192) sock.send('RCPT TO:<' + to + '>\r\n') print sock.recv(8192) sock.send('DATA\r\n') print sock.recv(8192) sock.send( 'From: ' + fromaddr + '\r\nSubject: testing STARTTLS\r\n\r\nHi there. I was encrypted\r\n.\r\n' ) print sock.recv(8192) sock.send('QUIT\r\n') print sock.recv(8192) sock.close() coro._exit = 1
def smtp_tls_session ( host, port='25', fromaddr='*****@*****.**', to='*****@*****.**' ): print "smtp tls test client" sock = coro.make_socket (socket.AF_INET, socket.SOCK_STREAM) print "host=%r port=%r" % (host, port) port = string.atoi(port) sock.connect ((host, port)) print sock.recv (8192) sock.send ('EHLO fang\r\n') print sock.recv (8192) sock.send ('STARTTLS\r\n') print sock.recv (8192) ctx = coro_ssl.ssl_ctx (sslip.SSLV2_CLIENT_METHOD) client = coro_ssl.ssl_sock (ctx) client.create (sock=sock) # client.ssl.set_connect_state() try: coro.print_stderr ('calling ssl_connect()\n') client.ssl_connect() coro.print_stderr ('ssl_connect done()\n') except sslip.Error: coro.print_stderr ("TLS negotiation failed\n") coro.print_stderr ("hit <return> to attempt fallback\n") client.shutdown() raw_input() else: sock = client print "ssl_connect() finished" sock.send ('HELP\r\n') print sock.recv (8192) sock.send ('MAIL FROM:<' + fromaddr + '>\r\n') print sock.recv (8192) sock.send ('RCPT TO:<' + to + '>\r\n') print sock.recv (8192) sock.send ('DATA\r\n') print sock.recv (8192) sock.send ('From: ' + fromaddr + '\r\nSubject: testing STARTTLS\r\n\r\nHi there. I was encrypted\r\n.\r\n') print sock.recv (8192) sock.send ('QUIT\r\n') print sock.recv (8192) sock.close() coro._exit = 1
def smtp_tls_server_session (conn): oconn = conn conn.send ('200 howdy\r\n') while True: cmd = conn.recv (1024) coro.print_stderr ('got %r\r\n' % (cmd,)) cmd = cmd.lower() if cmd.startswith ('starttls'): conn.send ('220 ready for tls\r\n') ctx = coro_ssl.ssl_ctx (sslip.SSLV23_SERVER_METHOD) try: sconn = coro_ssl.ssl_sock (ctx) sconn.create (sock=conn) sconn.ssl_accept() conn = sconn except sslip.Error: # conn.send ('454 TLS negotiation failed\r\n') pass elif cmd.startswith ('data'): conn.send ('354 go ahead\r\n') while True: block = conn.recv (8192) if block.endswith ('\r\n.\r\n'): break conn.send ('250 Ok.\r\n') elif cmd.startswith ('quit'): conn.send ('221 byte\r\n') conn.close() break elif cmd.startswith ('ehlo'): conn.send ( '250-loki.ironport.com\r\n' '250-PIPELINING\r\n' '250-SIZE 10240000\r\n' '250-STARTTLS\r\n' '250 8BITMIME\r\n' ) else: conn.send ('200 ok\r\n')
def smtp_tls_server_session (conn): oconn = conn conn.send ('200 howdy\r\n') while 1: cmd = conn.recv (1024) coro.print_stderr ('got %r\r\n' % (cmd,)) cmd = cmd.lower() if cmd.startswith ('starttls'): conn.send ('220 ready for tls\r\n') ctx = coro_ssl.ssl_ctx (sslip.SSLV23_SERVER_METHOD) try: sconn = coro_ssl.ssl_sock (ctx) sconn.create (sock=conn) sconn.ssl_accept() conn = sconn except sslip.Error: #conn.send ('454 TLS negotiation failed\r\n') pass elif cmd.startswith ('data'): conn.send ('354 go ahead\r\n') while 1: block = conn.recv (8192) if block.endswith ('\r\n.\r\n'): break conn.send ('250 Ok.\r\n') elif cmd.startswith ('quit'): conn.send ('221 byte\r\n') conn.close() break elif cmd.startswith ('ehlo'): conn.send ( '250-loki.ironport.com\r\n' '250-PIPELINING\r\n' '250-SIZE 10240000\r\n' '250-STARTTLS\r\n' '250 8BITMIME\r\n' ) else: conn.send ('200 ok\r\n')
def init_ssl(protocol=sslip.SSLV23_SERVER_METHOD): global ssl_ctx if not ssl_ctx: ssl_ctx = coro_ssl.ssl_ctx(protocol) ssl_ctx.set_ciphers ('RC4-SHA:RC4-MD5:ALL')
def init_ssl(protocol=sslip.SSLV23_SERVER_METHOD): global ssl_ctx if not ssl_ctx: ssl_ctx = coro_ssl.ssl_ctx(protocol) ssl_ctx.set_ciphers('RC4-SHA:RC4-MD5:ALL')