Maybe like me you have various mail-accounts with different providers. wouldn't it be convenient to have all of them collected in one place and accessible through one account from all your devices (Home, Work, Laptop, Mobile phone…)? Here's how I achived this using a combination of fetchmail/procmail for fetching and sorting mail and dovecot to make them accessible via imaps (Note: I don't run my own smtp-server but use the providers servers for this):
You will need a linux server with root access and a permanent internet connection to use this setup. Also you need to install the following programs:
dovecot fetchmail procmail
How to install these depends on your distribution, for gentoo its as simple as
emerge -av dovecot fetchmail procmail
Since I will use the normal system users as mail users the dovecot setup is quite simple. This config also disallows plaintext login, so you will have to use ssl. I won't show how to generate the (self signed) certificates here, since there are more than enough Howtos on the net for this. This setup will use a directory Maildir in the users home directory. For a setup like this here is a working /etc/dovecot/dovecot.conf (for dovecot 1.1.x):
listen = * disable_plaintext_auth = yes syslog_facility = mail ssl_cert_file = /etc/ssl/dovecot/server.crt ssl_key_file = /etc/ssl/dovecot/server.pem mail_location = maildir:~/Maildir protocol imap { imap_client_workarounds = outlook-idle tb-extra-mailbox-sep } protocol pop3 { } protocol lda { postmaster_address = postmaster@example.com } auth default { mechanisms = plain passdb pam { args = "*" } userdb passwd { } user = root } dict { } plugin { }
With this you should be able to access your mailserver with configured system users through imaps. Now on to fetchmail/procmail config to get the mails from the providers servers
Fetchmail configuration is quite simple. For every user you want to fetch mail for put a .fetchmailrc with content like this in the users home directory:
poll mail.example1.com protocol pop3 username username1 password supersecretpassword mimedecode mda "/usr/bin/procmail -d %s" poll mail.example2.com protocol pop3 username username2 password secretpassword2 mimedecode mda "/usr/bin/procmail -d %s"
I think this is quite self explanatory, and there is enough documentation out there if you have further questions. One thing to note: permissions for the .fetchmailrc have to be 600 and it has to be owned by the according user.
Now that we get the mail from our accounts we certainly want to sort them in some way. Thats what we will use procmail for. In fetchmails configuration above you can already see the last line of each block which passes the fetched mail to procmail for proccessing. Like for fetchmail we need a configuration file for procmail. Its name is .procmailrc and it has to be in the users home-dir like the fetchmail configfile. Here's an example file:
# Some default Variables MAILDIR=$HOME/Maildir DEFAULT=$HOME/Maildir/ VERBOSE=no LOGFILE=$HOME/procmail.log # Mails with "[dokuwiki]" in the Subject go into Lists/[dokuwiki] # Note that with dovecot the seperator for directories is a single dot :0 * ^Subject:.*\[dokuwiki\].* .Lists.[dokuwiki]/ # Anything from amazon goes into Online-Shops/amazon :0 * ^From:.*@amazon.de.* .Online-Shops.amazon/ # Anything to the second account goes into username2 :0 * ^TO username2@example2.com .username2/ # Anything to the first account goes into the default Inbox :0 * ^TO username1@example1.com $DEFAULT # Everything that isn't sorted by now goes into Junk :0 .Junk/
You can add more rules if you like. Also procmail can do a lot more complex tasks like spam-filtering and so on. The web has a lot of howtos and documentation on this topic.
All that is left to do now is to run fetchmail on a regular basis for the user(s) you want't to fetch the mail for. An easy way to achive this is by using cron. Here is an example line for crontab to fetch mail every 10 minutes for the user “seiichiro”:
*/10 * * * * root /home/seiichiro/getmails.sh
The script called by cron looks like this:
#!/bin/bash su seiichiro -c fetchmail >/dev/null 2>/dev/null
Thats it. If you did everything right your server will fetch and sort your mail automatically and it will be avaiable to you with any imaps capable device/program. I use my server from different Windows and Linux systems at home and work, a N810 Internet Tablet, a Nokia E51 Mobile phone and a webinterface (v-webmail). If you have questions or suggestions feel free to leave a comment below.