29.8.在拨号连接中使用邮件

如果你有静态的 IP 地址,就应该不用修改任何默认的配置。将主机名设置为分配给你的 Internet 名称,其他的事情 sendmail 都会替你做好。

如果你的 IP 地址是动态分配的,并使用 PPP 连接拨入 Internet,则你可能会从 ISP 的邮件服务器上得到一个信箱。这里我们假设你的 ISP 的域名是 example.net,你的用户名是 user,你把自己的机器称作 bsd.home,而你的 ISP 告诉你可以使用 relay.example.net 来转发邮件。

为了从邮箱收取邮件,需从 Ports 安装一个收信代理。mail/fetchmail 是一个能够支持许多种不同协议的不错的选择。如果你使用用户 PPP,你还可以在 Internet 连接建立时自动地抓取邮件,这可以通过在 /etc/ppp/ppp.linkup 中增加如下的项来实现:

  1. MYADDR:
  2. !bg su user -c fetchmail

如果你正使用 sendmail(如下所示)来为非本地用户传送邮件,则可能需要让 sendmail 在你的 Internet 连接建立时立即传送邮件队列。要完成这项工作,应该把下面的命令放到 /etc/ppp/ppp.linkup 中的 fetchmail 之后:

  1. !bg su user -c "sendmail -q"

在此示例中,假设你在 bsd.home 上有一个 user 用户。在 bsd.home 上的 user 主目录中创建一个 .fetchmailrc 文件:

  1. poll example.net protocol pop3 fetchall pass MySecret

因为包含了密码 MySecret,这个文件应该只有 user 可读。

要使用正确的 from: 头来发送文件,你必须告诉 sendmail 使用 user@example.net 而不是 user@bsd.home 。并通过 relay.example.net 发送所有的邮件,这样可以加快邮件传输速度。

下面的 .mc 应该足够了。

  1. VERSIONID(`bsd.home.mc version 1.0')
  2. OSTYPE(bsd4.4)dnl
  3. FEATURE(nouucp)dnl
  4. MAILER(local)dnl
  5. MAILER(smtp)dnl
  6. Cwlocalhost
  7. Cwbsd.home
  8. MASQUERADE_AS(`example.net')dnl
  9. FEATURE(allmasquerade)dnl
  10. FEATURE(masquerade_envelope)dnl
  11. FEATURE(nocanonify)dnl
  12. FEATURE(nodns)dnl
  13. define(`SMART_HOST', `relay.example.net')
  14. Dmbsd.home
  15. define(`confDOMAIN_NAME',`bsd.home')dnl
  16. define(`confDELIVERY_MODE',`deferred')dnl

有关如何将该文件转换为 sendmail.cf 格式的详细信息,请参考前面的章节。另外,在更新 sendmail.cf 文件后,不要忘记重启 sendmail