overridden with local configuration options, as you learn later in this section. Here is an example of the options that might appear in the global section of the .fetchmailrc
file:
set daemon 600
set postmaster foobar
set logfile ./.fetchmail.log
The first line in this example tells Fetchmail that it should start in daemon mode and check the mail servers for new mail every 600 seconds, or 10 minutes. Daemon mode means that after Fetchmail starts, it moves itself into the background and continues running. Without this line, Fetchmail would check for mail once when it started and would then terminate and never check again.
The second option tells Fetchmail to use the local account foobar
as a last resort address. In other words, any email that it receives and cannot deliver to a specified account should be sent to foobar
.
The third line tells Fetchmail to log its activity to the file ./.fetchmail.log
. Alternatively, you can use the line set syslog
— in which case, Fetchmail logs through the syslog
facility.
The second section of the .fetchmailrc
file contains information on each of the mail servers that should be checked for new mail. Here is an example of what the mail section might look like:
poll mail.samplenet.org
proto pop3
no dns
The first line tells Fetchmail that it should check the mail server mail.samplenet.org
at each poll interval that was set in the global options section (which was 600 seconds in our example). Alternatively, the first line can begin with skip
. If a mail server line begins with skip
, it is not polled as the poll interval, but is polled only when it is specifically specified on the Fetchmail command line.
The second line specifies the protocol that should be used when contacting the mail server. In this case, we are using the POP3 protocol. Other legal options are IMAP, APOP
, and KPOP
. You can also use AUTO
here — in which case, Fetchmail attempts to automatically determine the correct protocol to use with the mail server.
The third line tells Fetchmail that it should not attempt to do a DNS lookup. You probably want to include this option if you are running over a dialup connection.
The third and final section of .fetchmailrc
contains information about the user account on the server specified in the previous section. Here is an example:
user foobar
pass secretword
fetchall
flush
The first line, of course, is simply just the username that is used to log in to the email server, and the second line specifies the password for that user. Many security-conscious people cringe at the thought of putting clear-text passwords in a configuration file, and they should if it is group or world-readable. The only protection for this information is to make certain that the file is readable only by the owner; that is, with file permissions of 600
.
The third line tells Fetchmail that it should fetch all messages from the server, even if they have already been read.
The fourth line tells Fetchmail that it should delete the messages from the mail server after it has completed downloading them. This is the default, so you do not really have to specify this option. If you want to leave the messages on the server after downloading them, use the option no flush
.
The configuration options you just inserted configured the entire .fetchmailrc
file to look like this:
set daemon 600
set postmaster foobar
set logfile ./.fetchmail.log
poll mail.samplenet.org
proto pop3
no dns
user foobar
pass secretword
fetchall
flush
What this file tells Fetchmail to do is
> Check the POP3 server mail.samplenet.org
for new mail every 600 seconds.
> Log in using the username foobar
and the password secretword
.
> Download all messages off the server.
> Delete the messages from the server after Fetchmail has finished downloading them.
> Send any mail Fetchmail receives that cannot be delivered to a local user to the account foobar
.
As mentioned earlier, many more options can be included in the .fetchmailrc
file than are listed here. However, these options get you up and running with a basic configuration.
For additional flexibility, you can define multiple .fetchmailrc
files to retrieve mail from different remote mail servers while using the same Linux user account. For example, you can define settings for your most often-used account and save them in the default .fetchmailrc
file. Mail can then quickly be retrieved like so:
$ fetchmail -a
1 message for ahudson at mail.myserver.com (1108 octets).
reading message 1 of 1 (1108 octets) . flushed
By using Fetchmail's -f
option, you can specify an alternative resource file and then easily retrieve mail from another server, as follows:
$ fetchmail -f .myothermailrc
2 messages for bball at othermail.otherserver.org (5407 octets).
reading message 1 of 2 (3440 octets) ... flushed
reading message 2 of 2 (1967 octets) . Flushed
You have new mail in /var/spool/mail/bball
By using the -d
option, along with a time interval (in seconds), you can use Fetchmail in its daemon — or background — mode. The command launches as a background process and retrieves mail from a designated remote server at a specified interval. For more advanced options, see the Fetchmail man page, which is well written and documents all options in detail.
Because the .fetchmailrc
file contains your mail server password, it should be readable only by you. This means that it should be owned by you and should have permissions no greater than 600
. Fetchmail complains and refuses to start if the .fetchmailrc
file has permissions greater than this.