Postfix, maildir's, and writing filters
Da Rock
rock_on_the_web at comcen.com.au
Tue Sep 23 13:34:23 UTC 2008
On Tue, 2008-09-23 at 08:24 -0400, George Fazio wrote:
> Da Rock wrote:
> > On Mon, 2008-09-22 at 20:53 -0400, George Fazio wrote:
> >
> >> Da Rock wrote:
> >>
> >>> Howdy. This may seem simple, but I'm completely green on this: I have a
> >>> postfix server with a courier-imap client frontend using maildir's. I'm
> >>> using imap for an internal mta, but I need to setup a system which
> >>> retains copies of sent emails on the network and not on individual
> >>> workstations (which is what happens currently).
> >>>
> >>>
> >> When you say courier-imap client, do you mean you're using maildrop to
> >> deliver the message to the user's maildir or that there is an end-user
> >> courier-imap client? I am only familiar with the maildrop piece of courier.
> >>
> >>> I've looked at some of the solutions (bcc and send to a psuedo account
> >>> for each user, bcc to the user and filter the incoming mail on this) but
> >>> it seems like a very roundabout way of doing things. I've read up on
> >>> Postfix, and there is support for custom filters, so:
> >>> 1. what does it take to write one?
> >>> 2. how does one copy email from one folder to another in maildirs? Is it
> >>> possible?
> >>>
> >>>
> >>>
> >> This is a classic case of over engineering. You do not want to bcc back
> >> to the user, or filter the mta, just move the outgoing messages to the
> >> sent folder. You might need bcc for the purposes of journaling all
> >> email, if you have any legal requirement (sox, hippa, etc.) that require
> >> it. But, that it another ball of wax entirely.
> >>
> >>> This idea I have should filter the outgoing mail and copy the messages
> >>> to the sent folder as well as retaining its place in the queue.
> >>>
> >>>
> >>>
> >> If the end-user's client is using imap and configured properly, it
> >> should do this for you. Thurderbird, the full version of Outlook (and
> >> probably Express), and many other clients support this natively - you
> >> just have to make sure the client is configured to do that. Typically,
> >> in the configuration of the client, there is something that says
> >> something like "save a copy of sent messages to <folder of choice>". I
> >> don't know what client you're using. I use Pine/Alpine, Thunderbird,
> >> and Outlook (when I have no other choice).
> >>
> >> If the end-user's client is using pop, then you have a problem that may
> >> require a custom solution like you speak of above.
> >>
> >>> Any ideas? Maybe a link to some good info? I would like to know how to
> >>> do this myself so I can do more in the future so info and pointers would
> >>> be great (if you have a script you'd like to share then please show me
> >>> how it works :) ).
> >>>
> >>> Cheers
> >>>
> >>>
> >>>
> >> My mail system is running postfix (mta) w/ dovecot (for imap or pop
> >> access from the clients), maildrop (for delivering to a maildir), and
> >> amavis-new (for spam filtering and virus scanning w/ clamav). My mail
> >> clients are configured for imap, and they save copies of sent mail to
> >> the sent folder as expected. While I am using dovecot, and not courier,
> >> for my imap server - I cannot imagine that any other imap server would
> >> handle things any differently ... it's core functionality that ever imap
> >> server should have imho.
> >>
> >> -George
> >>
> >>
> >
> > Me too. It may be possible to save a copy in evolution, but I haven't
> > found it in all clients. Plus my system needs to be suitable for a
> > webmail system, and yes some pop clients.
> >
> > You sound like you know maildrop very well, I was considering using it
> > as a part of the solution. If I wrote a milter script for postfix, is it
> > possible to pass the message to maildrop so that it can take care of the
> > formalities such as filenames and formats and tell it to put it in a
> > sent folder? Something like a shell or perl script that uses this line
> > to run maildrop:
> >
> > maildrop -d $user Maildir/.Sent
> >
> > Obviously the message itself will be piped, and the $user will be
> > obtained by copying the from field in the message.
> >
> > Would something like this work? I've been searching on google but
> > haven't found a clear answer, they only mention using maildrop filters
> > and commands there- not actual usage of the maildrop cli.
> >
> > Cheers
> >
> >
> If you wrote a filter for postfix, which I have no idea how to do, the
> maildrop command you sight looks good.
>
> A friend of mine is using round cube for web mail (I don't have webmail
> setup on my server), and it will also save a copy to the sent folder.
> Most of the web clients should provide this functionality. The pop
> clients are the ones that are going to be an issue.
>
> I'm not sure what Google is using for gmail. But, when I send a message
> using their smtp service, a copy goes into my account. So, what you're
> looking to do is obviously possible, but I do not have an experience
> with it as I have not had need for a solution yet. I would certainly be
> interested in what you come up with though.
>
> Another possible option is to configure the clients to always bcc the
> sender, and then write a maildrop rule. Something like "if
> (/^From:.*user\@domain\.com/) to Maildir/.Sent" might work (I have not
> tested this rule, it may not function as desired). That would have to
> go in the .mailfilter file in each user's home dir. I think you can
> have global maildrop rules if I remember correctly. You might be able
> to sub user for a variable that contains the user name or the message
> sender, or something like that, so that you do not have to modify the
> .mailfilter file for every user.
That would be the maildroprc wouldn't it? But then the question is
whether the global filter is first or the user filter is- it will make a
difference.
The main point is to minimise disturbance and ensure transparency to the
end user- ie it just happens.
A big problem I'm facing is that postfix will only send to a filter as
another server (address:port), whereas most solutions I have to suit the
need are stdin only (could be redirected to of course, but still not the
same as an address:port). Still if I get past this, then the process
from there should be very simple. Maybe...
More information about the freebsd-questions
mailing list