[Imap-protocol] Delivery to folder whose name is current year and
richw at richw.org
Wed Oct 18 16:41:46 PDT 2006
I run my own Cyrus server. I'm maintaining a backup archive of
e-mail sent to a particular address, in folders named after the
year and month when a given message was received.
For example (simplifying the real situation just a bit), a message
received right now (October 2006) would be stored in a folder with
a name something like this: user.richw.Archive.2006-10
A new folder gets created automatically when archived mail shows
up for a new month. I'm also setting the \Seen flag on the archived
messages as I store them, so they won't be displayed as "unread".
Right now, I'm accomplishing all this via a combination of Procmail
and a custom Perl script that uses the Net::IMAP module. It works,
but I'd like to consider replacing some or all of my custom stuff
with standard Cyrus tools if possible. However, I foresee some
serious snags if I were to try this, such as the following:
(1) Sieve doesn't seem to be able to compute a mailbox name on the
fly (using shell environment variables) -- something I can do
easily in Procmail. If I switched to using Sieve to sort my
incoming mail, I would apparently be restricted to putting
all archived messages into a single, statically named folder,
instead of per-month/year folders.
(2) Sieve apparently can't create a given folder if it doesn't
already exist -- meaning that messages for a new month would
end up in my default INBOX until I created a folder for the
new month by hand. Calling /usr/local/cyrus/bin/deliver from
Procmail would be even worse -- "deliver" apparently bounces
mail addressed to a nonexistent folder. I can create a new
folder without too much trouble in my custom Perl script
(using Net::IMAP calls).
(3) Cyrus's "deliver" doesn't allow the setting of any flags, so
all the archived messages would show up in my IMAP store as
unread. It looks like Cyrus used to have a way to set flags
in its "deliver" command ("-F" flag), but this was taken out
for some reason. I realize I can set flags on incoming mail
in Sieve, but (as I said) it doesn't look like I can compute a
mailbox name on the fly (for the current month) in Sieve.
Any suggestions? Would a different IMAP server implementation,
instead of Cyrus, allow me to do what I want? Or should I just
resign myself to sticking with Procmail and my custom Perl script?
Palo Alto, CA, USA
richw at richw.org
More information about the Imap-protocol