Original in fr John Perr
fr to en:John Perr
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
Eric Allman.
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:
/usr/lib/sendmail-cf/cf/config.mc
which contains:
# 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 |
/etc/genericstable
:
dede: toto@isp.net root: toto@isp.net news: toto@isp.net |
/etc/alias
contains at least:
MAILER-DAEMON: postmaster postmaster: root |
/etc/nsswitch.conf
as follow:
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 |
/etc/sendmail.cf
with:
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.db
should have been created
newaliases
/etc/hosts
should 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:
Subject: test local
(compulsory blank line)
|
/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 Server
menu
localhost.localdomain
as Outgoing mail (SMTP) server
movemail/built-in
as Mail server type
/var/spool/mail
with
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:
mailq
Next, connect to your ISP (isp.net) and send the message:
/usr/bin/sendmail -q
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
have arrived.
Once all is setup, we still have to make it work on its own each time a connection is
established.
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 /root
folder.
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
the directory /etc/rc
or /etc/rc.d/
(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.