POP3 Retrieval

This project received 12 bids from talented freelancers with an average bid price of $426 USD.

Get free quotes for a project like this
Employer working
Project Budget
$100-$500 USD
Total Bids
Project Description

A linux CLI executable to download messages from a POP3 server to a file for each message.

## Deliverables

It's intend to work as any POP3 client, i.e. connect to the server, get the messages list, retrieve new messages (limited by the maximun defined), delete from the server (optional). This cycle must be repeated a definied number of times for each run, retrieving on each a definied max of messages, and closing the connection at the end of the cycle (deleting the messages if the setting is enabled). For each fetched message, it has to create a text file with the entire message (including headers), with the md5 of the message as filename in a specific directory. If a file with this name exists, we're probably in front of a duplicated message, so if it is true, it hasn't to create a new file. To the next cycle, it has to wait a delay time.

The app has to read the configuration XML file from a path received as a parameter; and multiple instances of the app may be running at the same time, each with a different config file.

Also, it has to record a XML log for each cycle, in which is described what has been done (numbers of emails on the UIDL, numbers of UID to fetch, UID fetched successfully, etc), and any error occurred (no network, no response from POP server, etc). The output of the log at the end of the cycle may be a file (named by the date of running) and/or a database (calling a configurable function on a configurable PostgreSQL DB). In error case, the app must be able to send an email with the warning (mail address and subject, configurable in the configuration file; the body, with a description of the error).

In the xml configuration file we can set:
* Connection parameters (host, port, SSL, username, password)
* Pop Retrieval
* * Number of cycles (number of attemps to download message for each run)
* Delay time between cycles (seconds to wait for a new cycle)
* Fetch messages max (the maximum numbers of messages to fetch for each cycle)
* Delete options (delete on download)
* Target
* * Target directory (may be a mounted network volume)
* Target directory max files (the max numbers of files in the directory; if it's reached, will not fetch any message until it has space)
* Alert
* * numbers of error to trigger mail
* email address
* subject
* body
* Log
* * Directory
* * Enable/Disable
* Directory

<!-- -->

* Database
* Enable/Disable
* Server
* Database
* Function
* User
* Password

The typical execution it's like this (where

*italic and underlined* words are parameters in the [url removed, login to view]):
1. read the [url removed, login to view]
2. repeat *cycles* times
1. connect to *host*
2. get the list of messages
3. if messages avaliable number is greater than *maxMessages*
retrieve the oldest *maxMessages* messages from the list
retrieve all messages from the list
4. for each message fetched
1. create a text file with the message, named as the md5 of the message
2. if the file exists, check if the message it's the same. If it's true, discard the message

<!-- -->

1. create a text file with the message, named as the md5 of the message
2. if the file exists, check if the message it's the same. If it's true, discard the message
5. delete downloaded messages from server
6. close connection
7. close XML log file, and call the function *function* of the PostgreSQL database *database* passing the XML log as a parameter
8. wait *delay* seconds

* [url removed, login to view] example
* [url removed, login to view] example

* * *This broadcast message was sent to all bidders on Wednesday Jun 25, 2008 4:11:42 PM:

The requierements has changed. Please review it,and check if your bids still valid. It's fundamentally drop the UID message getting, and replace it for md5 of the message for identifiyng it.

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online