|This article is available in: English Castellano Deutsch Francais Italiano Nederlands Russian Turkce|
by John Perr
About the author:
Linux user since 1994; he is one of the French editors of LinuxFocus.
This article explains how to configure sendmail and
fetchmail on your local computer connected to the internet via a PPP link.
Such a configuration allows you to use every Unix mail client (not only
Netscape). You can send
and fetch your messages each time you establish a PPP connection.
In order to manage properly mail on your linux box, you have to configure a Mail Transfer Agent (MTA in
short). The most popular (and older) is certainly sendmail but there are others such as qmail which are
faster and simpler to configure, or exim which is included in standard Debian configurations. We shall
stick to sendmail here and use a configuration kit from Berkley University by
To retreive your mail stored on the server of your Internet Service Provider (ISP in short), it will also be necessary to configure fetchmail in order to feed sendmail with the content of your mailboxes. fetchmail is for mail retrieval via pop3 or imap. You can also use uucp but that is a more exotic case not covered by this article.
It is necessary to install the following packages to configure sendmail (rpm format):
Dependent on your distribution you may have slightly different names. The version numbers could also be different. Only the first two packages are really needed.
To actually configure sendmail, follow these steps:
# start of config.mc include(`../m4/cf.m4')dnl OSTYPE(`linux')dnl define(`SMTP_MAILER_FLAGS', `e9')dnl FEATURE(redirect)dnl FEATURE(nocanonify)dnl FEATURE(always_add_domain)dnl FEATURE(local_procmail)dnl GENERICS_DOMAIN(localhost.localdomain localhost localhost) FEATURE(genericstable) FEATURE(masquerade_envelope)dnl define(`confCF_VERSION',`dede's cf - 22/05/98')dnl define(`confCON_EXPENSIVE',`True')dnl define(`confME_TOO',`True')dnl define(`confCOPY_ERRORS_TO',`Postmaster')dnl define(`confDEF_CHAR_SET',`ISO-8859-1')dnl define(`confMIME_FORMAT_ERRORS',`True')dnl define(`SMART_HOST',`smtp8:[smtp.isp.net]')dnl define(`confTO_QUEUEWARN',`24h') MAILER(local) MAILER(smtp) # End of config.mc
dede: firstname.lastname@example.org root: email@example.com news: firstname.lastname@example.org
/etc/aliascontains at least:
MAILER-DAEMON: postmaster postmaster: root
passwd: files shadow: files group: files hosts: files dns services: files networks: files protocols: files rpc: files ethers: files netmasks: files bootparams: files netgroup: publickey: automount: files aliases: files
m4 config.mc > /etc/sendmail.cf
-rw------- 1 root root 26468 mai 12 22:52 /etc/sendmail.cf
/usr/bin/sendmail -bi -oA/etc/genericstable
/etc/genericstable.dbshould have been created
/etc/hostsshould contain a line similar to:
127.0.0.1 localhost.localdomain localhost localhost
kill `head -1 /var/run/sendmail.pid`
/usr/bin/sendmail -bd -os
That's all for sendmail.We now have to check that everything works nicely:
Make a file named test.mail with the following lines:
/usr/bin/sendmail -v dede < test.mail
The following lines should display:
dede... Connecting to local dede... Sent
Run mail or any other mail client (not yet netscape !!) and check that the message has been received
In order to configure Netscape to read local mail (served by sendmail):
Edit/Preferences/Mail & Groups/Mail Servermenu
Outgoing mail (SMTP) server
Mail server type
chmod 1777 /var/spool/mail.
From now on, your own PC is serving mail directly to Netscape even if you are not connected to the Internet. You can of course use other mail clients like XFmail, emacs, mutt, pine etc...
Before we try our new mail server on the Internet, we need to configure fetchmail in
order to tranfert messages stored in your mailboxes of your ISP:
create a file .fetchmailrc in /home/dede:
poll pop.isp.net protocol POP3 user toto is dede password XXXXXXX
where toto and XXXXX are the login and password of your mail account at
pop.isp.net. If you have more than one mailbox, just duplicate the above lines
for each mailbox you have.
The file .fetchmailrc must have permissions set as follow, otherwise fetchmail will refuse to run:
-rw------- 1 dede dede 189 oct 6 21:45 /home/dede/.fetchmailrc
Now, for a test on the Internet:
mailqNext, connect to your ISP (isp.net) and send the message:
sendmail -q flushes the mail queue of sendmail and causes it to send out the
mail now. Wait for a while and type
fetchmail to get your mail,
you should have a message sent back by the mirror. You can now disconnect if all the messages
Once all is setup, we still have to make it work on its own each time a connection is
With PPP, files /etc/ppp/ip-up and ip-down are executed each time you
connect or disconnect. Check that you have a line like this one in these files,
otherwise create it:
[ -x /etc/ppp/ip-down.local ] && /etc/ppp/ip-down.local $*
In /etc/ppp/ip-up you add:
[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local $*
Files /etc/ppp/ip-up and ip-down then lauch files ip-up.local and ip-down.local that we wrtite like this:
#!/bin/bash # /etc/ppp/ip-up.local #Record connection parameters echo `date` $4 $5 ppp-on >> /etc/ppp/history tail -n 1 connect-errors >> /etc/ppp/history # Send waiting mail echo Sending mail... > /dev/console /usr/sbin/sendmail -q echo Mail sent. > /dev/console # Get mail waiting on the pop server echo Getting mail... > /dev/console fetchmail > /dev/console 2>&1 echo Got mail. > /dev/console #End exit 0 # end of /etc/ppp/ip-up.local
In fact, the two important lines are commands sendmail -q and fetchmail. The others are cosmetic and allow:
#!/bin/bash # /etc/ppp/ip-down.local #Record connection parameters echo `date` ppp-off >> /etc/ppp/history #end exit 0 # end of /etc/ppp/ip-down.local
These files are run as
root, so it is necessary to copy the file
.fetchmailrc in the
If you have a permanent access to the Internet, sendmail regularly sends mail if it
has been started as a daemon with the following command:
sendmail -bd -q10m
In order to send your mail every 10 minutes for exemple.
fetchmail can also be lauched in daemon mode with the command:
fetchmail -d 600
In order to retreive your incoming mail every 10 minutes (600 seconds) for instance.
Usually this type of commands are located in the startup (or init) files in
(may vary according to your configuration).
With such a configuration, the outgoing mail waiting in the queue
mailq) is sent. The incoming mail waiting in your mailbox on the
server of your ISP arrives. You can use xbiff or xmailbox or any other similar software
to warn you that you have mail. You can also fine tune the way your mail is sorted and
filtered with procmail. This last step is explained in the
Novembre 1997 article from Angel Lopez.
Webpages maintained by the LinuxFocus Editor team
© John Perr, FDL
Click here to report a fault or send a comment to LinuxFocus
2001-07-14, generated by lfparser version 2.17