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 中增加如下的项来实现:
MYADDR:!bg su user -c fetchmail
如果你正使用 sendmail(如下所示)来为非本地用户传送邮件,则可能需要让 sendmail 在你的 Internet 连接建立时立即传送邮件队列。要完成这项工作,应该把下面的命令放到 /etc/ppp/ppp.linkup 中的 fetchmail 之后:
!bg su user -c "sendmail -q"
在此示例中,假设你在 bsd.home 上有一个 user 用户。在 bsd.home 上的 user 主目录中创建一个 .fetchmailrc 文件:
poll example.net protocol pop3 fetchall pass MySecret
因为包含了密码 MySecret,这个文件应该只有 user 可读。
要使用正确的 from: 头来发送文件,你必须告诉 sendmail 使用 user@example.net 而不是 user@bsd.home 。并通过 relay.example.net 发送所有的邮件,这样可以加快邮件传输速度。
下面的 .mc 应该足够了。
VERSIONID(`bsd.home.mc version 1.0')OSTYPE(bsd4.4)dnlFEATURE(nouucp)dnlMAILER(local)dnlMAILER(smtp)dnlCwlocalhostCwbsd.homeMASQUERADE_AS(`example.net')dnlFEATURE(allmasquerade)dnlFEATURE(masquerade_envelope)dnlFEATURE(nocanonify)dnlFEATURE(nodns)dnldefine(`SMART_HOST', `relay.example.net')Dmbsd.homedefine(`confDOMAIN_NAME',`bsd.home')dnldefine(`confDELIVERY_MODE',`deferred')dnl
有关如何将该文件转换为 sendmail.cf 格式的详细信息,请参考前面的章节。另外,在更新 sendmail.cf 文件后,不要忘记重启 sendmail 。
