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.
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
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 /
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.