Jsmtpd 0.6a review

by rbytes.net on

Jsmtpd is a compact SMTP daemon (Email server), entirely written in Java

License: GPL (GNU General Public License)
File size: 0K
Developer: Jean-Francois POUX
0 stars award from rbytes.net

Jsmtpd is a compact SMTP daemon (Email server), entirely written in Java. Jsmtpd project is basicly able to receive E-mail following the SMTP protocol, described in RFC 821. Each others functionnalities are implemented as plugin modules, allowing the core to remain small and easily understaindable.

As now, Jsmtpd is able to receive mail, check it's recipients (ACL-SimpleACL plugin), check for viruses (filters-ClamAVFilter, connects to a ClamAV daemon), check for spam using the Java Jasen engine (filters-JasenAntiSpamFilter) or a spamassassin daemon, check senders via RBL plugin or blacklist plugin. Emails can be delivered localy using the mailbox writer (DeliveryServices-UnixMailboxWriter), or to a remote STMP server (DeliveryServices-RemoteSmtpSender). DNSQueries are also provided by a plugin (DNSJava).

Version 0.4 (Brinsop) has introduced two new extensions : TLS(SSL) support, and SMTP authentication.

Jsmtpd comes with three main services :

The receiver service : It's job is to listen for incoming STMP connection, chat with the client in order to receive E-mails according to ACL plugin.

The second service is the mail queue services. It holds the received mails (loaded or writen to disk). Whenever possible, it processes mails to the delivery service.

The delivery service is a filter plugin tree ending by a delivery service. A filter is basicly a piece of code that answers yes or not to an incoming email. Mails are then checked agains theses plugins, following a tree model. A the end of the chain, the mail is droped if it does not match the filters, or a delivery plugin is invoked to deliver the mail. For now, only two delivery services can be routed using the ACL plugin : local or remote mail.

Jsmtpd's design is heavily based on plugins. Most functionnalities are implemented as plugins. Plugins interfaces are simple to understaind and implement. With minimal time spent learning Jsmtpd, you can rewrite how Jsmtpd handles :

Dns queries

Acces control list (who can do what on the runnning server)
Deliveries : you want to put your mail directly into your custom application ? Write a plugin !
IP filtering
Mail filtering

This server is designed to provide efficient ways to stop unsollicited mail or mail containing viruses. A Jsmtpd deamon can't be set as open relay ( you'll have to write a plugin to do so ;).

Filtering spam can be done at two levels. Ip based filtering will reject connections from well known spammers or open relais smtp servers (ie misconfigured mail servers used by spammers to relay their mails). Content based filtering allows to check mail containing spam (using Spamassassin or Jasen) or viruses (using Clam Antivirus).

If you can't find a filter matching your needs, you can easily write your own and plug it in Jsmtpd.

Jsmtpd is intended to remain small, understaindable and (quite) fast. Without using filters plugin, minimal process is applied to the email data, providing best performances. If you need a more powerfull (in terms of functionnalities) email service solution, I recommend you to check out the jakarta James project and their mailet API.

This server runs over a Java Virtual Machine, and should make intrusions like buffer overflow more difficult to success.

What's New in This Release:
In this release, code has been cleaned up and refactored (common-loggings by example).
It includes several bugg fixes in ldap plugins and dns resolver mainly, and improved thread usage.
New plugins have been added : maildir writer, lmtp delivery(experimental) and spf/greylist.

Jsmtpd 0.6a keywords