29.9. 拨号连接时使用邮件传送

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

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

为了从邮箱收取邮件, 需要安装一个收信代理。 fetchmail 是一个能够支持许多种不同协议的不错的选择。 这个程序可以通过 package 或 Ports Collection (mail/fetchmail) 来安装。 通常, 您的 ISP 会提供 POP。 如果您使用用户 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 使用 而不是i 。 另外, 您可能也需要要求 sendmail 通过 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

如何转换这个 .mc 文件到 sendmail.cf 文件的细节,请参考前面的章节。 另外,在更新 sendmail.cf 文件后, 不要忘记重启 sendmail

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.