Introduction to Fetchmail

The Fetchmail package contains a mail retrieval program. It retrieves mail from remote mail servers and forwards it to the local (client) machine's delivery system, so it can then be read by normal mail user agents.

This package is known to build and work properly using an LFS 12.1 platform.

Package Information

Fetchmail Dependencies



MIT Kerberos V5-1.21.2 and libgssapi

Optional (for running fetchmailconf)

Python-3.12.2, built after Tk-8.6.13, with the py-future package

Installation of Fetchmail

Create a dedicated user for the fetchmail program. Issue the following commands as the root user:

useradd -c "Fetchmail User" -d /dev/null -g nogroup \
        -s /bin/false -u 38 fetchmail

Install Fetchmail by running the following commands:

PYTHON=python3 \
./configure --prefix=/usr \
            --enable-fallback=procmail &&

To test the results, issue: make check.

Now, as the root user:

make install                                  &&
chown -v fetchmail:nogroup /usr/bin/fetchmail

Command Explanations

PYTHON=python3: a version of Python is required, but only used to install a module to allow fetchmailconf to be run. That module is unmaintained and should not be used.

--enable-fallback=procmail: This tells Fetchmail to hand incoming mail to Procmail for delivery, if the port 25 mail server is not present or not responding.

Configuring Fetchmail

Config Files


Configuration Information



If you are connecting to a mailserver that supports SSL/TLS-wrapped or "implicit" mode on a dedicated port (default 993) you should use fetchmail --ssl or add the option 'ssl' in an rcfile.

cat > ~/.fetchmailrc << "EOF"

# The logfile needs to exist when fetchmail is invoked, otherwise it will
# dump the details to the screen. As with all logs, you will need to rotate
# or clear it from time to time.
set logfile fetchmail.log
set no bouncemail
# You probably want to set your local username as the postmaster
set postmaster <username>

    user <isp_username> pass <password>;
    mda "/usr/bin/procmail -f %F -d %T";

touch ~/fetchmail.log       &&
chmod -v 0600 ~/.fetchmailrc

This is an example configuration that should suffice for most people. You can add as many users and servers as you need using the same syntax.

man fetchmail: Look for the section near the bottom named CONFIGURATION EXAMPLES. It gives some quick examples. There are countless other configuration options once you get used to it.

If you expect to receive very little mail you can invoke fetchmail when you wish to receive any incoming mail. More commonly, it is either invoked in daemon mode with the -d option either on the command line, or in .fetchmailrc (see 'DAEMON MODE' in man fetchmailconf), or alternatively it is invoked from a cron job.


Installed Programs: fetchmail and fetchmailconf
Installed Libraries: None
Installed Directories: None

Short Descriptions


when executed as a user, this will source ~/.fetchmailrc and download the appropriate mail


is intended to assist you in setting up and editing a ~/.fetchmailrc configuration file, by using a Tk GUI interface. It is written for Python and the Tkinter module but is labelled with a WARNING that it needs to be updated for fetchmail 6.4's SSL options and other recent new options