Setting up mail on PPP-connected dial-up machines

    ABOUT SETTING UP MAIL ON PPP-CONNECTED DIAL-UP MACHINES OR
            WORKSTATIONS USING A CENTRAL MAIL SYSTEM.
    ==========================================================

    # This howto is distributed in the hope that it will be useful,        #
    # but WITHOUT ANY WARRANTY; without even the implied warranty of       #
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                 #

    This howto is for you if you have a Unix machine that does not have a
    permanent Internet connection but rather uses dial-up PPP to connect to
    your Internet service provider. The problem also affects those using a
    central mail system for a workstation and want the central address to
    show up as the "From:" address in the header. A common problem is how
    to masquerade as your ISP's mailhost to get

    From: me@myispprovider.com

    instead of

    From: me@mylocalPPPmachine.nowhere

    Another problem is how to send and receive mail.

    0.) Fixing MH
    =============
    This section is probably not relevant to use of a central mail system.

    For PPP connections you just need to add two lines to your MH mail
    transport configuration file.  For original MH this file is called
    mtstailor (typically installed in /usr/local/lib/mh).  For nmh it is
    mts.conf (typically installed in /usr/local/nmh/etc).  In either case
    you put in two entries: "localname" defines the machine name used in
    From: lines, "clientname" the machine name used in the SMTP HELO
    header.  (If you don't put a clientname entry then localname gets
    used, which may make your SMTP server unhappy if it tries to verify
    HELO.)

    For example, I have:

    localname:      sss.pgh.pa.us
    clientname:     sss.sss.pgh.pa.us

    If you do step 0 then you probably do not have to setup sendmail masquerading.

    1a.) Setting up sendmail for masquerading
    =========================================

    If you don't use sendmail or Postfix, you're on your own. (See 1b if
    you use Postfix.) If you're using sendmail, all you need to do is to
    replace your /etc/sendmail.cf with a new sendmail.cf that you generate
    using the m4 files that come with any (newer) sendmail source
    distribution.

    In that distribution you'll find directories ./cf/cf, ./cf/domain,
    ../cf/feature, ... You first have to create an m4 config file for your
    host. The file ./cf/README explains how to do that. If you don't want to
    read it, here is a quick start with an m4 config file (myhost.mc) that
    should be appropriate in most cases (if you don't use procmail, delete
    the lines regarding procmail; BTW, redhat 4.2 uses procmail):

    # myhost.mc
    VERSIONID(`Put here some free text describing the version of this config file')
    OSTYPE(linux)
    DOMAIN(generic)
    define(`SMART_HOST', `myispmailhost.com')dnl
    FEATURE(masquerade_envelope)
    MASQUERADE_AS(myispdomain)
    define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
    define(`confCOPY_ERRORS_TO',`mylocalloginname')dnl
    FEATURE(nouucp)
    FEATURE(local_procmail)
    MAILER(local)
    MAILER(smtp)
    MAILER(procmail)

    In many cases, myispmailhost.com and myispdomain are the same:

    Myispmailhost is the host that accepts SMTP connections on TCP port 25
    and acts as a mail relay to the outer world (smart host). Very often
    the name of a PPP connected machine does not have a valid entry in
    DNS (domain name service), i.e. other machines that try to determine
    your IP address using your hostname will get an error. Some domains
    (notably AOL) won't accept mail from your host if they get such an
    error. Therefore, you need to use a mail relay since otherwise you won't
    be able to send mail to such domains. If you did not get the address of
    a mail relay from your ISP provider, the best bet is to use the same
    host that you were told to use as your POP server.

    Myispdomain is what you want to see in your "From:" lines. For example,
    if you choose

    MASQUERADE_AS(isp.nowhere.com)

    your "From:" lines will appear as

    From: loginname@isp.nowhere.com

    although the name of your PPP connected Unix machine is completely different.

    After editing myhost.mc, put the file into ./cf/cf. Then cd to ./cf, call

    m4 m4/cf.m4 cf/myhost.mc > sendmail.cf
    su
    cp sendmail.cf /etc
    touch /etc/sendmail.cw

    and restart sendmail. That's all.

    1b.) Setting up postfix for masquerading
    ========================================

    You will need to edit the postfix main.cf file often found in
    /usr/local/etc/postfix. No other file needs adjustment.

    In the section titles "ADDRESS REWRITING", add the lines:
    masquerade_domains = $mydomain
    masquerade_exceptions = root,mailer-daemon
    You may add any other accounts for which you do not want
    masquerading to querade_exceptions.

    Normally you will not want to set both mail_origin and masquerade_domains
    as they will be processed sequntially and masquerade_exceptions will
    be lost.

    You can find more information on these changes in sample-rewrite.cf.

    2.) Setting up fetchmail
    ========================

    Fetchmail is very good at downloading mail from your mailbox at your ISP
    using POP3 (post office protocol version 3).

    First get and install fetchmail (for example, from any sunsite
    mirror). Configuring fetchmail means basically editing a file
    ~/.fetchmailrc. Here is my ~/.fetchmailrc:

    -------------------------------------------------------------------
    poll sirius.physik.TU-Berlin.DE protocol pop3:
    	user henrik there has password ********, is henrik here;
    -------------------------------------------------------------------

    Replace "sirius..." with the name of your POP server (your ISP should
    have told you which server to use). Of course, you have to change the
    login names and the password.

    Don't forget to set the file permissions to 600 using "chmod 600
    ~/.fetchmailrc" (otherwise other users can read your password).

    3.) Automatically sending the sendmail queue and fetching mail at dial-up
    ========================================================================

    If you're sending mail while not being connected to the Internet,
    sendmail will append this mail to the mail queue. To automatically send
    all mail in the queue whenever you connect to the net using PPP, add
    this line to your /etc/ppp/ip-up:

      PATH=$PATH:/usr/sbin:/sbin
      export PATH
      sendmail -q

    You probably want to fetch all your new mail whenever you connect,
    so add this to /etc/ppp/ip-up (will fetch your mail on startup and
    afterwards in intervals of 300 seconds):

      su -c 'fetchmail --daemon 300 --syslog;' henrik

    (replace "henrik" with your local login name)

    and add this to /etc/ppp/ip-down to automatically kill the fetchmail
    daemon when you disconnect:

      PATH=$PATH:/usr/sbin:/sbin
      export PATH
      su -c "fetchmail --quit" henrik

    That's all.

    ---------------------------------------------------------------------
    Henrik Seidel, http://satchmo.physik.tu-berlin.de/~henrik/
    TU Berlin, Inst. f. Theor. Physik, Sekr. PN 7-1, Hardenbergstr. 36
    10623 Berlin, GERMANY, tel: +49-30-314-23000 fax: +49-30-314-21130
    use "finger henrik@satchmo.physik.tu-berlin.de" to get my public pgp key
    ---------------------------------------------------------------------