import java.io.*;
import java.net.*;

class OutlookEmulator extends Thread
{
 DataInputStream clientIS;
 PrintStream clientOS;
 static int NR_OF_MSG = 1; 

 OutlookEmulator(Socket soc) throws Exception
 {
	clientIS = new DataInputStream (soc.getInputStream());
	clientOS = new PrintStream (soc.getOutputStream());
	//socketToClient = soc;
 }
 
 public void run()
 {
 try {

 	System.out.println("req");
 	clientOS.println("+OK POP3 server ready <1sad2@dbwc.mtewq.qw>");

	// 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 1 3200");
 	
	// UIDL: unique-id listing
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK");
 	clientOS.println("1 1messUIDLa1"+Math.random());
 	clientOS.println(".");
	

	//LIST
 	System.out.println(clientIS.readLine());
 	clientOS.println("+OK "+NR_OF_MSG+" messages (7992 octets)");
 	for (int i=0; i<NR_OF_MSG; i++)
 		clientOS.println(i+" 7992");
	clientOS.println("."); 		

	//RETR 1 
	System.out.println(clientIS.readLine());
	clientOS.println("+OK");

	DataInputStream inStr = new DataInputStream (new FileInputStream ("in.txt"));		
	String line ;
	while ((line =inStr.readLine())!=null) 
		clientOS.println(line);
	inStr.close();

 	while ((line = clientIS.readLine()) != null) 
	{
		System.out.println(line);
		clientOS.println("+OK");
	}
   }catch(Exception e) {e.printStackTrace();}
 }

 public static void main(java.lang.String[] args) throws Exception
 {
  	ServerSocket ss = new ServerSocket (5671);
  	while(true)
		new OutlookEmulator(ss.accept()).start();
 }
}
