This is a simple maildrop filter which filters incoming messages by the sender address and move it to the corresponding folder. E-Mail address and destination folder are both defined in a MySQL table.
This example is used in an uberspace environment.
For convenience we use the already existing database corresponding to your uberspace account (e.g. your uberspace username is melanie there will be already a database called melanie.
mysql $USER << '__EOF__'
CREATE TABLE `mailfilter` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`folder` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
__EOF__
Below you will find a single sample entry which will move e-mails from [email protected]
to the folder Your_IMAP_Folder
:
mysql $USER << '__EOF__'
INSERT INTO mailfilter (email, folder) VALUES ('[email protected]', 'Your_IMAP_Folder');
__EOF__
It is important that you have read and understood the basic configuration hints from the uberspace maildrop support wiki.
You can use the below-mentioned script as your maildrop filter rule or enhance your existing script by adding the if ( /^From:\s*(.*)/ )
code block. As mentioned before we are using the database corresponding to your uberspace account. So you have to change the variable DATABASE
to your username.
Last but not least be sure you set the correct rights to the filter rule (e.g. chmod 600 ~/.myfilter
).
(Thx to Jonas from uberspace for his feedback)
Hej,
first off: thanks for making this! :)
I'm having a little problem with wrapping my head around this. First off: basically copy-pasta'ed this onto my uberspace. But it won't work. I am guessing from debugging that it's not finding anything in the database because of formatting issues. I'm getting the following output:
What I was actually expecting is
So I am wondering where that \n in there comes from. I am not sure, as well, what the masked ADDR should look like. Could you provide an example, please? That would help me a lot debugging this.