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

📄 1382.html

📁 著名的linux英雄站点的文档打包
💻 HTML
📖 第 1 页 / 共 5 页
字号:
  第二行也以220开始,“ESMTP spoken here”的含义是远程站点能够使用扩展的SMTP协议。如果远程机器跑的sendmail是8.7或以上版本,ESMTP将可能会出现在第一行。<br>
<br>
  如果sendmail等待接收这个初始化信息太久,就会打印“Connection timed out”信息,并将这个邮件放入邮件队列中。<br>
<br>
  接着,本地sendmail发送EHLO(以&gt;&gt;&gt;开始),传送扩展的HELLO信息,和本地主机名:<br>
<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>
<br>
  在EHLO中的E说明本地sendmail也是使用ESMTP的。远程主机以250开始的回执ESMTP支持的服务列表。<br>
<br>
  如果本地机器发送EHLO消息时,传送的是短主机名(如here)就可能会遇到一个问题。远程主机无法得知这个短主机名的位置,因为它不在远程主机的域remote.domain中。这也就是为什么sendmail一直使用完整的主机名来表示。一个完整的主机名是由主机名加上一个点,然后再加上DNS域名项。<br>
<br>
  如果到现在为止,一切正常的话,本地机器将说明邮件的发件人:<br>
<br>
&gt;&gt;&gt; MAIL From:&lt;you@here.us.edu&gt;<br>
250 &lt;you@here.us.edu&gt; … Sender ok<br>
<br>
  在此,发件人的地址是远程机器认可的。<br>
<br>
  下一步,本地机器将说明收件人的名字:<br>
<br>
&gt;&gt;&gt; RCPT To:&lt;you@remote.domain&gt;<br>
250 &lt;you@remote.domain&gt; … Recipient ok<br>
<br>
  如果远程主机上并无用户you的话,远程主机将返回“User unknown”错误,在此,收件人OK。注意这里的OK不一定能确保地址是完好的。只是确认了这个地址是可接受的。<br>
<br>
  当信封信息发送完成后,sendmail程序将试图发送信件信息(包括信头和信体)。<br>
<br>
&gt;&gt;&gt; DATA<br>
354 Enter mail, end with “.” on a line by itself<br>
&gt;&gt;&gt; .<br>
<br>
  DATA告诉远程主机准备好了。当远程主机指示发送信息时,本地主机照做。最后的一个点用来标记一个邮件结束。这是SMTP的规定。因为邮件消息可能包含多行,而用一个小点开始也是合法,所以sendmail将会把这些小点转换成两个再发送出去。例如,假定当我们要发送以下文件时:<br>
<br>
My results matched yours at first:<br>
126.71<br>
125.72<br>
…<br>
126.79<br>
But then the numbers suddenly jumped high, looking like<br>
Noise saturated the line.<br>
<br>
为了防止以小点开始的行照成疑义,sendmail将会在以小点开始的行,插入一个附加的小点,所以实际传输的内容如下所示:<br>
My results matched yours at first:<br>
126.71<br>
125.72<br>
.…<br>
126.79<br>
But then the numbers suddenly jumped high, looking like<br>
Noise saturated the line.<br>
<br>
  而另一方收到邮件后,再将这个附加的小点去掉,还原成原来的邮件内容。<br>
<br>
  远程主机上的sendmail将显示队列管理附于的标识:<br>
<br>
250 GAA20115 Message accepted for delivery<br>
&gt;&gt;&gt; QUIT<br>
221 remote.domain closing connection<br>
<br>
  本地主机上的sendmail发送QUIT,说明全部工作完成。远程主机返回应答信息确认。<br>
<br>
  注意,-v参数在发送信息到远程主机上时十分有用。它能够显示出SMTP会话过程,以帮助我们了解邮件转发的过程,也有利于我们排错。<br>
<br>
2.3调试模式(-d)<br>
<br>
  sendmail程序也能产生并输出调试信息。要使用调试模式运行sendmail的话,就需要使用-d参数。这个参数将产生比-v参数更多、更详细的信息。输入以下命令行,用自己的帐户名代替you:<br>
<br>
% /usr/lib/sendmail –d you &lt; /dev/null<br>
<br>
<br>
  这个命令行产生很冗长的处理信息。我们在此不打算说明这些输出信息,在此,只需记住在sendmail程序在调试模式下运行会产生大量的信息。<br>
<br>
  同时,也会产生大量的调试信息,你可以修改、显示这些调试信息。你可以在-d参数后加上一个数字,输出将会限制在只输出指定类的调试信息。<br>
<br>
  输入以下命令用自己的帐户名代替you:<br>
<br>
% /usr/lib/sendmail –d40 you &lt; /dev/null<br>
<br>
  在此,-d40是调试第40类的信息。这类的信息是关于邮件队列的。以下是一个输出实例:<br>
<br>
&gt;&gt;&gt;&gt;&gt; queueing GAA14008 (new id) queueall=1 &gt;&gt;&gt;&gt;&gt;<br>
queueing 95688=you:<br>
mailer 4 (local), host ‘’<br>
user ‘you’, ruser ‘&lt;null&gt;’<br>
next=0, alias 95460, uid 0, gid 0<br>
flags=6008&lt;QPRIMARY,QPINGONFAILURE,QPINGONDELAY&gt;<br>
owner=(none), home=”/home/you”, fullname=”Your FullName”<br>
orcpt=”(none)”, statmta=(none), rstatus=(none)<br>
&lt;&lt;&lt;&lt;&lt; done queueing GAA14008 &lt;&lt;&lt;&lt;&lt;<br>
<br>
  对于一个类,还可以指定一个级别,这个级别是用来调整输出的量。一个低级别将产生较少的输出,一个高级别将产生更多、更复杂的输出。它们的格式是在-d参数之后加上:<br>
<br>
category.level<br>
<br>
  例如:<br>
<br>
% /usr/lib/sendmail –d0.1 -bp<br>
<br>
<br>
  参数-d0指示sendmail产生通用的调试信息。而级别1则让sendmail的输出减少到最小限度。这个值可以省略,因为.1是缺省值。参数-bp让sendmail打印出邮件队列内容。输出看起来如下所示:<br>
<br>
Version 8.8.4<br>
Compiled with:LOG NAMED_BIND NDBM NETINET NETUNIX NIS SCANF<br>
XDEBUG<br>
= = = = = = = = = = = SYSTEM IDENTITY (after readcf) = = = = = = = = = = =<br>
(short domain name) $w = here<br>
(canonical domain name) $j =here.us.edu<br>
(subdomain name) $m =us.edu<br>
(node name) $k = here<br>
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =<br>
Mail queue is empty<br>
<br>
  在此,开关选项“-d0.1”让sendmail打印出版本号、一些关于编译的信息,以及你的主机名。现在你提高级别看一下:<br>
<br>
% /usr/lib/sendmail –d0.11 -bp<br>
<br>
  这时将显示如下信息:<br>
<br>
Version 8.8.4<br>
Compiled with:LOG NAMED_BIND NDBM NETINET NETUNIX NIS SCANF<br>
XDEBUG<br>
OS Defines: HASFLOCK HASGETUSERSHELL HASINITGROUPS HASLSTAT<br>
HASSETREUID HASSETSID HASSETVBUF HASUNAME IDENTPROTO<br>
IP_SRCROUTE<br>
Config file: /etc/sendmail.cf<br>
Pid file: /etc/sendmail.pid<br>
Canonical name: here.us.edu<br>
UUCP nodename: here<br>
a.k.a.: [123.45.67.89]<br>
= = = = = = = = = = = SYSTEM IDENTITY (after readcf) = = = = = = = = = = =<br>
(short domain name) $w = here<br>
(canonical domain name) $j =here.us.edu<br>
(subdomain name) $m =us.edu<br>
(node name) $k = here<br>
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =<br>
Mail queue is empty<br>
<br>
[目录]<br>
<br>
--------------------------------------------------------------------------------<br>
<br>
<br>
sendmail.cf<br>
<br>
3. sendmail.cf文件<br>
  在sendmail的配置文件sendmail.cf中的文本,有的形如MODEM的噪声,有的形如Dithers的咒语一样:<br>
<br>
R$+@$=w ? sendmail.cf文件<br>
{$/{{.+ ? modem的噪声<br>
!@#!@@! ? Dithers的咒语<br>
对于生手而言,要构建象下面的配置文件,一定是一件恐怖的事情:<br>
R$+@$=W $@$1@$H user@thishost -&lt; user@hub<br>
R$=W!$+$@$2@$H thishost!user -&lt; user@hub<br>
R@$=W:$+ $@@$H:$2 @thishost:something<br>
R$+%$=W $@$&lt;#$1@$2 user%thishost<br>
<br>
  不过,如果回想起以前学习C语言时,你是否会对这个表达式感到恐惧呢?<br>
<br>
# define getc(p)(--(p) -&lt;_cnt&lt;=0? ((int)*(p)-&lt;ptr++):_filbuf(p))<br>
<br>
  就象任何一个新语言一样,学习sendmail.cf文件中所使用的语言需要时间和实践。在本章中,我们将介绍这个语言,不会在此只是对其作一个入门性的概述。<br>
<br>
3.1概要<br>
<br>
  sendmail.cf文件是sendmail每次启动时要读取的配置文件。它包含了sendmail启动时必须的信息。它列出了所有重要文件的位置,指定了这些文件的缺省权限。包含了一些影响sendmail行为的选项。更重要的是,它还包含了地址重写(rewriting addresses)规则。<br>
<br>
  Sendmail.cf文件是按行组织的。一个配置命令行,均是由字符开头的,而且每行只有一个命令:<br>
<br>
V7 ? 正确的<br>
V7 ? 不正确,前面多了个空格<br>
V7 Fw/etc/mxhosts ? 不正确,一行中有两个命令<br>
Fw/etc/mxhosts ? 正确<br>
<br>
  每一个配置命令行,是由命令加上特定参数构成的。例如,命令V的参数是一个数字,而F命令的参数则是字母w,再加上绝对路径。<br>
<br>
命令 说明<br>
<br>
V 定义配置文件的版本(从8.6版开始才要求)<br>
M 定义一个邮件传送代理<br>
D 定义一个宏<br>
R 定义一个地址重写规则<br>
S 声明一个规则集<br>
C 定义一宏集<br>
F 从一个文件与管道中定义一宏集<br>
O 定义一个选项<br>
H 定义一个信头<br>
P 定义传送优先级<br>
T 声明受托用户(在8.1版忽略,8.7版重用)<br>
K 声明一个key字数据库(从8.1版开始使用)<br>
E 定义一个环境变量(从8.7版开始使用)<br>
L 包括扩展的负载均衡支持<br>
<br>
  有一些配置命令,象V只会在sendmail.cf文件中出现一次,而有些象R命令就会多次在配置文件sendmail.cf中出现。<br>
<br>
  空行、以“#”开始的行将被处理为注释行而被忽略。一个以tab开始的行,则说明是上一行的继续,如:<br>
<br>
# a commnet ? 注释行<br>
V7<br>
/Brekeley ? V7命令的继续<br>
-<br>
tab<br>
<br>
  除了一个命令,一个空行,一个空格,一个tab,或一个#字符以外,其它情况都是错误的。如果sendmail程序发现这种情况,将打印出如下警告,并忽略此行,然后接着读取后面的配置:<br>
<br>
sendmail.cf : line 15:unknown control line “v6”<br>
<br>
  在这,sendmail找到了一行以v开始的行。由于小写的v不是一个有效的命令,sendmail将发出警告。而行号则指出了这个错误所在行。<br>
<br>
  下面几个小节将对每一种命令进行简单的实例说明。而这些命令的作用将会在本教程中阐述。所以如果在本节中无法完全理解的话,也不必担心。因为这里所有神秘的东西,在本书结束时都将变得十分清晰明白。<br>
<br>
3.2最小配置<br>
<br>
  最小的配置的文件可以是空文件。你可以使用以下命令来创建这个文件:<br>
<br>
% cp /dev/null client.cf<br>
<br>
<br>
  我们会慢慢地往这个文件中添加配置。将其命名为client.cf是为了避免覆盖了系统中的sendmail.cf文件。<br>
<br>
  现在,我们再运行sendmail,测试这个新配置文件的有效性:<br>
<br>
% ./sendmail –Cclient.cf –bt &gt;/dev/null<br>
%<br>
<br>
  命令行开关选项-C用于指定sendmail使用一个指定的配置文件。而开关选项-bt则告诉sendmail运行在rule-testing模式下。注意,sendmail读取你的空配置文件,运行,没有任何提示。同时注意当在第2章编译完后无法运行sendmail,但现在你可以了。那是因为当时你没有配置文件,而现在有一个了(尽管这个文件是空的)。<br>
<br>
3.2.1 版本<br>
<br>
  为了防止旧版本的sendmail因读取新版本的配置文件而破坏,在sendmail 8.1开始引入了一个V命令,这个命令的格式如下:<br>
<br>
V7<br>

⌨️ 快捷键说明

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