1 package org.ibex.mail.protocol;
2 import org.ibex.util.*;
4 import org.ibex.mail.*;
5 import org.ibex.mail.target.*;
6 import org.ibex.jinetd.*;
11 public interface POP3 {
13 public static interface Server {
14 public void userpass(String user, String pass);
15 public void apop(String user, String digest);
16 public Stream top(int m, int maxlines);
17 public Stream retr(int m);
18 public long stat(); // top 32 bits is number of messages, bottom 32 is total size
19 public long[] list(); // top 32 bits is message number, bottom 32 is size
20 public long list(int m);
21 public void dele(int m);
22 public void noop(int m);
23 public void rset(int m);
24 public String uidl(int m);
25 public String[] uidl(); // FIXME, also needs message number
28 public static class Listener implements Worker {
30 public void handleRequest(Connection conn) {
31 conn.setTimeout(30 * 60 * 1000);
32 conn.println("+OK " + conn.vhost + " [" + POP3.class.getName() + "] ready");
35 for(String line = conn.readln(); line != null; line = conn.readln()) {
36 StringTokenizer st = new StringTokenizer(line, " ");
37 String command = st.nextToken().toUpperCase();
38 if (command.equals("USER")) {
39 } else if (command.equals("PASS")) {
40 } else if (command.equals("QUIT")) {