pop3proxy

B

BrokenClock

Hello every body,

Here is a python newbie! I've choose it to make a pop3 proxy - I want to
filter content between a pop3 client and a pop3 server, and I have no
control on the server...
First, I wanted to do an non-filtering, just logging, mono-thread proxy
to make some test..
Based on the RFC 1939 (http://www.faqs.org/rfcs/rfc1939.html) (in
particular the item 5), I was expecting some output, but did not get it...
In fact, I expected to see the message, but I did not see it... only the
command to retrieve it. On the other hand, the message is well receipt
in my mail client.
An other point is that all this seems to work well with short messages,
but difficulties appear when messages go bigger. I think it is due to
the parameter of recv, but I don't know how to set it.
So here are my two questions:
1-why do not I see the message in my output, and how could I do to see
and handle it?
2-how should I set the parameter of recv to handle big messages?

Any help would we very appreciate.

Cheers,

Brokenclock

Here is the code:
import socket

LOCALHOST = '192.168.31.202' # This is me
REMOTEHOST = 'pop.fr.oleane.com' # The remote host
PORT = 110 # pop3 port
while 1:
SocketServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
SocketServer.bind((LOCALHOST, PORT))
SocketServer.listen(1)
Connexion2Client, ClientAddress = SocketServer.accept()
print '#', ClientAddress,' connected'
ClientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ClientSocket.connect((REMOTEHOST, PORT))
print '#', REMOTEHOST, ' connected'
while 1:
DataFromServer = ClientSocket.recv(5896230)
print REMOTEHOST,'> ',DataFromServer
Connexion2Client.send(DataFromServer)
DataFromClient = Connexion2Client.recv(5896230)
print ClientAddress,'> ',DataFromClient
if DataFromClient==" QUIT": print 'QUIT received from client'
ClientSocket.send(DataFromClient)
if not DataFromClient: break
ClientSocket.close()
Connexion2Client.close()


Here the output:
C:/Python24/pythonw.exe -u "C:/Python24/Scripts/pop3proxy3.py"
# ('192.168.31.202', 2345) connected
# pop.fr.oleane.com connected
pop.fr.oleane.com > +OK pop1.clb.oleane.net POP3 Oleane Mail Server Ready

('192.168.31.202', 2345) > CAPA

pop.fr.oleane.com > +OK Capability list follows
TOP
USER
RESP-CODES
AUTH-RESP-CODE
PIPELINING
UIDL
IMPLEMENTATION omail-1.3.1
..

('192.168.31.202', 2345) > USER (e-mail address removed)

pop.fr.oleane.com > +OK User name accepted, password please
Username

('192.168.31.202', 2345) > PASS password

pop.fr.oleane.com > +OK 1 messages (1631 octets)

('192.168.31.202', 2345) > STAT

pop.fr.oleane.com > +OK 1 1631

('192.168.31.202', 2345) > LIST

pop.fr.oleane.com > +OK 1 messages (1631 octets)
1 1631
..

('192.168.31.202', 2345) > UIDL

pop.fr.oleane.com > +OK Unique-ID listing follows
1 42762947a48018100000065f
..

('192.168.31.202', 2345) > RETR 1

pop.fr.oleane.com > +OK pop1.clb.oleane.net chpounz the connection.
Have a nice day!

('192.168.31.202', 2345) >
 
J

Just

BrokenClock said:
Here is a python newbie! I've choose it to make a pop3 proxy - I want to
filter content between a pop3 client and a pop3 server, and I have no
control on the server...
First, I wanted to do an non-filtering, just logging, mono-thread proxy
to make some test..

Not directly helpong with your problem, but perhaps some example code
helps: the spambayes project contains a working pop3 proxy.

Just
 
B

BrokenClock

Thank you! At a first glance, it seems to be very similar to what I
need. More to come when I go deeper...

Just a écrit :
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top