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)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
。