Mailets are relatively still a new concept, so this page is designed to capture as many unique ideas for mail-processing applications.
BeanShell - Scripting Mailet/Matchers in James (JSR-274)
DCCIFD - Java implementation to talk to dccifd http://www.rhyolite.com/anti-spam/dcc/
available now: http://mailets.jarnbjo.de/dcc.html
Tag Message Delivery Agent - Java implementation of the Tagged Message Delivery Agent (TMDA).. http://tmda.net/ an excellent SPAM filter / processor
Mailing lists - James already has support for Mailing Lists
HTML-to-text - mailet could look for HTML emails and automatically remove this markup rich copy so plain text mail clients (like pine) get a message that's easier for them to read.
Virus scanning mailet, certainly mail processing can check attachments and HTML for potential viruses. The biggest problem though is generally maintaining the virus definition file.
Spam filtering - there are numerous ways you may want to fight spam using mail processing
IP port spam filter - mark messages as spam from certain IP addresses, usually large ranges or heavy senders, or possibly geographic lookups.
Blacklists - either can be based on IP address or sender.
Message signature - some systems will hash the message to get a quick "signature" of a spam message, and then block further copies of these.
- Done - see DCCIFD, this is the same principle
Bayesian filtering - probably the most promising spam filtering, this learns what are frequent words that appear in spam and not spam, and then checks the frequency of these words in an incoming message to determine whether it's spam or not. Quite effective!!
- Available in James 2.3
Usage Limitations - Limit number of messages an authenticated user can send (daily or weekly) - this would keep users on a system from using it for mass-mailings.
Pornography Filtering - 11/27/2000 CNN.com article describes how a filter checks for attachment images, opens them and counts the percentage of color pallete in the skin tone, and high amounts generally means it's a porn image.
Bulk Mailing Stats - By using Variable Envelope Return Paths (VERP), you can track what recipients of bulk mailings were unable to receive an outgoing message.
Vacation - Smart I'm on vacation notices. The second IBM Developerworks article provides a simple implementation.
Timestamping - A timestamping mailet could be offered as a third-party gateway mail server which timestamps and signs the message as it transports it... useful for creating a message you could prove when you sent it.
Safe copy messages - taking your message and stores it in the database, then sends along only the link to the message in the message.
File on demand - has been done before, but basically send an automated service an email with a path, and it emails you back the file as an attachment.
Attachment to Link filter - Attachment stripped from message, stored in htdocs directory, replaced in message with link for download from webserver. For both incoming and outgoing messages. The Mailet is downloadable at http://www.j-box.at/lenya/j-box.at/live/Java/Source_de.html
NTP stamp mailet - looks at the incoming message's timestamps, and if it's off beyond some threshhold, the old time is copied to a backup mail header, and the new message has a proper time set. Useful when your mail client sorts the message based on sent time rather than received time.
Log mailet - so big brother can record every message that comes through their system
- NOTE(nicolaken) This can be done by putting all mails to a repository with that mailet and setting passthrough.
Anonymity mailet - that converts your outgoing email address to an anonymized numeric address, and strips any distinguishing information.
Email address creation mailet - could let you hand out slight variations of your email address to different mailing lists, all which gets delivered back into the same address, but then you can track who sold your address to whom, and if you get frustrated with a particular person selling your address, send certain variations to the spam bucket.
Allow users to automatically create implicit, expiring aliases for their email addresses. The idea is inspired by Spamhole.com, which provides email forwarding addresses that last 2 hours. Suppose my email address was firstname.lastname@example.org and I need to give my email address to a web site that promises to email me back right away. If it is August 4, 2003 I can give the form an email address 'email@example.com', which gives the site two days to send me email. After that date has passed, the mailet can either delete the message, or prefix the subject with "exp: " which is a little safer.
Similarly I could supply a web form at www.widgets.com with an email address of firstname.lastname@example.org. Then the mailet will be able to prefix the subject of any message that comes from that form with "ref: widgets.com: ".
- Using this scheme, I could write configure my email client to filter all messages from a newsletter to a folder, even if that newsletter changed its sender or subject.
Agents - email around a copy of code and some data to crunch, and the receiving mail server will run this and email back the results. Useful for projects with distributed calculations like SETI and distributed.net
Encoding/decoding mailet - that will encrypt your message before sending it to certain IP addresses.
Auto-footer mailet - that will put your law firm's disclaimer at the bottom of every single message.
- Already exists:
<mailet match="All" class="AddFooter"> <text>Use the xml:space="preserve" attribute if you need to preserve line breaks.</text> </mailet>
Faster SOAP implementation - so rather than delivering the SOAP message to a POP3 address and periodically checking that folder, just have a mailet process upon receiving the SOAP message.
Translation - Transformation - Gateways to other Protocols
Fax-to-mail and vice versa... when a message arrives, have it automatically fax someone this message
Mail-to-SMS integration -... when a message arrives, package it as SMS or MMS and send it to someone's phone.
I have developed one; question is: is there a repository somewhere I can upload it to? - Christian Knecht mailto:email@example.com
Mail-to-Instantmessaging - (Jabber, AIM, Yahoo! messenger, etc..) integration.
Mail-to-Printer - Configure system to print email when it arrives - applying a customizable template / stylesheet. Like the Cocoon Mailet.
Language translation - could take messages incoming in English and translate them to French, or vice versa.
Cocoon Mailet - that can pipe the mail to Cocoon for transformation.
Acronym Finder - A mailet that scans an incoming message for acronyms - IMO, IMHO, WTF - either expands those Acronyms in place (which would prob be very annoying), or creates a legend at the bottom of the email providing definitions.
Grab news items from RSS feeds and send them to "subscribed" James users based on a schedule (this is not really a mailet, more like a variation on FetchPOP)
- Rule based DSN (Delivery Status Notifications) and Bounce handler.
Integrate DROOLS, an open source rules engine, into James as a mailet.
Web Service mail server. A mailet would store (references to) all mails processed by a System, and offer those of "public status" (in public lists, etc.) via Message-ID parameter. The web service would forward requests for not available mails to the originating peer. --SantiagoGala
Instant Messaging Notification. A mailet that sends an IM to the recipient to let them know they have mail. Very useful for people who have multiple email accounts with low volume. The from, to, and subject of the email would be included in the IM. -- Peter Monaco
TheMailetPlan - New Mailet spec/prototype