Skip to content
/ POP3 Public

Implementation a POP3 mail server following RFC 1939, as well as a client, and a monitoring protocol designed and implemented for the server

Notifications You must be signed in to change notification settings

Marco444/POP3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

POP3

This repository implements a POP3 mail server following RFC 1939. It also includes and defines a client capable of monitoring the server. The monitoring protocol is defined by us, and its specification can be found in the monitor-rfc.txt file.

For more information about the server and client implementations, as well as performance with different configurations, refer to the /docs directory where you will find the project report informe.pdf and the RFC of the monitoring protocol.

Binary Generation

Standing at the root of the repository to compile both the monitor and the client, run the command:

make all

Also, you can remove all binaries with the command:

make clean

Client

Standing at the root of the repository, you can compile the client with the command:

make client

Then, to execute the client, simply run the command:

bin/client -a ipServer -p portServer -u user:pass

Where -a ipServer specifies the IP address of the server that supports the monitoring protocol, -p portServer specifies the port of the server that supports the monitoring protocol, -u user:pass specifies the administrator user that already exists within the server to log in as such. Once logged in, the user can interact with the server with the commands stipulated in the RFC within docs/monitor.txt.

Another way to run the client is directly through execution arguments. For example, if you only want to add a new pop3 user to the server, you would execute:

bin/client -n new-user:new-user-pass -p portServer -u user:pass

Similarly, if you want to see the metrics, you would execute:

bin/client -m -p portServer -u user:pass

Also, if you want to run list_users directly, you would execute:

bin/client -l -p portServer -u user:pass

Finally, if you want to change the directory from where the server's mails are read, you can run:

bin/client -d dir/ -p portServer -u user:pass

Note that dir/ represents the path and must end with /

Server

Standing at the root of the repository, you can compile the server with the command:

make server

Then, to run the server, you can execute:

bin/server -u user:pass  -u user2:pass2 -a admin:admin-pass -a admin2:admin-pass2 -d mails/

Where -u user/pass defines the user with name 'user' and password 'pass', and -a admin:admin-pass defines the admin user with name 'admin' and password 'admin-pass'. Lastly, the -d mails/ argument represents the path where the server-administered emails are located. As stipulated by RFC 1939, within the mails directory for each server user, a subdirectory should be created with the username, and within this another directory named curl. That is, for each user inside mails mails/user/curl.

Note that more than one user can be added when starting the server (they can be added during execution through the monitor client), simply by chaining -u userN:passN for each one. The maximum number of administrators is 10 and the maximum number of clients is 10. Finally, note that -d mails**/** ends with a / otherwise it won't work.

About

Implementation a POP3 mail server following RFC 1939, as well as a client, and a monitoring protocol designed and implemented for the server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages