Closed

Simple incoming-only SMTP that stores mail and attachments in MySQL

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

Get free quotes for a project like this
Employer working
Project Budget
$1500 - $3000 USD
Total Bids
25
Project Description

PROJECT DESCRIPTION
We need a simple, light SMTP server / listner that will be installed on a Debian and which will write email to a mysql database.

BACKGROUND

We produce a financial product that must store collaboration messages and the occasional documents that are sent as attachements. These messages and attachments must be emailed to an email address rather than uploaded from the desktop, which is a common problem in handheld and tablet apps that do not allow local storage. These emails will consist of normal correspondence, plus documents that can be quite large. The email content may consist of simple text, rtf, or html formatting. The attached documents can be of any number and any type.

The application will then query the database directly and display the contents to the user interface as needed. So there is no need to forward or send email. We only need to receive and store it. Maintenance of it can be done from the user interface side of the application.
We also host this product as an SAS solution and we must have simple C/C++ libraries that can be run anywhere without complex configuration.
We integrate with Sharepoint also, but we need freedom from ties to that vendor's product for those customers that want it, and for our SAS offering.

REQUIREMENTS
(I noticed that this project has been requested before by others, so forgive me if you have seen something like it.)

0) Configure from a text config file. defaults to current directory, unless command line file path specified. Config should Include the db connection information, and table names.
1) write all activity to a text log file. Create new files daily, weekly, monthly, based upon config file.
2) it will listen for a connection on port 25.
3) Once a connection comes in, it will verify the names in the TO list, and check a mysql database table (users) to determine if that email address is registered. This email name will be a long string like a GUID, followed by a domain name ie: @thissegment.anothersegment.yetanothersegment.com.
4) if any name is not found, then that name is discarded. If all names are not, the email is discarded entirely with no further action, other than logging the unlisted address, date and time in the log.
5) If it finds the name, the system will:
a) perform one or more minor regex functions on the email description/title and the body content, replaced with information from the config file.
b) store the contents of the message in the database without encryption.
c) store the attachments in the database without encryption.
d) tolerate attachments up to 100MB, with the maximum attachment size being a configuration option. (I suspect that we may have to RETURN a failure response to the sending server if the attachment is too large?) (not an email, just an error or error code)
6) we must be able to request status from it somehow (our apps are largely written in php)
7) It must process multiple connections at once as multiple messages may come in at a time. And we want to set the connections limit at the top if possible.
8) The language should be C or C++. (No, we cannot use Java, sorry. :)

DELIVERABLES
1) Fully-functional working program in executable form.
2) Complete source code.
3) Installation instructions that are clear enough that we can even give them to our customers if we have to. :)

INTELLECTUAL PROPERTY
1) This project is "work for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).

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