22.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 在连接网络后马上处理邮件进程队列,它在 /etc/ppp/ppp.linkup 文件执行 fetchmail 命令。

  !bg su user -c "sendmail -q"

假设您有一个 user 帐户,在 bsd.home机器上。在 bsd.home 机器上的 user 目录里建立一个 .fetchmailrc文件:

poll example.net protocol pop3 fetchall pass MySecret

这个文件除了 user 外不应该被任何人读取, 因为它包含了 MySecret 这个密码。

为了在发信时有正确的抬头 from:,您必须告诉 sendmail 使用 [email protected] 而非 [email protected]。您可能会希望告诉 sendmailrelay.example.net 发送所有邮件,加快邮件的传送。

以下的 .mc 文件应该可以满足您的需求:

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

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