⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6.html

📁 网上一个牛人整理的关于linux内核编译
💻 HTML
📖 第 1 页 / 共 5 页
字号:
/usr/lib/sendmail –bd –q1h<p>
  命令选项-bd是使sendmail运行在daemon模式下。命令选项-q1h是让sendmail每小时唤醒一次,处理队列。


<center><A HREF="#Content">[目录]</A></center>
<hr><br><A NAME="I736" ID="I736"></A><center><b><font size=+2>如何运行sendmail</font></b></center><br>
2.如何运行sendmail<p>
  一种运行sendmail的方法是,直接在命令行上附加接收者参数。例如:下面命令就是发一个邮件消息给george。<p>
% /usr/lib/sendmail george<p>
  你也可以同时给出多个接收者。例如,发一个邮件给george,truman和teddy:<p>
% /usr/lib/sendmail george,truman,teddy<p>
  sendmail程序可以接受两种不同的命令行参数。不以“-”字符开始的参数是接收者,如上面的george。而以“-”字符开始的参数则是影响sendmail运行的开发选项。所有的命令行开关选项的解释,<p>
  标记&nbsp;&nbsp; 说明<br>
&nbsp;&nbsp;&nbsp; -b&nbsp;&nbsp; 设置运行模式<br>
&nbsp;&nbsp;&nbsp; -v&nbsp;&nbsp; 运行于冗长模式<br>
&nbsp;&nbsp;&nbsp; -d&nbsp;&nbsp; 运行于调试模式<p>
<br>
2.1适宜的模式(-b)<p>
  sendmail程序的“-b”参数可以衍生出许多功能。例如:使sendmail显示队列的内容,使sendmail重建别名数据库。本章将介绍一些比较常用到的子参数。<p>
  格式&nbsp;&nbsp; 说明<br>
&nbsp;&nbsp;&nbsp; -ba&nbsp;&nbsp; 使用ARPAnet(灰皮书书)协议<br>
&nbsp;&nbsp;&nbsp; -bD&nbsp;&nbsp; 以守候进程模式运行,但不fork<br>
&nbsp;&nbsp;&nbsp; -bd&nbsp;&nbsp; 以守候进程模式运行<br>
&nbsp;&nbsp;&nbsp; -bH&nbsp;&nbsp; 清除固有的主机状态<br>
&nbsp;&nbsp;&nbsp; -bh&nbsp;&nbsp; 打印固有的主机状态<br>
&nbsp;&nbsp;&nbsp; -bi&nbsp;&nbsp; 重建别名数据库<br>
&nbsp;&nbsp;&nbsp; -bm&nbsp;&nbsp; 成为一个邮件发送者<br>
&nbsp;&nbsp;&nbsp; -bp&nbsp;&nbsp; 打印邮件队列内容<br>
&nbsp;&nbsp;&nbsp; -bs&nbsp;&nbsp; 在标准输入处运行SMTP<br>
&nbsp;&nbsp;&nbsp; -bt&nbsp;&nbsp; 测试模式:仅解析地址<br>
&nbsp;&nbsp;&nbsp; -bv&nbsp;&nbsp; 检验:不收集、分发<br>
&nbsp;&nbsp;&nbsp; -bz&nbsp;&nbsp; 冻结配置文件<p>
  选项可以使sendmail执行时象其它名字。每个名字可以是一个硬连接,一个符号连接,或sendmail的一份拷贝。<p>
hoststat -bh 打印固有主机状态<br>
mailq -bp 显示邮件队列内容<br>
newaliases -bi 重建别名数据库<br>
purgestat -bH 清除固有主机状态<br>
smtpd -bd 以守侯进程运行<p>
2.1.1 守候进程模式 (-bd)<p>
  sendmail程序能够在后台以守侯进程模式运行,监听来自其它机器的邮件。Sendmail当第一次以守侯进程模式运行时,程序只读取配置文件一次,然后就一直运行,不再读取配置文件了。也就是说,执行后将不会发现配置文件的变化。<p>
  当你对配置文件sendmail.cf做了任何修改,都需要kill掉sendmail进程,然后重新启动它。但当你kill掉这个守候进程前,必须知道如何正确地重新启动它。这些信息是/etc/sendmail/pid或一个系统rc文件。<p>
  在BSD系列的UNIX系统,守候进程通常使用以下命令启动:<p>
/usr/lib/sendmail –bd –q1h<p>
  命令行开关选项“-bd”指定sendmail以守候进程方式运行。“-q”选项告诉sendmail多久去查看一次待处理邮件队列。“-q1h”就是将其设置为1小时。<p>
  在你的机器上启动sendmail的命令,可能与我们这儿给出的是不同的。如果你管理许多不同的UNIX系统,你无须知道每一种是如何运行的。<p>
2.1.1.1 kill并重启sendmail v8.7<p>
  在sendmail 8.7以后的版本中,kill并重启sendmail变得比较简单。一个单一的命令将会完成这一工作:<p>
% kill –HUP `head –1 /etc/sendmail.pid`<p>
<br>
  这个单一的命令与下一个小节中的两个命令的效果完全相同。<p>
2.1.1.2 kill并重启sendmail v8.6<p>
  当你要以守候进程方式启动sendmail,你须确认没有一个已运行的sendmail守候进程。在8.6版sendmail中,可以在/etc/sendmail.pid文件的第一行中找到进程ID号pid。你可以执行以下命令来kill掉sendmail:<p>
% kill `head –1 /etc/sendmail.pid`<p>
  当你kill掉当前运行的守候进程,你可以使用以下命令来重新运行sendmail:<p>
% `tail –1 /etc/sendmail.pid`<p>
2.1.1.3 kill并重启老版本sendmail<p>
  在老版本的sendmail中,你必须使用ps来获得sendmail的进程ID号pid。在BSD UNIX和System V UNIX使用ps的方法不尽相同。<p>
  针对BSD UNIX来说,ps命令的将得到类似以下的输出:<p>
% ps ax | grep sendmail | grep –v grep<br>
&nbsp;&nbsp; 99&nbsp; ?&nbsp; IN&nbsp; 0:07&nbsp; /usr/lib/sendmail -bd –q1h<br>
% kill 99<p>
  这个输出的最左边的就是进程ID号。<p>
  针对System V UNIX系统来说,ps命令的参数及命令输出都不尽相同:<p>
<br>
% ps ae | grep sendmail<br>
&nbsp;&nbsp; 99&nbsp; ?0:01 sendmail<br>
% kill 99<p>
<p>
  在老版本的sendmail中,你必须通过查看rc文件来获知如何重启sendmail。<p>
2.1.1.4 如果你忘记了kill守候进程<p>
  如果你在重启sendmail时,忘了kill掉原来的进程的话,你就会看到类似以下列出的错误消息,每5秒显示一次。<p>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Getrequests: cannot bind: Addredd already in use<br>
Opendaemonsocket: Server SMTP socket wedged:exiting<p>
2.1.2 显示邮件队列模式 (-bp)<p>
  sendmail程序能够显示邮件队列的内容。可以通过两种方法实现:一种是运行mailq,另一种是运行带开关选项“-bp”的sendmail。无论你使用哪种方法,邮件队列将会显示出来。如果这个队列是空的,sendmail将打印出:<p>
Mail queue is empty<p>
  如果有一个邮件正在等待队列中,那么将输出更多的消息,其中包含类似于下列的信息:<p>
)&nbsp;&nbsp; Mail Queue (1 requests)<br>
--Q-ID---&nbsp;&nbsp; --Size--&nbsp;&nbsp; ----Q-Time<br>
-------------------Sender/Recipient-------------------<br>
GAA29775*&nbsp;&nbsp; 702&nbsp;&nbsp; Thu Mar 12 16:51&lt;you@here.us.edu&gt;<br>
&nbsp;&nbsp; Deferred:Host fbi.dc.gov is down<br>
&nbsp; &lt;george@fbi.dc.gov&gt;<p>
  在此,带开关选项“-bp”的sendmail显示了仅有一个邮件信息在队列中。如果有多个,那么每一个邮件都会像这样列出来。每一个至少有两行输出。<p>
  第一行显示邮件和发送者的细节信息。GAA29775是这个邮件在队列中的标记。“*”号则代表由于这个邮件正在被处理,所以已被锁定。“702”是邮件体的字节数。这里的时间则是邮件被放入队列的时间。地址则显示了发送者的名字。<p>
  第二行则可能显示出错的原因,这个邮件就是因为暂时无法分发,所以才暂存在队列中的。<p>
  第三行则可能显示接收者地址。<p>
  如果你想更完整、清楚地了解这里的输出,参见第23章:队列。<p>
2.1.3 重建别名库模式 (-bi)<p>
  由于sendmail有可能需要在存放上千条别名记录的aliases文件中寻找别名,为了提高效率,可以使用dbm或db格式来存储。使用这种数据库格式来存储将大大提高检索速度。<p>
  尽管sendmail可以在aliases文件改变时自动更新数据库,但它并不总能及时完成。你可以通过运行newaliases命令或带“-bi”开关选项的sendmail来完成,以下这两个命令是相同的:<p>
% newaliases<br>
% /usr/lib/sendmail -bi<p>
  稍过一会儿,将显示出统计信息:<p>
/etc/aliases: 859 aliases, longest 615 bytes, 28096 bytes total<p>
<br>
  这一行表示数据库已成功重建。从8.6版以后,就可以存在多个别名文件,所以每一行都是以别名文件名开始的。然后是显示处理了的别名,最大的一项的长度,总长度, 同时有多少个出错也会显示出来。<p>
  关于aliases文件更详细的信息,参见第24章:别名。<p>
2.1.4 校验模式 (-bv)<p>
  带开关选项“-bv”的sendmail是一个简单方便的检查别名的工具。它能够在别名中递归地查找,并显示出最终的用户名称。<p>
  假设aliases文件中有如下别名设置:<p>
animals:&nbsp; farmanimals, wildanimals<br>
bill-eats:&nbsp; redmeat<br>
birds:&nbsp; farmbirds, wildbirds<br>
bob-eats:&nbsp; seafood,whitemeat<br>
farmanimals:&nbsp; pig, cow<br>
farmbirds:&nbsp; chicken, turkey<br>
fish:&nbsp; cod, tuna<br>
redmeat:&nbsp; animals<br>
seafood:&nbsp; fish,shellfish<br>
shellfish:&nbsp; crab, lobster<br>
ted-eats:&nbsp; bob-eats, bill-eats<br>
whitemeat:&nbsp; birds<br>
wildanimals:&nbsp; deer, boar<br>
wildbirds:&nbsp; quail<p>
  虽然你也可以通过演算得知ted-eats最终的用户名称,但远不如使用sendmail来帮你完成那样方便。使用sendmail也将更加准确,而且对于很大很复杂的aliases文件来说,更加显得重要。<p>
  另外,sendmail –bv还有一个附加的功能,那就是可以检验别名是否真的可分发。假设在aliases文件中包含以下一行:<p>
root:&nbsp; fred, larry<p>
  假定fred是一个拥有本地机器帐户的系统管理员,但用户larry已经离开,帐号已经被删除。你可以运行sendmail –bv检查所有的用户是否有效:<p>
% /usr/lib/sendmail –bv root<p>
  这个命令将在aliases文件检查root用户,由于larry不存在,输出将会如下所示:<p>
larry … User unknow<br>
fred … deliverable: mailer local, user fred<p>
2.2冗长模式(-v)<p>
  命令行开关选项“-v”,将使sendmail运行在冗长(verbose)模式下。在这个模式下,sendmail将会打印出转发邮件的每一步的详细说明。为了观察运行在冗长模式下sendmail的运行情况,可以执行:<p>
% /usr/lib/sendmail –v you &lt; sendstuff<p>
  邮件传送在本地进行,输出如下所示:<p>
you …&nbsp; Connecting to loca…<br>
you …&nbsp; Sent<p>
  当sendmail通过TCP/IP网络传送邮件到其它机器,它将使用一个叫SMTP(简单邮件传输协议)。为了观察使用SMTP的情况,我们再次运行sendmail程序,但这次,我们使用一个不在本地的E-mail地址代替“you”:<p>
% /usr/lib/sendmail –v you@remote.domain &lt; sendstuff<p>
  这个命令的输出看起来类似:<p>
you@remote.domain … Connecting to remote.domain via smtp …<br>
220-remote.Domain Sendmail 8.6.12/8.5 ready at<br>
Fri, 13 Dec 1996 06:36:12 –0800<br>
220 ESMTP spoken here<br>
&gt;&gt;&gt; EHLO here.us.edu<br>
250-remote.domain Hello here.us.edu,pleased to meet you<br>
250-EXPN<br>
250-SIZE<br>
250 HELP<br>
&gt;&gt;&gt; MAIL From:&lt;you@here.us.edu&gt;<br>
250 &lt;you@here.us.edu&gt; … Sender ok<br>
&gt;&gt;&gt; RCPT To:&lt;you@remote.domain&gt;<br>
250 &lt;you@remote.domain&gt; … Recipient ok<br>
&gt;&gt;&gt; DATA<br>
354 Enter mail, end with “.” on a line by itself<br>
&gt;&gt;&gt; .<br>
250 GAA20115 Message accepted for delivery<br>
you@remote.domain … Sent (GAA20115 Message accepted for delivery)<br>
Closing connection to remote.domain<br>
&gt;&gt;&gt; QUIT<br>
221 remote.domain closing connection<p>
  以数字开头的行和以字符串“&lt;&lt;&lt;”开头的行组成了SMTP的会话过程。我们马上说谈论一下它们。其它行显示本地sendmail尝试做的操作和成功完成的操作:<p>
you@remote.domain … Connecting to remote.domain via smtp …<br>
…<br>
you@remote.domain … Sent (GAA20115 Message accepted for delivery)<br>
Closing connection to remote.domain<p>
  第一行显示使用网络发送信件到远程主机remote.domain上。最后两行显示邮件已经发送成功。<p>
  在SMTP会话中,以“&lt;&lt;&lt;”开始的行显示本地机器对远程机器的交谈。而来自远程机器的应答行则以数字开始的行。现在我们来看一下会话过程。<p>
<br>
220-remote.Domain Sendmail 8.6.12/8.5 ready at<br>
Fri, 13 Dec 1996 06:36:12 –0800<br>
220 ESMTP spoken here<p>
  一旦sendmail与远程机器连接上后,sendmail就等待远程机器初始化会话。远程机器说它准备好发送,详细的主机名。如果远程主机也运行了sendmail,也将说sendmail的名字与版本。还有就是日期与时间。<p>
  第二行也以220开始,“ESMTP spoken here”的含义是远程站点能够使用扩展的SMTP协议。如果远程机器跑的sendmail是8.7或以上版本,ESMTP将可能会出现在第一行。<p>
  如果sendmail等待接收这个初始化信息太久,就会打印“Connection timed out”信息,并将这个邮件放入邮件队列中。<p>
  接着,本地sendmail发送EHLO(以&gt;&gt;&gt;开始),传送扩展的HELLO信息,和本地主机名:<p>
&gt;&gt;&gt; EHLO here.us.edu<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -