Git Product home page Git Product logo

javamailserver's Introduction

JavaMailServer

Description

This project is an implementation of an e-mail server that uses SMTP/IMAP protocols and allow registered users to send and receive emails.

Goal

Get a more in depth understanding of the inner working of application layer protocols, and play around with sockets.

Demonstration

Contexte

a. Mail server

1) Definition

A mail server (or email server) is a computer system that sends and receives email.

Mail servers send and receive email using standard email protocols. For example, the SMTP protocol sends messages and handles outgoing mail requests. The IMAP and POP3 protocols receive messages and are used to process incoming mail. When you log on to a mail server using a webmail interface or email client, these protocols handle all the connections behind the scenes.

2) General Architecture

b. SMTP protocol

1) Definition

The Simple Mail Transfer Protocol is a communication protocol for electronic mail transmission. As an Internet standard, SMTP was first defined in 1982 by RFC 821, and updated in 2008 by RFC 5321 to Extended SMTP additions, which is the protocol variety in widespread use today.

2) Protocol architecture

drawing

Figure: SMTP Agents

c. IMAP protocol

1) Definition

In computing, the Internet Message Access Protocol (IMAP) is an Internet standard protocol used by email clients to retrieve email messages from a mail server over a TCP/IP connection.[1] IMAP is defined by RFC 3501.

IMAP was designed with the goal of permitting complete management of an email box by multiple email clients, therefore clients generally leave messages on the server until the user explicitly deletes them. An IMAP server typically listens on port number 143. IMAP over SSL (IMAPS) is assigned the port number 993.

2) Protocol architecture

Conception

a. UML Diagrams

1) State transition diagram

2) Sequence diagram

3) Package diagram

Future enhancements

  • Multiple clients support.
  • Clients GUI.
  • Sign up mencanism.
  • more use cases handling (emails flags...).
  • Add Exchange Agent (the agent responsible for forwarding emails to outer mail servers)

References

[1] Mail Server Definition - https://techterms.com/definition/mail_server
[2] Simple Mail Transfer Protocol - Wikipedia - https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
[3] Internet Message Access Protocol - Wikipedia - https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol

javamailserver's People

Contributors

abdel7ak96 avatar

Stargazers

 avatar

Watchers

James Cloos avatar

Forkers

robortl

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.