31.8.在拨号连接中使用邮件 ========================= 当使用静态 IP 地址时,应该无需调整默认配置。将主机名设置为指定的互联网名称,剩下的就由 Sendmail 来完成。 当使用一个动态分配的 IP 地址和拨号 PPP 连接到互联网时,人们通常在 ISP 的邮件服务器上有一个邮箱。在这个例子中,ISP 的域名是 ``example.net``\ ,用户名是 ``user``\ ,主机名是 ``bsd.home``\ ,ISP 允许 ``relay.example.net`` 作为一个邮件中继。 为了从 ISP 的邮箱中检索邮件,请从 ports 安装检索代理。\ `mail/fetchmail `__ 是一个不错的选择,因为它支持许多不同的协议。通常情况下,ISP 会提供 POP。当使用用户 PPP 时,在 **/etc/ppp/ppp.linkup** 中的以下条目,当互联网连接建立后,可以自动获取电子邮件: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session MYADDR: !bg su user -c fetchmail 当使用 Sendmail 向非本地账户投递邮件时,配置 Sendmail 在互联网连接建立后立即处理邮件队列。要做到这一点,在 **/etc/ppp/ppp.linkup** 中的上述 ``fetchmail`` 条目之后添加这一行: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session !bg su user -c "sendmail -q" 在这个例子中,在 ``bsd.home`` 上有一个 ``user`` 的账户。在 ``bsd.home`` 上的用户的主目录下,创建一个包含这一行的 **.fetchmailrc**\ : .. raw:: latex \diilbookstyleinputcell .. code:: shell-session poll example.net protocol pop3 fetchall pass MySecret 这个文件除了 ``user`` 之外任何人都不能读,因为它包含密码 ``MySecret``\ 。 为了发送带有正确的标头 ``from:`` 的邮件,配置 Sendmail 使用 user@example.net\ ,而非 user@bsd.home\ ,并且通过 ``relay.example.net`` 发送所有的邮件,这样可以更快地传输邮件。 下面的 **.mc** 应该足够了: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl 关于如何将这个文件转换成 **sendmail.cf** 格式的细节,请参考上一节。在更新 **sendmail.cf** 之后,不要忘记重新启动 Sendmail。