import java.io.*;
import java.net.*;

class POP3ServerVPOPConnectsTo extends Thread
{
 DataInputStream clientIS;
 PrintStream clientOS;
 Socket socket;
 static int NR_OF_MSG = 10; 
 
 POP3ServerVPOPConnectsTo(Socket soc) throws Exception
 {
	clientIS = new DataInputStream (soc.getInputStream());
	clientOS = new PrintStream (soc.getOutputStream());
	socket = soc;
 }
 
 public void run()
 {
    try {
 	System.out.println("req");
 	clientOS.println("+OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>");

 	// CAPA: http://www.ietf.org/rfc/rfc2449.txt
 	System.out.println(clientIS.readLine());
 	clientOS.println("-ERR comm");

	// user
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK");

	// pass
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK");

	// stat
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK "+NR_OF_MSG+" 1234");

	// noop
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK");

	// list
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK "+NR_OF_MSG+" messages (123 octets)");
 	for (int i=0; i<NR_OF_MSG; i++)
 		clientOS.println(NR_OF_MSG+" 123");
	clientOS.println("."); 		

	// noop
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK");

 	
	// UIDL: unique-id listing
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK");
 	for (int i=0; i<NR_OF_MSG; i++)
 		clientOS.println(NR_OF_MSG+" "+(long)(Math.random()*100000000000000000l));
 	clientOS.println(".");

	// noop
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK");

	
 	for (int i=0; i<NR_OF_MSG; i++)
 	{
		//TOP x 1
		System.out.println(clientIS.readLine());
		clientOS.println("+OK");
		clientOS.println("From: "+i+"\r\nTo: Menneisyys <a@b>\r\nDate: Fri, 13 Jan 2006 00:13:07 (GMT)\r\nSubject: "+i+"\r\n"+
			"\r\n\r\n"+i+"\r\n.");

	
		//RETR x
		System.out.println(clientIS.readLine());
		clientOS.println("+OK");
		clientOS.println("From: "+i+"\r\nTo: Menneisyys <a@b>\r\nDate: Fri, 13 Jan 2006 00:13:07 (GMT)\r\nSubject: "+i+"\r\n"+
			"\r\n\r\n"+i+"\r\n.");
	}
	// quit
	System.out.println(clientIS.readLine());
	socket.close();	
	
   }catch(Exception e) {e.printStackTrace();}
 }

 public static void main(java.lang.String[] args) throws Exception
 {
  	ServerSocket ss = new ServerSocket (5671);
  	while(true)
		new POP3ServerVPOPConnectsTo(ss.accept()).start();
 }
}

