Está en la página 1de 6

[Type text]

Mini Project Report on

“Intelligent Email Server System based on Java”


Gokul.S (1SI09CS028)




Prof.Kallinatha.H.D. B.E,M.Tech

(Associate professor)

Department of computer science & engineering

Siddaganga institute of technology, Tumkur-572103

[Type text]

Chapter Chapter title Page

[Type text]

1. Introduction

1.1 Motivation

In this project, we developed our own e-mail server software in Java. The first
motivation was that a Java server program can run on any operating system
supporting the Java Virtual Machine environment rather than being specific to one
operating system. Another motivation was the opportunity to learn a great deal
about e-mail protocols, particularly the widely utilized ones, by actually building my
own e-mail server software. It gave me not only a theoretical understanding of how
e-mail protocols and user account management systems work, but also allowed me
to move from theory into actual practice. In addition, the server can be extended in
future to other Transmission Control Protocol (TCP)-based server applications for
the convenience to other developers who may wish to use my work.

1.2 Objectives

Before undertaking this project, we first had to identify the functionality that must
be implemented in order to run our program on a personal computer. To accept
basic Simple Mail Transfer Protocol (SMTP) and Post Office Protocol (POP3) requests
from e-mail clients, we applied extensions of the TCP server working model to both
SMTP and POP3. And to aid management of the e-mail servers and user accounts, we
decided to focus on designing and developing basic user account management
functionalities first. We then added advanced functionalities later, such as more
sophisticated commands to manage servers and accounts. When it was completed,
we would compile all the sources into a JAR file so that all classes are ready for
future reuse. After completing the first stage of development, we will create a
graphical user interface for my server based on a basic version that allows the
administrator to manage servers and accounts systems without having to remember
and type commands into a command terminal.
[Type text]

2. Literature Survey

2.1 Background
In this project, we were required to research on literature related to e-mail protocol
specifications and detailed examples of TCP network implementations in Java before
we could iteratively practice designs and implementations for the e-mail server.
Further, other literature discusses the TCP network implementation in Java that
would help us to design and implement the e-mail protocols.

2.2 Email Protocol Literature

2.2.1 Simple Mail Transfer Protocol (SMTP)

SMTP is an e-mail protocol that enables an e-mail client to send an e-mail message to
an SMTP server. The user of the e-mail client does not require a user account and a
password registered on the SMTP server to send a message, but some advanced e-
mail server systems may require user authentication by accessing an SMTP server.
By default, TCP port 25 needs to be available to accept SMTP clients. However, some
SMTP servers open a different port number. One reason for this would be to prevent
massive spam e-mail traffic to the default port 25 of the SMTP server. SMTP is
supported by the proposed e-mail server software since this protocol is widely used
all over the world; almost all e-mail servers and clients accept SMTP for e-mail

2.2.2 Post Office Protocol 3 (POP3)

POP3 is also an e-mail protocol that enables an e-mail client to receive an e-mail
message from a POP3 server. The user of the e-mail client must have a user account
and a password registered on the POP3 server to access his/her e-mail box. By
default, TCP port 110 needs to be available to accept POP3 clients.
[Type text]

POP3 is also supported by the proposed e-mail server software since this protocol is
used globally and almost all e-mail servers and clients accept this protocol.

3.3 Java Literature

3.3.1 Design Patterns

Design patterns helped me to design and implement the proposed e-mail server
efficiently. These patterns were particularly useful for developing my e-mail server
software because the code organizations were complicated; however, I have to
provide extensions for future developments. From the literature that I referenced,
there are 23 three basic design patterns that I could use.

3.3.2 Input/Output
Text input/output is for the communication between a server and its clients; this
communication is required to transmit e-mail protocol commands and their
responses. It is also for writing and reading the user account data that are to be

3.3.3 TCP Network

TCP network communication between a server and its clients is possible by using
Socket classes provided in the package. It is useful to implement the Socket
for both SMTP and POP3 servers and their clients since the TCP communication
protocol has already been implemented in a Socket class. This implies that there is
no need to rewrite any specifications at the TCP-layer level or below; therefore, I can
concentrate on the implementation of Application-layer protocols, i.e. SMTP and

3.3.4 Data Structure

List data structures are extensively implemented in order to dynamically store
objects. I used two
different list data structures for the e-mail server software. Array List

One is the Array List data structure. The advantage of implementing this data
structure is that it provides an efficient random access to the list specified by an
index. However, the disadvantage is that this data structure constructs an array each
time the size of the list is changed. This may be inefficient if the list changes many
times while the program is being executed. Linked List

The other list data structure is the Linked List. The advantage of implementing this
data structure is that this list allows flexible size changes while the program is
running. This implies that efficient insertions and deletions can be made without
rebuilding the entire data structure. On the other hand,
[Type text]

the disadvantage is that the random access of the data may consume more time than
the data access