Emails classification in perl
André Rodier
andre at rodier.me
Wed Aug 6 09:26:11 CEST 2014
Hi everybody,
There is one feature, I missed when I stopped to use gmail, which is the
automatic recognition of 'Important' messages. I am actually trying to
replicate that, with a custom amavis perl script, and a virtual folder
in 'Dovecot'. So far, it's encouraging.
I even can create rules in Thunderbird to automatically tag messages as
'Important'.
So far, the script tries to 'classify' emails in 4 categories:
- Internal: an internal email inside the company.
- List: Official mailing list, since it's containing valid 'List-Id'
etc.
- Bulk: A mailing list email, without the header
- Private: a private email, sent from someone.
So, my dovecot filter is getting all 'Internal' and 'Private' emails to
create a virtual folder called 'Important'.
Please, understand that this 'feature' is an added value to spam
filtering. It's very useful for people who are subscribe to many mailing
lists using their main email address. They often want to have important
emails automatically recognised without loosing access to mailing lists.
Since I could not find appropriate documentation about Amavis hooks,
especially an up to date reference of $msginfo, the perl script is
probably not optimised, and it's here I need your help. However, it's
doing the job so far, and my users are thrilled. The code is simple,
readable and optimised enough to have no impact on performances (so
far).
Notes and Todo:
1 - The bulk email recognition is probably were there is more place for
improvements
2 - I need to stop analysing emails marked as Spam.
3 - Internal emails recognition is not implemented yet, I need your help
here.
4 - A nice to have feature will be per-user rules, using a simple
database of important emails senders.
The feature 4 is essentially the missing point to have the same features
as gmail.
I am neither a Perl hacker, so the perl's mongers around may be shocked,
especially by the way I tried to catch exceptions, but it's working.
If you want to help, or if you are interested, the code is here:
https://github.com/arodier/emclass
Comments are welcome.
André
More information about the amavis-users
mailing list