Thank you for pointing out the possibility of TCP segmenting, which may cause problems to dataReceived.
Regarding performance, I observed the core modules runs faster than Twisted when running the programs. I also briefly did some measurements and here are the results:
Using core modules:
start server (no net): 0.6040 sec
send mails (smtp): 1.5585 sec
view mails (pop3): 0.7506 sec
delete mails (pop3): 0.5159 sec
stop server (telnet): 0.5063 sec
start server (no net): 0.6668 sec
send mails (smtp): 2.4919 sec
view mails (pop3): 1.4418 sec
delete mails (pop3): 1.2992 sec
stop server (telnet): 2.1045 sec
(Windows XP, Python 2.4.3, Twisted 2.4.0)
These numbers are the average of 10 runs, and the mail server is run in localhost. While the measurements are by no means vigorous, they basically agree with the observations. Of course, the differences may not be significant in real uses when the network delay counts for majority of the execution time.