Re: [Dovecot] How do I get my mail from fetchmail into dovecot?
Message: 1 Date: Thu, 30 Apr 2009 00:27:46 +0200 From: Andreas Ntaflos daff@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?
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@domain1 and michael@domain2 go to my box etc. I can't see where I identify the addresses and allocate the appropriate storage area.
Thanks,
Michael
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@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@domain1 and michael@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
# All messages addressed directly to me shall end up in
# the IMAP folder INBOX.dword
if header :matches ["to","cc","bcc"]
["*daff@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@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
Andreas Ntaflos Vienna, Austria
GPG Fingerprint: 6234 2E8E 5C81 C6CB E5EC 7E65 397C E2A8 090C A9B4
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@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@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@domain1 and michael@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
"] { 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@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@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
On Friday 01 May 2009 00:33:49 Michael Steinbeck-Reeves wrote:
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.
Hi,
The examples I gave, and the setup I have running, are for system users with real accounts. I don't know how this would translate for virtual users although it should be doable. Unfortunately I don't have the possibility to create a test setup that matches yours at the moment so I'm afraid I don't think I can help you much more.
I'd try, however, to correct the errors the log files show you, and while you are at it, you might want to ditch mbox for Maildir, if you can afford to do so. I also think you should run Getmail as the vmail user in order to have an easier time with permissions, especially if you have a virtual domain hosting setup that involves Postfix (or any MTA, really) as well.
Finally, you should head over to the Getmail mailing list and ask about using Getmail with virtual users there. Charles, the author of Getmail, is really helpful if you ask him the right questions the right way :)
Andreas
Andreas Ntaflos Vienna, Austria
GPG Fingerprint: 6234 2E8E 5C81 C6CB E5EC 7E65 397C E2A8 090C A9B4
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.
Thanks for the examples. Does anyone know if dovecot-sieve supports the Editheade extensions which allow you to add or delete email headers? I currently use procmail and pipe to formail to add a header which indicates which procmail recipe got applied. I'd like to add headers in sieve so I can achieve the same result.
Regards, Phill
participants (3)
-
Andreas Ntaflos
-
Michael Steinbeck-Reeves
-
Phill Edwards