[Dovecot] How do I get my mail from fetchmail into dovecot?

Michael Steinbeck-Reeves michael at steinbeck-reeves.uk.com
Fri May 1 01:33:49 EEST 2009


Hi Andreas

I sort of have it working but am still not quite there...

I have created virtual users with homes under their mail folders (using
mbox), as recommended in the Dovecot Wiki VirtualUsers section.

I have had quite a time with permissions! Finally getmail and vmail
appear to have the required permissions in my structure. However, I
still can't quite work out how the system knows which mailbox to deliver
to - i.e. who is the virtual user?

I tried setting it using the -d parameter but still get an error.

My test files are as follows (a bit quick and dirty at the moment):

.rc

[retriever]
type = SimplePOP3Retriever
server = pophost.123-reg.co.uk
username = xxxxxxxx-yy
password = zzzzzzz

[destination]
type = MDA_external
path = /usr/libexec/dovecot/deliver
arguments = ('-d miker',)


.dovecot.sieve

if header :matches ["to","cc","bcc"]
  ["*"]
{
    fileinto "inbox";
    stop;
}

the log reads:
deliver(getmail): Apr 30 23:43:20 Error: mbox root directory can't be a
file: /var/spool/mail/getmail
(http://wiki.dovecot.org/MailLocation/Mbox)
deliver(getmail): Apr 30 23:43:20 Error: mbox root directory can't be a
file: /var/spool/mail/getmail
(http://wiki.dovecot.org/MailLocation/Mbox)

The output from the command line is:
[getmail at Duquesne ~]$ /usr/bin/getmail
--rcfile /var/spool/mail/miker/.imap/.imap/.getmail/xxxxxx.rc
--getmaildir /var/spool/mail/miker/.imap/.imap/.getmail
getmail version 4.8.4
Copyright (C) 1998-2008 Charles Cazabon.  Licensed under the GNU GPL
version 2.
SimplePOP3Retriever:xxxxxx:110:
Delivery error (command deliver 16665 error (64, Fatal: Unknown
argument: -d miker))
  msg 1/2 (1465 bytes), delivery error (command deliver 16665 error (64,
Fatal: Unknown argument: -d miker))
Delivery error (command deliver 16666 error (64, Fatal: Unknown
argument: -d miker))
  msg 2/2 (1870 bytes), delivery error (command deliver 16666 error (64,
Fatal: Unknown argument: -d miker))
  2 messages (3335 bytes) retrieved, 0 skipped


directory listing
ls -la /var/spool/mail
...
drwx------  2 getmail getmail 4096 2009-04-30 23:44 getmail
...

Thanks,

Michael

On Thu, 2009-04-30 at 13:46 +0200, Andreas Ntaflos wrote:
> On Thursday 30 April 2009 12:22:17 Michael Steinbeck-Reeves wrote:
> > > Message: 1
> > > Date: Thu, 30 Apr 2009 00:27:46 +0200
> > > From: Andreas Ntaflos <daff at dword.org>
> > > Subject: Re: [Dovecot] How do I get my mail from fetchmail into
> > > 	dovecot?
> > >
> > > > I have dovecot (with squirrel mail etc.) running without any
> > > > problems but cannot understand how to get e-mail from a pop
> > > > server into dovecot. I have fetchmail configured to pick up the
> > > > mail from the pop3 server but don't understand how to get it from
> > > > there into my dovecot mbox structure.
> > >
> > > My advice: forget Fetchmail and use Getmail [1] instead. Getmail
> > > does everything Fetchmail does, only better. The documentation is
> > > excellent, the author (and mailinglist) very responsive should you
> > > run into problems you can't seem to solve on your own and I believe
> > > there exist a number of HOWTOs on how to setup Getmail with
> > > Dovecot. Not that it's very difficult, though.
> >
> > Thanks, I have changed over and your diagrams made it much more
> > obvious what is actually going on.
> >
> > > I myself have such a "mail hamster" setup running just fine, which
> > > I mentioned a few weeks ago on this list [2]. You might find that
> > > post helpful.
> > >
> > > The general idea is to use Getmail to poll the remote mail servers
> > > (I poll two POP servers and three IMAP-SSL servers), retrieve
> > > messages, optionally scan them for viruses and spam and then hand
> > > them over to your local Dovecot server using Dovecot's LDA
> > > "deliver". See [3] for a nice picture :) If you skip virus and spam
> > > scanning the configuration for a single remote IMAP server boils
> > > down to:
> > >
> > > ~/.getmail/remote_imap_server.rc:
> > >
> > > [options]
> > > verbose = 0
> > > read_all = false
> > >
> > > [retriever]
> > > type = SimpleIMAPSSLRetriever
> > > server = address_of_remote_imap_server
> > > username = username_on_remote_server
> > > password = password_on_remote_server
> > >
> > > [destination]
> > > type = MDA_external
> > > path = /usr/local/libexec/dovecot/deliver
> > >
> > > The destination part tells getmail to call the "deliver" program
> > > (without any commandline options) with the retrieved message.
> > > Dovecot then does the rest.
> >
> > That seems simple - thanks.
> >
> > Do I just put a list of retrievers, one after the other with a single
> > destination following that and let dovecot sort out the destinations?
> 
> Normally you have one RC file per remote server your want to poll, with 
> each RC file looking quite like the example I gave. Create a cron job 
> for Getmail to run periodically and tell it which RC files to use:
> 
> # Run every two minutes and get mail from the specified servers
> */2 * * * * /usr/bin/getmail \ 
>     --rcfile /home/daff/.getmail/dword.org.rc \
>     --rcfile /home/daff/.getmail/gmx.at.rc \
>     [...]
> 
> Refer to the Getmail docs for further info.
> 
> > The only thing I don't understand and can't find/understand in the
> > documentation is how to tell the LDA where to put my e-mails. I have
> > mails to several addresses mixed up in several POP3 boxes and need to
> > sort them out and deliver them based on the target address. e.g.
> > michael at domain1 and michael at domain2 go to my box etc. I can't see
> > where I identify the addresses and allocate the appropriate storage
> > area.
> 
> This is where Sieve shines. If you don't use Sieve then the LDA 
> (deliver) will just put any messages handed to it by Getmail into your 
> top-level INBOX. With Sieve you can specify rules and tell the LDA what 
> to do with each message. You should read up on Sieve [1], Sieve in 
> Dovecot [2] and Dovecot's LDA [3]. Once you configured the LDA to 
> understand Sieve you can create rules like the following:
> 
> ~/.dovecot.sieve:
> 
> # Messages from the Dovecot list end up in the IMAP folder
> # INBOX.dword.dovecot-users
> if header :contains ["List-Id"] 
>     ["Dovecot Mailing List <dovecot.dovecot.org>"] 
> {
>     fileinto "INBOX.dword.dovecot-users";
>     stop;
> }
> 
> # All messages addressed directly to me shall end up in
> # the IMAP folder INBOX.dword
> if header :matches ["to","cc","bcc"]
>   ["*daff at dword.org*"]  
> {
>     fileinto "INBOX.dword";
>     stop;
> }
> 
> # Another account I have. Put those messages in 
> # the IMAP folder INBOX.gmx.
> if address :contains ["to","cc","bcc"] 
>     ["my.address at gmx.at"] 
> {
>     fileinto "INBOX.gmx";
>     stop;
> }
> 
> Dovecot's Sieve support is excellent, thanks to Stephan Bosch. There is 
> much more documentation out there than I can possibly provide or link 
> to in this post but I think it gets the point across. 
> 
> Hope this helps :)
> 
> Andreas
> 
> [1] http://sieve.info/
> [2] http://wiki.dovecot.org/LDA/Sieve
> [3] http://wiki.dovecot.org/LDA



More information about the dovecot mailing list