文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>sendmail学习笔记1

sendmail学习笔记1

时间:2005-12-29  来源:rickyweiwei

 sendmail 的任务是从邮件用户代理 (MUA) 接收邮件然后根据配置文件的定义把它们送给配置好的的寄送程序。 sendmail 也能接受网络连接,并且发送邮件到本地邮箱或者发送它到其它程序。

一、sendmail宏定义说明

divert(n)                                     为m4定义一个缓冲动作,当n=-1时缓冲被删除,n=0时开始一个新缓冲

OSTYPE                                     定义宏所使用的操作系统,该宏允许m4程序增加同相关操作系统相关的文件

Domain                                       定义MTA将使用哪些域来传输邮件

Feature                                        定义配置文件中使用的一个特定的功能集

Define                                          定义配置文件中的一个特定的选项值

MASQUERADE_AS                定义sendmail来应答邮件的其它主机名

MAILER                                     定义sendmail使用的邮件传输方法

dnl                                                注释

二、sendmail 使用下列配置文件:

文件名 功能
/etc/mail/access  sendmail 访问数据库文件
/etc/mail/aliases  邮箱别名
/etc/mail/local-host-names  sendmail 接收邮件主机列表
/etc/mail/mailer.conf  邮寄配置程序
/etc/mail/mailertable  邮件分发列表
/etc/mail/sendmail.cf  sendmail的主配置文件
/etc/mail/virtusertable  虚拟用户和域列表

三、/etc/mail/access
  访问数据库定义了什么主机或者 IP 地址可以访问本地邮件服务器和它们是哪种类型的访问。主机可能会列出 OK、 REJECT、RELAY 或者简单的通过 sendmail 的出错处理程序检测一个给定的邮件错误。 主机默认列出 OK,允许传送邮件到主机, 只要邮件的最后目的地是本地主机。列出 REJECT 将拒绝所有的邮件连接。如果带有 RELAY 选项的主机将被允许通过这个邮件服务器发送邮件到任何地方。

例 1. 配置 sendmail 的访问许可数据库
cyberspammer.com                550 We do not accept mail from spammers
FREE.STEALTH.MAILER@            550 We do not accept mail from spammers
another.source.of.spam          REJECT
okay.cyberspammer.com           OK
128.32                          RELAY
  在上面的例子中我们有 5 条记录。 与左边列表匹配的发件人受到右边列表动作的影响。前边的两个例子给出了 sendmail 的出错处理程序检测到的错误代码。当一个邮件与左边列表相匹配时,这个信息会被打印到远程主机上。 下一条记录拒绝来自 Internet 上的一个特别主机的邮件 another.source.of.spam。接下来的记录允许来自 okay.cyberspammer.com 的邮件连接, 这条记录比上面那行 cyberspammer.com 更准确。更多的准确匹配使不准确的匹配无效。最后一行允许电子邮件从主机和 128.32 开头的 IP 地址转发。这些主机将被允许通过这台邮件服务器前往其它邮件服务器发送邮件。
  当这个文件被升级的时候,您必须在 /etc/mail/ 运行 make 升级数据库。
      # makemap hash access.db < access

四、 /etc/mail/aliases
  别名数据库包含一个扩展到用户,程序或者其它别名的虚拟邮箱列表。 下面是一些在 /etc/mail/aliases 中使用的例子;例2. 邮件别名:
root: localuser
ftp-bugs: joe,eric,paul
bit.bucket:  /dev/null
procmail: "|/usr/local/bin/procmail"
  这个文件的格式很简单; 冒号左边的邮箱名, 会被展开成右边的形式。第一个例子简单地将 root 邮箱扩展为 localuser, 之后将继续在别名数据库中进行查找。如果没有找到匹配的记录, 则邮件会被发给本地用户 localuser。第二个例子展示了一个邮件列表。 发送到 ftp-bugs 的邮件会被展开成 joe, eric 和 paul 这三个邮箱。 注意也可以通过 <[email protected]> 这样的形式来指定远程的邮箱。接下来的例子展示了如何把邮件写入到文件中, 这个例子中是 /dev/null。 最后一个例子展示了如何将邮件发给一个程序,具体而言是通过 UNIX® 管道发到 /usr/local/bin/procmail 的标准输入。

  更新此文件时, 您需要在 /etc/mail/ 中使用 make 来更新数据库。
      # newaliases 

五、 /etc/mail/local-host-names
  这是一个被接受为一个本地主机名的主机名列表。 可以放入任何 sendmail 将从那里收发邮件的域名或主机。例如,如果这个邮件服务器从域 example.com 和主机 mail.example.com 接收邮件,它的 local-host-names 文件,可以看起来象如下这样:
example.com
mail.example.com
  当这个文件被升级,sendmail(8) 必须重新启动,以便更新设置。

六、/etc/mail/sendmail.cf
  sendmail的主配置文件 sendmail.cf 控制着 sendmail 的所有行为,包括从重写邮件地址到拒绝远程邮件服务器信息等所有事。当然,作为一个不同的角色,这个配置文件是相当复杂的,它的细节部分已经超出了本节的范围。

  # m4 sendmail.mc > sendmail.cf当这个文件被修改时, sendmail 必须重新启动以便对新修改生效。

七、/etc/mail/virtusertable
  virtusertable 映射虚拟域名和邮箱到真实的邮箱。这些邮箱可以是本地的、远程的、/etc/mail/aliases 中定义的别名或一个文件。

例 23-3. 虚拟域邮件映射的例子

[email protected]                root
[email protected]          [email protected]
@example.com                    joe
  在上面这个例子中, 我们映射了一个域 example.com。这个文件是按照从上到下, 首个匹配的方式来处理的。 第一项将 <[email protected]> 映射到本地邮箱 root。 下一项则将 <[email protected]> 映射到位于 noc.example.net 的 postmaster。 最后,如果没有来自 example.com 的匹配, 则将使用最后一条映射,它表示将所有的其它邮件发给 example.com 域的某个人。 这样,将映射到本地信箱 joe。

八、 mail 邮件用户代理 (MUA)。

用户保存在 /var/mail 中的信箱的内容会被 mail 程序自动地读取。 如果信箱是空的,程序会退出并给出一个消息表示没有邮件。 一旦读完了信箱, 将启动应用程序的界面,并列出邮件。 所有的邮件会被自动编号, 类似下面的样子:

Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/marcs": 3 messages 3 new
>N  1 root@localhost        Mon Mar  8 14:05  14/510   "test"
 现在, 您通过使用 mail 的 t 命令,并给出邮件的编号, 就可以看到邮件了。 在这个例子中, 我们将阅读第一封邮件:
& t 1
Message 1:
From root@localhost  Mon Mar  8 14:05:52 2004
X-Original-To: marcs@localhost
Delivered-To: marcs@localhost
To: marcs@localhost
Subject: test
Date: Mon,  8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)

This is a test message, please reply if you receive it.
  正如在上面的例子中所看到的, t 键将显示完整的邮件头。要再次查看邮件的列表, 可以使用 h 键。

  如果需要回复邮件, 也可以使用 mail 来完成, 方法是使用 R 或 r 这两个 mail键。 R 键会要求 mail 只回复发送邮件的人, 而 r 不仅回复发送邮件的人, 而且也会将回复抄送给原来邮件的其他接收者。如果需要, 也可以在这些命令后面指定邮件的编号。 做完这些之后, 就可以输入回复了,在邮件的最后应该有一个只有一个 . 的行, 例如:

& R 1
To: root@localhost
Subject: Re: test

Thank you, I did get your email.
.
EOT
  要发出新邮件, 可以使用 m, 后面接收件人的邮件地址。多个收件人之间, 应该使用 , 隔开。 接下来需要输入邮件的主题,然后是正文。 同样的, 在邮件最后需要一个只有 . 的空行表示结束。

& mail root@localhost
Subject: I mastered mail

Now I can send and receive email using mail ... :)
.
EOT
  在 mail 工具中, 可以用 ? 来显示帮助,
九、SMTP 验证
    SMTP 验证的邮件服务器上启用 SMTP 验证有很多好处。 SMTP 验证可以让 sendmail 多一重安全保障, 而且也使得使用不同机器的漫游用户能够使用同一个邮件服务器,而不需要每次都修改它们的邮件客户端配置。

十、邮件用户代理

mutt 是一个短小精悍的邮件用户代理
pine 主要是针对初学者设计的,但也提供了一些高级功能。
fetchmail 是一个全功能的 IMAP 和 POP 客户程序,它允许用户自动地从远程的 IMAP 和 POP 服务器上下载邮件, 并保存到本地的信箱中; 这样,访问这些邮件就变得更方便了
另外, fetchmail 也可以通过指定 -d 参数, 并给出 fetchmail 在轮询 .fetchmailrc 文件中列出的服务器的时间间隔,来以服务程序的方式运行。 下面的例子会让 fetchmail 每 60 秒轮询一次:   # fetchmail -d 60 

procmail 是一个强大得惊人的过滤进入邮件的应用程序。它允许用户定义 “规则”, 并用这些规则来匹配进入的邮件, 进而执行某些特定的功能,或将这些邮件转发到其他信箱和/或邮件地址。

mail: 用户邮件目录 /var/spool/mail/$USER, 变量: $MAIL 
用户转发文件 $HOME/.forward 
elm: 菜单驱动 

pine: 字符界面的全屏幕操作MUA,应用较为广泛,功能较elm强大。 

Netscape Mail 
Microsoft Outlook Express 

相关阅读 更多 +
排行榜 更多 +
我是班长去广告版下载

我是班长去广告版下载

模拟经营 下载
什么鸭小游戏安卓版下载

什么鸭小游戏安卓版下载

策略塔防 下载
极光影院官方最新版本2025下载

极光影院官方最新版本2025下载

趣味娱乐 下载