<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
<article lang="pt-BR">
<?ooogenerator ConectivaOffice 1.1.2 (Linux)?>
<?oooversion 1.1.2?>
	<articleinfo>
		<title>Qmail - Guia de consulta</title>
		<author>
			<firstname>Rodrigo</firstname>
			<surname>Pereira Telles</surname>
			<affiliation>
				<orgname>
					<ulink url="http://www.devel.it">Devel-IT</ulink>
				</orgname>
				<address>
					<email>telles (at) devel (dot) it</email>
				</address>
			</affiliation>
		</author>
		<copyright>
			<year>2005</year>
			<holder>por Rodrigo P. Telles.</holder>
		</copyright>
		<pubdate>2005-06-07</pubdate>
		<revhistory> 
			<revision>
				<revnumber>1.0</revnumber>
				<date>2005-06-01</date>
				<authorinitials>rpt</authorinitials>
				<revremark>Release</revremark>
			</revision>
		</revhistory>
		<abstract>
			<para>qmail &#xE9; um seguro, confi&#xE1;vel, eficiente e simples agente de transfer&#xEA;ncia de mensagens (MTA &#x2013; Mail Transfer Agent). Foi desenhado para efetuar conex&#xF5;es pela internet entre servidores SMTP. </para>
			<para>Hoje, &#xE9; o segundo servidor SMTP mais comumente encontrado na internet e &#xE9; de longe, o servidor SMTP que mais cresce na internet.</para>
			<para>Este guia foi escrito com o intuito de auxiliar os iniciantes em qmail bem como os j&#xE1; experientes administradores de sistema a aproveitar ao m&#xE1;ximo todos os recursos deste fant&#xE1;stico MTA.
			</para>
		</abstract>
	</articleinfo>

  <section>
    <title>Programas do pacote qmail</title>
    <section>
      <title>mailsubj</title>
      <para>
        <command>mailsubj </command>
        <emphasis>assunto</emphasis>
        <command> </command>
        <emphasis>recipiente1</emphasis>
        <command> </command>
        <emphasis>recipiente2</emphasis>
        <command> ...</command>
      </para>
      <para>Recebe o corpo da mensagem via <emphasis role="strong">STDIN</emphasis> (entrada padr&#xE3;o), insere <emphasis>assunto</emphasis> como subject da mensagem e envia para <emphasis>recipiente1</emphasis> e <emphasis>recipiente2</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command>$ cat /etc/hosts | /var/qmail/bin/mailsubj "Somente teste." foo@bar.org</command>
        <command> nospam@blackhole.org</command>
      </para>
    </section>
    <section>
      <title>qmail-clean</title>
      <para>Remove da fila de e-mail, e-mails que n&#xE3;o foram enviados por motivo de erro. Geralmente o e-mail &#xE9; removido por motivo de tempo esgotado na tentativa de envi&#xE1;-lo <emphasis role="strong">N</emphasis> vezes, e indisponibilidade da caixa de correio do remetente que o gerou.</para>
    </section>
    <section>
      <title>qmail-inject</title>
      <para>
        <command>qmail-inject [ -nNaAhH ] [ -f</command>
        <emphasis>sender</emphasis>
        <command> ] [ </command>
        <emphasis>recipiente1 recipiente2 ...</emphasis>
        <command> ]</command>
      </para>
      <para>Recebe mensagens via <emphasis role="strong">STDIN</emphasis> (entrada padr&#xE3;o), adiciona informa&#xE7;&#xF5;es no cabe&#xE7;alho da mensagem, e invoca o programa <emphasis role="strong">qmail-queue </emphasis>para enviar a mensagem para hum ou mais recipientes. </para>
      <para>qmail-inject normalmente sai com c&#xF3;digo de erro 0 (zero). Se invocado incorretamente ou caso a mensagem tenha s&#xE9;rios problemas de syntaxe, sai com c&#xF3;digo de erro 100. Em caso de erros tempor&#xE1;rios, sai com c&#xF3;digo de erro 111.</para>
      <para>Geralmente o programa qmail-inject &#xE9; utilizado por clientes de e-mail que n&#xE3;o suportam o protocolo SMTP para envio de e-mails, e &#xE9; o substituto direto do programa <emphasis role="strong">sendmail</emphasis>.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="2.3cm"/>
          <colspec colname="c2" colwidth="14.7cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xF5;es</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-n</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Imprime a mensagem recebida via <emphasis role="strong">STDIN</emphasis> (entrada padr&#xE3;o) em <emphasis role="strong">STDOUT</emphasis> (sa&#xED;da padr&#xE3;o) ao inv&#xE9;s de repass&#xE1;-la ao programa qmail-queue.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-N</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Repassa a mensagem recebida via <emphasis role="strong">STDIN</emphasis> para qmail-queue (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-a</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Envia a mensagem recebida via <emphasis role="strong">STDIN</emphasis> para todos os endere&#xE7;os de recipientes especificados via linha de comando. Ignora recipientes contidos no cabe&#xE7;alho da mensagem.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-A</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Envia a mensagem recebida via <emphasis role="strong">STDIN</emphasis> para todos os recipientes especificados via linha de comando. Se nenhum endere&#xE7;o de recipiente for especificado via linha comando, utilizar&#xE1; os endere&#xE7;os de recipientes contidos no cabe&#xE7;alho da mensagem (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-h</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Envia a mensagem recebida via <emphasis role="strong">STDIN</emphasis> para todos os endere&#xE7;os de recipientes contidos no cabe&#xE7;alho da mensagem. Para mensagens que n&#xE3;o s&#xE3;o forwards, significa que ser&#xE3;o utilizados os endere&#xE7;os de e-mail contidos nos campos <emphasis role="strong">To, Cc, Bcc </emphasis>e<emphasis role="strong"> Apparently-To</emphasis> do cabe&#xE7;alho da mensagem. Para mensagens que s&#xE3;o forwards, ser&#xE3;o utilizados os endere&#xE7;os de e-mail contidos nos campos <emphasis role="strong">Resent-To, Resent-Cc </emphasis>e<emphasis role="strong"> Resent-Bcc</emphasis> do cabe&#xE7;alho da mensagem. Ignora recipientes especificados via linha de comando.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-H</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Envia a mensagem recebida via <emphasis role="strong">STDIN</emphasis> para todos os endere&#xE7;os de e-mail contidos no cabe&#xE7;alho da mensagem e todos os recipientes especificados via linha de comando.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>
                  <emphasis role="strong">-f</emphasis>
                  <emphasis>sender</emphasis>
                </para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Repassa a mensagem recebida via <emphasis role="strong">STDIN</emphasis> para o programa qmail-queue substituindo o endere&#xE7;o de sender da mensagem por <emphasis>sender.</emphasis> Substitui tamb&#xE9;m o conte&#xFA;do do campo <emphasis role="strong">Return-Path</emphasis> do cabe&#xE7;alho da mensagem e vari&#xE1;veis de ambiente por <emphasis>sender.</emphasis></para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>recipiente1</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Endere&#xE7;o de e-mail do primeiro recipiente.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>recipiente2</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Endere&#xE7;o de e-mail do segundo recipiente.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
    </section>
    <section>
      <title>qmail-local</title>
      <para>
        <command>qmail-local [ -nN ] </command>
        <emphasis>usu&#xE1;rio diret&#xF3;rio-home local tra&#xE7;o extens&#xE3;o dom&#xED;nio sender defaultdelivery</emphasis>
      </para>
      <para>Entrega ou encaminha e-mails para contas locais.</para>
      <para>Executa tarefas muito importantes como, detectar se o e-mail est&#xE1; em <emphasis role="strong">loop</emphasis> - quando j&#xE1; possui <emphasis role="strong">&#x201C;Delivered-To&#x201D;</emphasis> entre os cabe&#xE7;alhos do e-mail, denunciando que o e-mail j&#xE1; foi entregue 1 (uma) vez para este destinat&#xE1;rio.</para>
      <para>O recipiente da mensagem ser&#xE1; <emphasis>local@dom&#xED;nio.</emphasis> qmail-local criar&#xE1; um novo cabe&#xE7;alho <emphasis role="strong">&#x201C;Delivered-To&#x201D;</emphasis> na mensagem contendo <emphasis>local@dom&#xED;nio. </emphasis></para>
      <para>Caso o cabe&#xE7;alho &#x201C;<emphasis role="strong">Delivered-To: local@domain&#x201D;</emphasis><emphasis> </emphasis>j&#xE1; exista na mensagem, qmail-local devolve a mensagem, identificando-a como em <emphasis role="strong">loop</emphasis> de entrega.</para>
      <para>O sender da mensagem ser&#xE1; <emphasis>sender, </emphasis>e qmail-local criar&#xE1; um novo cabe&#xE7;alho &#x201C;<emphasis role="strong">Return-Path&#x201D;</emphasis><emphasis> </emphasis>contendo <emphasis>sender.</emphasis></para>
      <para><emphasis>diret&#xF3;rio-home </emphasis>&#xE9; o diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> de <emphasis>usu&#xE1;rio.</emphasis></para>
      <para><emphasis>tra&#xE7;o </emphasis>e<emphasis> extens&#xE3;o</emphasis> identificar&#xE3;o qual arquivo <emphasis>.</emphasis><emphasis role="strong">qmail</emphasis><emphasis>tra&#xE7;oextens&#xE3;o </emphasis>ser&#xE1; utilizado por qmail-local no momento da entrega, seguido das instru&#xE7;&#xF5;es contidas em <emphasis>defaultdelivery </emphasis>a serem executadas, caso o arquivo n&#xE3;o exista.</para>
      <para>Se a entrega da mensagem for executada com sucesso, qmail-local sai com c&#xF3;digo de erro 0 (zero). </para>
      <para>Se a entrega falhar temporariamente, sai com c&#xF3;digo de erro 111.</para>
      <para>Se a entrega da mensagem falhar permanentemente, qmail-local sai com c&#xF3;digo de erro diferente de 0 (zero).</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.6cm"/>
          <colspec colname="c2" colwidth="15.4cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xF5;es</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-n</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Ao inv&#xE9;s de ler e entregar a mensagem, imprime em tela a descri&#xE7;&#xE3;o das instru&#xE7;&#xF5;es de entrega.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-N</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>L&#xEA; e entrega a mensagem (Padr&#xE3;o).</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
    <section>
      <title>qmail-lspawn</title>
      <para>
        <command>qmail-lspawn </command>
        <emphasis>defaultdelivery</emphasis>
      </para>
      <para>Invocado pelo programa <emphasis role="strong">qmail-send</emphasis>, qmail-lspawn l&#xEA; uma s&#xE9;rie de comandos via descriptor 0 (zero), invoca o programa <emphasis role="strong">qmail-local </emphasis>para a entrega da mensagem e imprime as mensagens de resultado no descriptor 1.</para>
      <para><emphasis>defaultdelivery </emphasis>&#xE9; passado ao programa <emphasis role="strong">qmail-local</emphasis> como instru&#xE7;&#xE3;o padr&#xE3;o de entrega da mensagem.</para>
      <para>qmail-lspawn invoca <emphasis role="strong">qmail-local</emphasis> de forma ass&#xED;ncrona, sendo assim, as mensagens de resultado podem n&#xE3;o retornar na mesma ordem que os comandos.</para>
      <para>Antes de invocar <emphasis role="strong">qmai-local</emphasis>, qmail-lspawn verifica se o endere&#xE7;o do recipiente n&#xE3;o est&#xE1; listado no mecanismo <emphasis role="strong">qmail-users</emphasis>, se o endere&#xE7;o n&#xE3;o estiver listado, invoca o programa <emphasis role="strong">qmail-getpw</emphasis>.</para>
      <para>qmail-lspawn ignora endere&#xE7;os de recipientes em branco.</para>
    </section>
    <section>
      <title>qmail-pop3d</title>
      <para>
        <command>qmail-pop3d </command>
        <emphasis>maildirname</emphasis>
      </para>
      <para>Permite ao usu&#xE1;rio ler ou remover mensagens em sua caixa de e-mail no servidor POP3.</para>
      <para>Suporta apenas formato de caixa de e-mail do tipo <emphasis role="strong">Maildir</emphasis> &#x2013; cada e-mail &#xE9; um arquivo dentro da caixa de e-mail &#x2013; e geralmente utiliza a porta 110/TCP.</para>
      <para>qmail-pop3d &#xE9; geralmente invocado pelo programa <emphasis role="strong">qmail-popup</emphasis>, que &#xE9; respons&#xE1;vel por receber informa&#xE7;&#xF5;es de usu&#xE1;rio e senha.</para>
      <para><emphasis>maildirname</emphasis> indica o nome do diret&#xF3;rio a ser utilizado por qmail-pop3d na manipula&#xE7;&#xE3;o de mensagens dentro do diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> de cada usu&#xE1;rio.</para>
      <para>qmail-pop3d possui timeout de inatividade de 20 minutos.</para>
      <para>qmail-pop3d suporta os comandos <emphasis role="strong">UIDL</emphasis>, <emphasis role="strong">TOP</emphasis> e <emphasis role="strong">LAST</emphasis>.</para>
      <para>qmail-pop3d adiciona uma linha em branco extra a cada mensagem para corrigir alguns bugs s&#xE9;rios em certos clientes de e-mail.</para>
      <para>qmail-pop3d &#xE9; baseado em um programa contribu&#xED;do por <emphasis role="strong">Russ Nelson</emphasis>.</para>
    </section>
    <section>
      <title>qmail-popup</title>
      <para>
        <command>qmail-popup </command>
        <emphasis>nome-do-host subprograma</emphasis>
      </para>
      <para>Valida usu&#xE1;rio e senha dos clientes remotos e executa <emphasis>subprograma</emphasis>. Suporta usu&#xE1;rio e senha em texto plano (sem encripta&#xE7;&#xE3;o) e m&#xE9;todo de autentica&#xE7;&#xE3;o encriptada (APOP).</para>
      <para>Geralmente <emphasis role="strong">qmail-pop3d</emphasis> &#xE9; utilizado como <emphasis>subprograma </emphasis>e <emphasis>nome-do-host </emphasis>&#xE9; utilizado em conex&#xF5;es APOP como uma deriva&#xE7;&#xE3;o do timestamp de conex&#xE3;o.</para>
      <para>qmail-popup possui timeout de inatividade de 20 minutos.</para>
      <para>qmail-popup &#xE9; baseado em um programa contribu&#xED;do por <emphasis role="strong">Russ Nelson</emphasis>.</para>
    </section>
    <section>
      <title>qmail-qmqpc</title>
      <para>Comunica-se com um servidor QMQP (<emphasis role="strong">qmail-qmqpd)</emphasis> remoto e o repassa todos os e-mails recebidos. </para>
      <para>qmail-qmqpc substitui <emphasis role="strong">qmail-queue</emphasis> (via link simb&#xF3;lico) para entregar as mensagens recebidas ao servidor QMQP. </para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/img001.jpg" width="9.775cm" depth="11.003cm"/>
        </imageobject>
      </mediaobject>
      <para/>
    </section>
    <section>
      <title>qmail-qmqpd</title>
      <para>Recebe conex&#xF5;es do tipo QMQP de clientes <emphasis role="strong">qmail-qmqpc</emphasis> remotos. Uma vez que a conex&#xE3;o &#xE9; aceita, a mensagem &#xE9; entregue diretamente ao programa <emphasis role="strong">qmail-queue</emphasis>. Geralmente utiliza a porta 628/TCP.</para>
      <para>Basicamente, QMQP &#xE9; utilizado para enviar mensagens de um servidor qmail a outro servidor qmail de forma r&#xE1;pida e segura.</para>
      <para><emphasis role="strong">NOTA: </emphasis>QMQP (Quick Mail Queuing Protocol) &#xE9; um protocolo desenvolvido por <emphasis role="strong">Daniel J. Bernstein</emphasis> e s&#xF3; pode ser utilizado entre 2 (dois) servidores qmail.</para>
      <para/>
    </section>
    <section>
      <title>qmail-qmtpd</title>
      <para>Recebe conex&#xF5;es do tipo QMTP de clientes remotos. Uma vez que a conex&#xE3;o &#xE9; aceita, a mensagem &#xE9; entregue diretamente ao programa <emphasis role="strong">qmail-queue</emphasis>. Geralmente utiliza a porta 209/TCP.</para>
      <para>qmail-qmtpd suporta os mecanimos <emphasis role="strong">rcpthosts</emphasis>, <emphasis role="strong">morercpthosts</emphasis>, <emphasis role="strong">RELAYCLIENTS</emphasis>, <emphasis role="strong">databytes</emphasis> e <emphasis role="strong">DATABYTES</emphasis>.</para>
      <para><emphasis role="strong">NOTA:</emphasis> QMTP (Quick Mail Transfer Protocol) &#xE9; um protocolo desenvolvido por <emphasis role="strong">Daniel J. Bernstein</emphasis> e tem o intuito de ser um substituto ao protocolo SMTP. </para>
    </section>
    <section>
      <title>qmail-queue</title>
      <para>Injeta mensagens na fila de e-mail para serem processadas futuramente por <emphasis role="strong">qmail-send</emphasis>.</para>
      <para>&#xC9; invocado pelos programas <emphasis role="strong">qmail-inject</emphasis>, <emphasis role="strong">qmail-smtpd</emphasis>, <emphasis role="strong">qmail-qmtpd </emphasis>e<emphasis role="strong"> qmail-qmqpd</emphasis>. </para>
      <para>Todo o processamento de e-mails passa por qmail-queue, tornando-o o cora&#xE7;&#xE3;o do qmail.</para>
      <para>qmail-queue sempre adiciona uma linha <emphasis role="strong">Received</emphasis> no in&#xED;cio do cabe&#xE7;alho da mensagem.</para>
      <para>qmail-queue imp&#xF5;e algumas regras na estrutura da fila de e-mails: cada subdiret&#xF3;rio <emphasis role="strong">mess </emphasis>precisa estar localizado no mesmo sistema de arquivos que o diret&#xF3;rio <emphasis role="strong">pid</emphasis>; cada subdiret&#xF3;rio <emphasis role="strong">todo</emphasis> precisa estar localizado no mesmo sistema de arquivos que o diret&#xF3;rio <emphasis role="strong">intd</emphasis>.</para>
      <para>qmail-queue n&#xE3;o imprime diagn&#xF3;sticos em tela. Sai com c&#xF3;digo de erro 0 (zero) caso a mensagem tenha sido injetada com sucesso na fila de e-mails, e sai com c&#xF3;digo de erro entre 1 e 99 caso tenha ocorrido falha no momento de injetar a mensagem na fila.</para>
      <para>Todos os c&#xF3;digos entre 11 e 40 indicam erros permanentes.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.6cm"/>
          <colspec colname="c2" colwidth="15.4cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>C&#xF3;digo</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>11</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Endere&#xE7;o de e-mail muito longo.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>31</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O servidor de e-mail est&#xE1; recusando permanentemente a enviar mensagens para qualquer recipiente. (N&#xE3;o utilizado por qmail-queue, mas utilizado por programas que utilizam a mesma estrutura).</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para>Todos os demais c&#xF3;digos indicam erros tempor&#xE1;rios.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.6cm"/>
          <colspec colname="c2" colwidth="15.4cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>C&#xF3;digo</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>51</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Estouro de mem&#xF3;ria.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>52</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tempo esgotado.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>53</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Erro de escrita (Ex: disco cheio).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>54</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o foi poss&#xED;vel ler a mensagem ou os cabe&#xE7;alhos de entrega.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>55</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o foi poss&#xED;vel ler os arquivos de configura&#xE7;&#xE3;o (N&#xE3;o utilizado por qmail-queue).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>56</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Problemas ao tentar fazer uma conex&#xE3;o de rede a partir do host local (N&#xE3;o utilizado por qmail-queue).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>61</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Problemas com o diret&#xF3;rio home do qmail.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>62</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Problemas com o diret&#xF3;rio da fila de e-mail.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>63</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Problemas ao criar a estrutura queue/pid.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>64</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Problemas ao criar a estrutura queue/mess.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>65</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Problemas ao criar a estrutura queue/intd.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>66</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Problemas ao criar a estrutura queue/todo.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>71</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O servidor de e-mail est&#xE1; recusando temporariamente a enviar mensagens para qualquer recipiente. (N&#xE3;o utilizado por qmail-queue).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>72</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tempo esgotado na conex&#xE3;o com o servidor de e-mail. (N&#xE3;o utilizado por qmail-queue).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>73</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Conex&#xE3;o com o servidor de e-mail foi rejeitada. (N&#xE3;o utilizado por qmail-queue).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>74</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Sucesso na conex&#xE3;o com o servidor de e-mail, mas a comunica&#xE7;&#xE3;o falhou. (N&#xE3;o utilizado por qmail-queue).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>81</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Bug interno. (Ex: falha de segmenta&#xE7;&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>91</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Erro no formato dos cabe&#xE7;alhos de entrega.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para>Cada mensagem na fila de e-mail possui o seu pr&#xF3;prio contador de tempo, que indica ao qmail em que momento e quantas vezes ainda deve tentar entregar a mensagem antes de devolv&#xEA;-la ao seu remetente. Este tempo n&#xE3;o &#xE9; configur&#xE1;vel, e funciona como mostrado na tabela abaixo:</para>
      <informaltable>
        <tgroup cols="3">
          <colspec colname="c1" colwidth="4cm"/>
          <colspec colname="c2" colwidth="3.5cm"/>
          <colspec colname="c3" colwidth="3.5cm"/>
          <thead>
            <row>
              <entry valign="bottom" align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tentativa de Entrega</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Segundos</para>
              </entry>
              <entry valign="bottom" align="center">
<?border 0.002cm solid #000000?>
                <para>Dias &#x2013; HH:MM:SS</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>1</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 00:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>2</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 00:06:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>3</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>1600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 00:26:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>4</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>3600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 01:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>5</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>6400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 01:46:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>6</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>10000</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 02:46:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>7</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>14400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 04:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>8</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>19600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 05:26:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>9</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>25600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 07:06:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>10</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>32400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 09:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>11</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>40000</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 11:06:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>12</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>48400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 13:26:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>13</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>57600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 16:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>14</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>67600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 18:46:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>15</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>78400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>0 - 21:46:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>16</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>90000</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>1 - 01:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>17</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>102400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>1 - 04:26:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>18</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>115600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>1 - 08:06:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>19</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>129600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>1 - 12:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>20</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>144400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>1 - 16:06:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>21</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>160000</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>1 - 20:26:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>22</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>176400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>2 - 01:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>23</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>193600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>2 - 05:46:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>24</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>211600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>2 - 10:46:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>25</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>230400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>2 - 16:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>26</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>250000</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>2 - 21:26:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>27</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>270400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>3 - 03:06:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>28</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>291600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>3 - 09:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>29</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>313600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>3 - 15:06:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>30</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>336400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>3 - 21:26:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>31</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>360000</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>4 - 04:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>32</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>384400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>4 - 10:46:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>33</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>409600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>4 - 17:46:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>34</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>435600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>5 - 01:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>35</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>462400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>5 - 08:26:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>36</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>490000</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>5 - 16:06:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>37</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>518400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>6 - 00:00:00</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>38</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>547600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>6 - 08:06:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>39</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>577600</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>6 - 16:26:40</para>
              </entry>
            </row>
            <row>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>40</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>608400</para>
              </entry>
              <entry valign="bottom" align="center">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>7 - 01:00:00</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para>Mensagens ficam em fila, quando o qmail por algum motivo n&#xE3;o p&#xF4;de entreg&#xE1;-las pela primeira vez ou na tentativa anterior; tais mensagens recebem o nome de &#x201C;<emphasis role="strong">deferred</emphasis>&#x201D; (entrega falhou e foi adiada).</para>
    </section>
    <section>
      <title>qmail-remote</title>
      <para>
        <command>qmail-remote </command>
        <emphasis>host-remoto sender recipiente</emphasis>
        <command> [ </command>
        <emphasis>recipiente1 recipiente2</emphasis>
        <command> ... ]</command>
      </para>
      <para>Invocado pelo programa <emphasis role="strong">qmail-rspawn</emphasis>, qmail-remote recebe mensagens via entrada padr&#xE3;o (<emphasis role="strong">STDIN</emphasis>) e as entrega para recipientes localizados em servidores remotos, utilizando o protocolo SMTP.</para>
      <para>qmail-remote envia a mensagem para<emphasis> host-remoto </emphasis>ou para o host listado como entrada <emphasis role="strong">MX</emphasis> ou <emphasis role="strong">A</emphasis> na zona DNS de cada dom&#xED;nio. </para>
      <para><emphasis>host-remoto</emphasis> deve ser um nome de DNS v&#xE1;lido:</para>
      <para>
        <command>presunto.black.hole.net</command>
      </para>
      <para>ou o endere&#xE7;o IP do host entre colchetes:</para>
      <para>
        <command>[172.18.73.19]</command>
      </para>
      <para>O recipiente da mensagem ser&#xE1; <emphasis>recipiente </emphasis>e opcionalmente <emphasis>recepiente1 </emphasis>e <emphasis>recepiente2.</emphasis></para>
      <para>O sender da mensagem ser&#xE1; <emphasis>sender</emphasis>.</para>
      <para>qmail-remote imprime uma s&#xE9;rie de flags de recipientes, seguido de um relat&#xF3;rio da mensagem. Casa relat&#xF3;rio inicia com uma &#xFA;nica letra.</para>
      <para>qmail-remote sempre sai com c&#xF3;digo de erro 0 (zero).</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.6cm"/>
          <colspec colname="c2" colwidth="15.4cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Flag</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>r</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Relat&#xF3;rio de recipiente: recipiente aceito.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>h</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Relat&#xF3;rio de recipiente: recipiente permanentemente rejeitado.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>s</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Relat&#xF3;rio de recipiente: recipiente temporariamente rejeitado.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>K</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Relat&#xF3;rio de mensagem: sucesso na entrega. Host remoto tomou a responsabilidade de entregar a mensagem para cada recipiente aceito.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Z</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Relat&#xF3;rio de mensagem: falha tempor&#xE1;ria na entrega.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>D</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Relat&#xF3;rio de mensagem: falha permanente na entrega.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para>Depois das letras, qmail-remote imprime na tela o que ocorreu na tentativa de entrega da mensagem.</para>
      <para>Ex:</para>
      <para>
        <command>$ cat /etc/hosts | /var/qmail/bin/qmail-remote foo.bar.net master@rrunner.net presunto@black-hole.net salsisha@black-hole.org</command>
      </para>
      <para>
        <command>master@rrunner.net </command>
        <command>
          <command>presunto@black-hole.net salsisha@black-hole.org</command>
        </command>
      </para>
      <para>
        <command>rrK172.18.73.19 accepted message.</command>
      </para>
      <para>
        <command>Remote host said: 250 ok 1079277646 qp 1337</command>
      </para>
    </section>
    <section>
      <title>qmail-rspawn</title>
      <para>Recebe uma s&#xE9;rie de comandos de entrega remota via descriptor 0, invoca <emphasis role="strong">qmail-remote</emphasis> para efetuar a entrega da mensagem e imprime os resultados no descriptor 1.</para>
      <para>qmail-rspawn &#xE9; invocado por <emphasis role="strong">qmail-send</emphasis>, quando este classifica o e-mail como remoto, baseando-se no endere&#xE7;o de recipiente.</para>
      <para>qmail-rspawn invoca <emphasis role="strong">qmail-remote</emphasis> de forma ass&#xED;ncrona, sendo assim, as mensagens de resultado podem n&#xE3;o retornar na mesma ordem que os comandos.</para>
    </section>
    <section>
      <title>qmail-send</title>
      <para>Entrega e-mails armazenados na fila de e-mail.</para>
      <para>Utiliza <emphasis role="strong">qmail-lspawn</emphasis> para entregar mensagens &#xE0; recipientes locais e <emphasis role="strong">qmail-rspawn</emphasis> para entregar mensagens &#xE0; recipientes remotos. Se a mensagem n&#xE3;o p&#xF4;de ser entregue temporariamente para 1 (hum) ou mais recipientes, qmail-send deixa a mensagem na fila e tenta entreg&#xE1;-la novamente mais tarde.</para>
      <para>qmail-send imprime registros leg&#xED;veis de suas atividades no descriptor 0, escreve comandos para <emphasis role="strong">qmail-lspawn</emphasis>, <emphasis role="strong">qmail-rspawn</emphasis> e <emphasis role="strong">qmail-clean</emphasis> via descriptor 1 (hum), 3 (tr&#xEA;z) e 5 (cinco) e l&#xEA; as respostas via descriptor 2 (dois), 4 (quatro) e 6 (seis).</para>
      <para>qmail-send &#xE9; respons&#xE1;vel por evitar situa&#xE7;&#xF5;es que possam causar um &#x201C;beco sem sa&#xED;da&#x201D; (deadlock).</para>
      <para>Se qmail-send receber um sinal kill do tipo <emphasis role="strong">TERM</emphasis> , aguarda a finaliza&#xE7;&#xE3;o de todas as entregas de e-mail correntes antes de ser derrubado.</para>
      <para>Se qmail-send receber um sinal kill do tipo <emphasis role="strong">ALRM</emphasis>, reagenda a entrega imediata de todas as mensagens armazenadas na fila de e-mail.</para>
    </section>
    <section>
      <title>qmail-smtpd</title>
      <para>Recebe e-mails de computadores remotos e os repassa ao programa <emphasis role="strong">qmail-queue, </emphasis>que ir&#xE1; depositar a mensagem na fila de e-mails. Utiliza o protocolo SMTP e geralmente a porta 25/TCP.</para>
      <para>qmail-smtpd &#xE9; respons&#xE1;vel pela contagem de hops (servidores por onde a mensagem passou); rejeita qualquer e-mail com 100 (cem) ou mais entradas &#x201C;<emphasis role="strong">Received</emphasis>&#x201D; ou &#x201C;<emphasis role="strong">Delivered-To</emphasis>&#x201D; em seu cabe&#xE7;alho.</para>
      <para>qmail-smtpd suporta &#x201C;<emphasis role="strong">ESMTP&#x201D;</emphasis>, incluindo op&#xE7;&#xF5;es 8BITMIME e PIPELINING.</para>
      <para>qmail-smtpd converte SMTP &#x201C;<emphasis role="strong">newlines</emphasis>&#x201D; em &#x201C;<emphasis role="strong">UNIX newlines</emphasis>&#x201D;, convertendo entradas &#x201C;<emphasis role="strong">CR LF</emphasis>&#x201D; em &#x201C;<emphasis role="strong">LF</emphasis>&#x201D;; qmail-smtpd retorna um erro tempor&#xE1;rio e aborta a conex&#xE3;o caso encontre uma entrada &#x201C;<emphasis role="strong">LF</emphasis>&#x201D; com problemas.</para>
      <para>qmail-smtpd aceita mensagens com linhas muito longas ou caracteres n&#xE3;o &#x201C;<emphasis role="strong">ASCII</emphasis>&#x201D;, mesmo que estas mensagens violem as especifica&#xE7;&#xF5;es do protocolo SMTP.</para>
    </section>
    <section>
      <title>qmail-start</title>
      <para>
        <command>qmail-start [ </command>
        <emphasis>defaultdelivery</emphasis>
        <command> [ </command>
        <emphasis>logger argumentos</emphasis>
        <command> ... ] </command>
        <command>]</command>
      </para>
      <para>Inicia todo o sistema de entrega de e-mails</para>
      <para>Invoca os programas <emphasis role="strong">qmail-send</emphasis>, <emphasis role="strong">qmail-lspawn</emphasis>, <emphasis role="strong">qmail-rspawn </emphasis>e<emphasis role="strong"> qmail-clean</emphasis> com seus devidos UIDs (ID de usu&#xE1;rio) e GIDs (ID de grupo). Estes servi&#xE7;os cooperam entre si na entrega de e-mails.</para>
      <para><emphasis>defaultdelivery </emphasis>&#xE9; o formato padr&#xE3;o de entrega de mensagens que ser&#xE1; utilizado por <emphasis role="strong">qmail-lspawn</emphasis>,<emphasis role="strong"> </emphasis>e deve ser do tipo <emphasis role="strong">Maildir </emphasis>ou <emphasis role="strong">Mailbox</emphasis>. Se n&#xE3;o informado, <emphasis role="strong">qmail-lspawn </emphasis>utilizar&#xE1; o formato <emphasis role="strong">Mailbox</emphasis> como padr&#xE3;o.</para>
      <para>Se<emphasis> logger</emphasis> for informado, <emphasis role="strong">qmail-start</emphasis> repassar&#xE1; os logs de atividade do programa <emphasis role="strong">qmail-send</emphasis> para <emphasis>logger</emphasis>.</para>
      <para>Vari&#xE1;veis de ambiente passadas &#xE0; <emphasis role="strong">qmail-start </emphasis>s&#xE3;o eventualmente utilizadas pelo programa <emphasis role="strong">qmail-local</emphasis>;<emphasis> </emphasis>tenha sempre certeza de limpar o ambiente de vari&#xE1;veis se executar <emphasis role="strong">qmail-start </emphasis>manualmente.</para>
      <para>Ex:</para>
      <para>
        <command># env &#x2013; PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir splogger qmail &amp;</command>
      </para>
      <para>Limites de recursos e controles de <emphasis role="strong">TTYs</emphasis> tamb&#xE9;m s&#xE3;o repassados de <emphasis role="strong">qmail-start</emphasis> para <emphasis role="strong">qmail-local</emphasis>.</para>
      <para><emphasis role="strong">NOTA</emphasis>: <emphasis role="strong">qmail-send</emphasis> normalmente pode iniciar muitas entregas de e-mails simult&#xE2;neas; para reduzir o impacto de <emphasis role="strong">qmail-send</emphasis> em outros programas do sistema, voc&#xEA; pode executar <emphasis role="strong">qmail-start</emphasis> com prioridade baixa.</para>
    </section>
    <section>
      <title>sendmail</title>
      <para>Substitui diretamente as funcionalidades do conhecido programa sendmail. Geralmente &#xE9; utilizado por clientes de e-mail que n&#xE3;o suportam o protocolo SMTP para o envio de e-mails.</para>
    </section>
    <section>
      <title>splogger</title>
      <para>
        <command>splogger [ </command>
        <emphasis>tag</emphasis>
        <command> [ </command>
        <emphasis>fac</emphasis>
        <command> ] ]</command>
      </para>
      <para>L&#xEA; e insere mensagens geradas pelo qmail no sistema de logs (syslog).</para>
      <para>Insere <emphasis>tag</emphasis> (Padr&#xE3;o: splogger) e um timestamp num&#xE9;rico no in&#xED;cio de cada mensagem.</para>
      <para>splogger checa por <emphasis role="strong">alert: </emphasis>ou <emphasis role="strong">warning:</emphasis> no in&#xED;cio de cada mensagem e seleciona uma prioridade syslog (<emphasis role="strong">LOG_ALERT</emphasis>, <emphasis role="strong">LOG_WARNING</emphasis> ou <emphasis role="strong">LOG_INFO</emphasis>) para a mensagem.</para>
      <para>splogger loga mensagens com a facilidade <emphasis>fac</emphasis>. <emphasis>fac </emphasis>precisa ser num&#xE9;rico. (Padr&#xE3;o &#xE9; 2).</para>
      <para>splogger converte caracteres que n&#xE3;o podem ser impressos por &#x201C;?&#x201D; (interroga&#xE7;&#xE3;o).</para>
      <para>splogger n&#xE3;o loga linhas em branco.</para>
      <para>splogger quebra linhas que contenham mais que 800 caracteres (desde que syslog n&#xE3;o suporte longas mensagens) e adiciona um &#x201C;+&#x201D; (adi&#xE7;&#xE3;o) depois do timestamp para indicar uma quebra de linha.</para>
      <para>Funcionamento geral da entrega de mensagens no qmail:</para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/img002.jpg" width="11.409cm" depth="16.93cm"/>
        </imageobject>
      </mediaobject>
      <para/>
    </section>
  </section>
  <section>
    <title>Utilit&#xE1;rios do qmail</title>
    <para>Estes utilit&#xE1;rios ampliam os recursos do qmail. Basicamente, ajudam em tarefas espec&#xED;ficas e geralmente s&#xE3;o invocados no momento do recebimento de e-mails, ou seja, no momento anterior a entrada do e-mail na caixa do usu&#xE1;rio. Normalmente s&#xE3;o utilizados dentro dos arquivos <emphasis>.qmail</emphasis>.</para>
    <section>
      <title>bouncesaying</title>
      <para>
        <command>bouncesaying </command>
        <emphasis>erro</emphasis>
        <command> [ </command>
        <emphasis>programa</emphasis>
        <command> [ </command>
        <emphasis>argumentos</emphasis>
        <command> ...] ]</command>
      </para>
      <para>Redireciona o e-mail para o programa <emphasis>programa (</emphasis>e opicionalmente os <emphasis>argumentos</emphasis> para serem utilizados em <emphasis>programa)</emphasis>. </para>
      <para>Se o c&#xF3;digo de erro retornado por <emphasis>programa</emphasis> for 0 (zero), o texto indicado em <emphasis>erro</emphasis> ser&#xE1; enviado para o remetente, logado no sistema de logs e a mensagem n&#xE3;o ser&#xE1; entregue. </para>
      <para>Se <emphasis>programa </emphasis>retornar qualquer outro c&#xF3;digo de erro ou n&#xE3;o existir, bouncesaying sai com c&#xF3;digo de erro 0 (zero) e continua o processo. </para>
      <para>Se n&#xE3;o for informado nenhum <emphasis>programa</emphasis>, bouncesaying sempre retornar&#xE1; a mensagem indicada em <emphasis>erro</emphasis>:</para>
      <para>
        <command>bouncesaying 'This address no longer accepts mail.'</command>
      </para>
    </section>
    <section>
      <title>condredirect</title>
      <para>
        <command>condredirect </command>
        <emphasis>novoendere&#xE7;o</emphasis>
        <command> </command>
        <emphasis>programa </emphasis>
        <command>[ </command>
        <emphasis>argumentos</emphasis>
        <command> ]</command>
      </para>
      <para>Redireciona o e-mail para o programa <emphasis>programa</emphasis>(e opicionalmente os <emphasis>argumentos </emphasis>para serem utilizados em <emphasis>programa</emphasis>). </para>
      <para>Se o c&#xF3;digo de erro retornado por <emphasis>programa</emphasis> for 0 (zero), condredirect redireciona o e-mail para <emphasis>novoendere&#xE7;o</emphasis> e sai com c&#xF3;digo de erro 99 (noventa e nove), ignorando qualquer outro comando.</para>
      <para>Se o c&#xF3;digo de erro retornado por <emphasis>programa</emphasis> for 111 (cento e onze), condredirect sai com c&#xF3;digo de erro 111, o e-mail volta para a fila de e-mails e a entrega ser&#xE1; tentada novamente mais tarde.</para>
      <para>Se <emphasis>programa </emphasis>retornar qualquer outro c&#xF3;digo de erro ou n&#xE3;o existir, condredirect sai retornando c&#xF3;digo de erro 0 (zero) e continua o processo de entrega da mensagem.</para>
      <para><emphasis role="strong">OBS: </emphasis>Se habilitar condredirect em um arquivo .qmail, n&#xE3;o se esque&#xE7;a de adicionar uma linha especificando a entrega na sua caixa de e-mail.</para>
      <para>Ex: conte&#xFA;do do arquivo <emphasis role="strong">$HOME/.qmail</emphasis> </para>
      <para>
        <command>| condredirect telles@newdomain.com $HOME/meuscript.sh</command>
      </para>
    </section>
    <section>
      <title>except</title>
      <para>
        <command>except </command>
        <emphasis>programa</emphasis>
        <command> [ </command>
        <emphasis>argumentos</emphasis>
        <command> ]</command>
      </para>
      <para>Altera o c&#xF3;digo de retorno de erro de um programa. </para>
      <para>Se <emphasis>programa</emphasis> retornar o c&#xF3;digo de erro 0 (zero), except sai com c&#xF3;digo de erro 100 (cem).</para>
      <para>Se <emphasis>programa</emphasis> sair com c&#xF3;digo de erro 111 (cento e onze), except tamb&#xE9;m sai com c&#xF3;digo de erro 111.</para>
      <para>Qualquer outro c&#xF3;digo de erro retornado por <emphasis>programa </emphasis>faz com que except saia com c&#xF3;digo de erro 0 (zero).</para>
      <para>except &#xE9; normalmente utilizado em conjunto com <emphasis role="strong">bouncesaying</emphasis> e <emphasis role="strong">condredirect</emphasis>.</para>
      <para>Ex: conte&#xFA;do do arquivo <emphasis role="strong">$HOME/.qmail</emphasis></para>
      <para>
        <command>| bouncesaying &#x2018;Apenas p/ o assunto qmail !&#x2019; except grep -qi &#x2018;Sobre qmail&#x2019;</command>
      </para>
      <para>
        <command>./Maildir/</command>
      </para>
      <para>O exemplo acima, faz com que <emphasis role="strong">bouncesaying</emphasis> retorne o e-mail para o destinat&#xE1;rio caso o e-mail n&#xE3;o contenha as palavras &#x2018;Sobre qmail&#x2019; no cabe&#xE7;alho do e-mail ou em seu corpo.</para>
    </section>
    <section>
      <title>forward</title>
      <para>
        <command>forward </command>
        <emphasis>recipiente1 recipiente2 ...</emphasis>
      </para>
      <para>Redireciona novos e-mails para um ou mais endere&#xE7;os de recipientes<emphasis>.</emphasis></para>
      <para>Possui o mesmo efeito que inserir cada endere&#xE7;o dentro de um arquivo <emphasis role="strong">.qmail</emphasis><emphasis>, </emphasis>mas com a vantagem de poder contru&#xED;r o endere&#xE7;o de e-mail do recipiente no momento da entrega.</para>
      <para>Ex:</para>
      <para>
        <command>| forward ${LOCAL/rodrigo/rodrigo-lixo}@${HOST}</command>
      </para>
      <para>No exemplo anterior, quando utilizado no arquivo <emphasis role="strong">.qmail</emphasis><emphasis> </emphasis>dentro do diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> do usu&#xE1;rio <emphasis role="strong">rodrigo, </emphasis>forward<emphasis role="strong"> </emphasis>encaminhar&#xE1; todas as novas mensagens para a conta <emphasis role="strong">rodrigo-lixo</emphasis><emphasis> </emphasis>do mesmo dom&#xED;nio que <emphasis role="strong">rodrigo.</emphasis></para>
    </section>
    <section>
      <title>maildirwatch</title>
      <para>Monitora o diret&#xF3;rio de e-mail do usu&#xE1;rio e reporta quando novas mensagens s&#xE3;o recebidas, exibindo um pequeno sum&#xE1;rio com as novas mensagens. </para>
      <para>maildirwatch imprime na tela, um sum&#xE1;rio de novas mensagens 2 (duas) vezes por minuto.</para>
      <para>maildirwatch utiliza a vari&#xE1;vel de ambiente <emphasis role="strong">$MAILDIR</emphasis> para identificar o diret&#xF3;rio a ser monitorado.</para>
      <para>Foi desenvolvido para ser executado em um terminal compat&#xED;vel com <emphasis role="strong">VT100</emphasis>; limpa a tela antes da impress&#xE3;o de cada sum&#xE1;rio.</para>
    </section>
    <section>
      <title>preline</title>
      <para>
        <command>preline [ -dfr ] </command>
        <emphasis>programa </emphasis>
        <command>[ </command>
        <emphasis>argumentos</emphasis>
        <command> ]</command>
      </para>
      <para>Sujeita cada nova mensagem atrav&#xE9;z de <emphasis>programa</emphasis>. </para>
      <para>Por padr&#xE3;o, preline adiciona 3 (tr&#xEA;s) campos no cabe&#xE7;alho do e-mail.</para>
      <para>Os campos <emphasis role="strong">From:, Return-Path:</emphasis> e <emphasis role="strong">Delivered-To:</emphasis> s&#xE3;o adicionados ao cabe&#xE7;alho do e-mail (caso j&#xE1; n&#xE3;o existam) com seus respectivos valores.</para>
      <para>Algumas op&#xE7;&#xF5;es podem ser utilizadas para modificar a a&#xE7;&#xE3;o padr&#xE3;o de preline.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.6cm"/>
          <colspec colname="c2" colwidth="15.4cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-d</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o insere o campo <emphasis role="strong">Delivered-To:</emphasis>. Utilize esta op&#xE7;&#xE3;o quando o recipiente da mensagem de entrada est&#xE1; atualmente sob controle remoto, mas foi enviada aqui atrav&#xE9;z de <emphasis role="strong">control/virtualdomains</emphasis> para roteamento manual.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-f</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o insere o campo <emphasis role="strong">From:</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-r</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o insere o campo <emphasis role="strong">Return-Path:</emphasis>.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
    <section>
      <title>qbiff</title>
      <para>Imprime uma mensagem no terminal do usu&#xE1;rio quando um novo e-mail chegar em sua caixa de e-mails.</para>
      <para>Para que esta notifica&#xE7;&#xE3;o funcione, &#xE9; necess&#xE1;rio que o programa qbiff esteja devidamente configurado no arquivo <emphasis role="strong">$HOME/.qmail</emphasis> do usu&#xE1;rio.</para>
      <para>Ex:</para>
      <para>
        <command>./Maildir/</command>
      </para>
      <para>
        <command>| qbiff</command>
      </para>
      <para><emphasis role="strong">OBS:</emphasis> &#xC9; necess&#xE1;rio habilitar o recebimento de mensagens no terminal do usu&#xE1;rio via &#x2018;biff y&#x2019;.</para>
    </section>
    <section>
      <title>qreceipt</title>
      <para>
        <command>qreceipt </command>
        <emphasis>seu-email</emphasis>
      </para>
      <para>Responde &#xE0; mensagens que solicitam uma confirma&#xE7;&#xE3;o de recebimento.</para>
      <para>Se <emphasis>seu-email</emphasis> estiver contido no campo <emphasis role="strong">Notice-Requested-Upon-Delivery-To:</emphasis> do cabe&#xE7;alho do e-mail, qreceipt enviar&#xE1; uma notifica&#xE7;&#xE3;o de recebimento ao remetente.</para>
      <para><emphasis role="strong">OBS: </emphasis>Se habilitar qreceipt em um arquivo .qmail, n&#xE3;o se esque&#xE7;a de adicionar uma linha especificando a entrega na sua caixa de e-mail.</para>
      <para>Ex:</para>
      <para>
        <command>./Maildir/</command>
      </para>
      <para>
        <command>| qreceipt telles@domain.org</command>
      </para>
      <para>A mensagem que o remetente da mensagem receber&#xE1;, ser&#xE1; algo como:</para>
      <para>
        <command>From: DELIVERY NOTICE SYSTEM &lt;endereco-remetente&gt;</command>
      </para>
      <para>
        <command>To: &lt;endereco-remetente&gt;</command>
      </para>
      <para>
        <command>Subject: success notice</command>
      </para>
      <para>
        <command>Hi! This is the qreceipt program. Your message was delivered to the</command>
      </para>
      <para>
        <command>following address: telles@domain.org. Thanks for asking.</command>
      </para>
    </section>
  </section>
  <section>
    <title>Utilit&#xE1;rios de administra&#xE7;&#xE3;o</title>
    <section>
      <title>maildir2mbox</title>
      <para>Converte caixas de correio no formato <emphasis role="strong">Maildir</emphasis> para o formato <emphasis role="strong">mbox</emphasis> (Mailbox<emphasis>)</emphasis><emphasis role="strong">.</emphasis> </para>
      <para>Requer 3 (tr&#xEA;z) vari&#xE1;veis de ambiente setadas:</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="2.3cm"/>
          <colspec colname="c2" colwidth="14.7cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Vari&#xE1;vel</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>$MAIL</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Localiza&#xE7;&#xE3;o do Mailbox do usu&#xE1;rio a ser criado.</para>
              </entry>
            </row>
            <row>
              <entry>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>$MAILTMP</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Localiza&#xE7;&#xE3;o do arquivo tempor&#xE1;rio de transi&#xE7;&#xE3;o a ser utilizado.</para>
              </entry>
            </row>
            <row>
              <entry>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>$MAILDIR</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Localiza&#xE7;&#xE3;o do Maildir do usu&#xE1;rio a ser convertido.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para><emphasis role="strong">$MAIL </emphasis>e <emphasis role="strong">$MAILTMP</emphasis> precisam estar no mesmo sistema de arquivos.</para>
      <para>maildir2mbox n&#xE3;o remove a mensagem de <emphasis role="strong">$MAILDIR </emphasis>enquanto n&#xE3;o escreve-la completamente dentro de <emphasis role="strong">$MAIL</emphasis>.</para>
      <para>maildir2mbox trava o arquivo <emphasis role="strong">$MAIL</emphasis> para proteg&#xEA;-lo de acesso simult&#xE2;neo por um cliente de e-mail. Este sistema de trava n&#xE3;o protege <emphasis role="strong">$MAIL</emphasis> de acesso simult&#xE2;neo por outro processo maildir2mbox. Execute apenas uma inst&#xE2;ncia de maildir2mbox por vez.</para>
    </section>
    <section>
      <title>maildirmake</title>
      <para>
        <command>maildirmake </command>
        <emphasis>Maildir</emphasis>
      </para>
      <para>Cria o diret&#xF3;rio <emphasis>Maildir </emphasis>utilizando o formato de caixa de correio <emphasis role="strong">Maildir.</emphasis> </para>
      <para>maildirmake criar&#xE1; a estrututra <emphasis role="strong">new</emphasis><emphasis>, </emphasis><emphasis role="strong">cur </emphasis>e <emphasis role="strong">tmp </emphasis>dentro de <emphasis role="strong">Maildir</emphasis><emphasis>, </emphasis>aonde <emphasis role="strong">Maildir</emphasis> deve ser criado dentro do diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> do usu&#xE1;rio e usu&#xE1;rio deve ser o dono de <emphasis role="strong">Maildir</emphasis> e todos os seus subdiret&#xF3;rios.</para>
    </section>
    <section>
      <title>qmail-getpw</title>
      <para>
        <command>qmail-getpw </command>
        <emphasis>local</emphasis>
      </para>
      <para>Procura o usu&#xE1;rio que controla o endere&#xE7;o <emphasis>local</emphasis>. Retorna <emphasis>usu&#xE1;rio</emphasis>, <emphasis>Unix userid</emphasis>, <emphasis>Unix groupid</emphasis>, <emphasis>$HOME</emphasis>, <emphasis>tra&#xE7;o</emphasis> e <emphasis>extens&#xE3;o</emphasis>.</para>
      <para>Quando <emphasis>local</emphasis><emphasis> </emphasis>&#xE9; igual a<emphasis> usu&#xE1;rio</emphasis><emphasis role="strong">, </emphasis><emphasis>tra&#xE7;o</emphasis> e <emphasis>extens&#xE3;o</emphasis> retornam vazios.</para>
      <para>Quando <emphasis>local </emphasis>&#xE9; igual a <emphasis>usu&#xE1;rio</emphasis><emphasis role="strong">-algumacoisa, </emphasis><emphasis>tra&#xE7;o</emphasis> ser&#xE1; &#x201C;<emphasis role="strong">-</emphasis>&#x201C; e <emphasis>extens&#xE3;o</emphasis> ser&#xE1; &#x201C;<emphasis role="strong">algumacoisa</emphasis>&#x201D;.</para>
      <para>Aonde, mensagens para <emphasis>local </emphasis>ser&#xE3;o gerenciadas por <emphasis role="strong">$HOME/.qmail</emphasis>-<emphasis>tra&#xE7;oextens&#xE3;o</emphasis>.</para>
      <para>Se qmail-getpw n&#xE3;o encontrar o usu&#xE1;rio que controla <emphasis>local</emphasis>, o usu&#xE1;rio <emphasis role="strong">alias</emphasis> entra em cena e toma o controle da mensagem. Neste caso, <emphasis>tra&#xE7;o</emphasis> ser&#xE1; &#x201C;-&#x201C; e <emphasis>ext </emphasis>ser&#xE1; &#x201C;<emphasis>local</emphasis>&#x201D;.</para>
      <para>Se qmail-getpw encontrar problemas na execu&#xE7;&#xE3;o, sai com c&#xF3;digo de erro diferente de 0 (zero) e n&#xE3;o imprime nada em tela.</para>
      <para>qmail-getpw considera como conta local todos os usu&#xE1;rios do arquivo <emphasis role="strong">/etc/passwd</emphasis> se:</para>
      <itemizedlist>
        <listitem>
          <para>N&#xE3;o possuir UID 0 (zero).</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>O diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> do usu&#xE1;rio existir e for vis&#xED;vel por qmail-getpw.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>O usu&#xE1;rio &#xE9; o dono de seu diret&#xF3;rio <emphasis role="strong">$HOME</emphasis>.</para>
        </listitem>
      </itemizedlist>
      <para>qmail-getpw ignora nomes de usu&#xE1;rios que contenham letras em mai&#xFA;sculas.</para>
      <para>qmail-getpw assume que todos os nomes de usu&#xE1;rios possuem menos de 32 caracteres.</para>
      <para><emphasis role="strong">OBS: </emphasis>O mecanismo <emphasis role="strong">qmail-users</emphasis> cancela as decis&#xF5;es tomadas por qmail-getpw, &#xE9; confi&#xE1;vel, altamente configur&#xE1;vel e muito mais r&#xE1;pido que qmail-getpw.</para>
    </section>
    <section>
      <title>qmail-newmrh</title>
      <para>Cria o arquivo base de dados <emphasis role="strong">control/morercpthosts.cdb</emphasis> em formato bin&#xE1;rio a partir do arquivo <emphasis role="strong">control/morercpthosts, </emphasis>que ser&#xE1; utilizado pelo programa <emphasis role="strong">qmail-smtpd</emphasis> de forma mais eficiente.</para>
      <para>Caso exista algum problema com o arquivo <emphasis role="strong">control/morercpthosts</emphasis>, qmail-newmrh exibe uma mensagem de erro e n&#xE3;o gera o novo arquivo <emphasis role="strong">control/morercpthosts.cdb.</emphasis></para>
      <para>qmail-newmrh assegura que <emphasis role="strong">control/morercpthosts.cdb</emphasis> seja atualizado atomicamente (atualiza&#xE7;&#xF5;es simult&#xE2;neas), desta forma, <emphasis role="strong">qmail-smtpd</emphasis> n&#xE3;o precisa aguardar qmail-newmrh liberar o arquivo para acess&#xE1;-lo de forma segura.</para>
      <para>qmail-newmrh n&#xE3;o tenta proteger <emphasis role="strong">control/morercpthosts.cdb </emphasis>contra atualiza&#xE7;&#xF5;es simult&#xE2;neas.</para>
      <para>O bin&#xE1;rio <emphasis role="strong">control/morercpthosts.cdb </emphasis>&#xE9; port&#xE1;vel entre m&#xE1;quinas diferentes.</para>
    </section>
    <section>
      <title>qmail-newu</title>
      <para>Cria o arquivo database <emphasis role="strong">/var/qmail/users/cdb</emphasis> em formato bin&#xE1;rio a partir do arquivo <emphasis role="strong">/var/qmail/users/assign</emphasis>, que ser&#xE1; utilizado por <emphasis role="strong">qmail-lspawn</emphasis> de forma mais eficiente.</para>
      <para>Caso exista algum problema na leitura do arquivo <emphasis role="strong">users/assign</emphasis>, qmail-newu exibe uma mensagem de erro e n&#xE3;o gera o novo arquivo <emphasis role="strong">users/cdb</emphasis>.</para>
      <para>qmail-newu assegura que <emphasis role="strong">users/cdb</emphasis> seja atualizado atomicamente (atualiza&#xE7;&#xF5;es simult&#xE2;neas), desta forma, <emphasis role="strong">qmail-lspawn</emphasis> n&#xE3;o precisa aguardar qmail-newu liberar o arquivo para acess&#xE1;-lo de forma segura.</para>
      <para>qmail-newu n&#xE3;o tenta proteger <emphasis role="strong">users/cdb</emphasis> contra atualiza&#xE7;&#xF5;es simult&#xE2;neas.</para>
      <para>O bin&#xE1;rio <emphasis role="strong">users/cdb </emphasis>&#xE9; port&#xE1;vel entre m&#xE1;quinas diferentes.</para>
    </section>
    <section>
      <title>qmail-pw2u</title>
      <para>
        <command>qmail-pw2u [ -/ohHuUC ] [ -c</command>
        <emphasis>char</emphasis>
        <command> ]</command>
      </para>
      <para>L&#xEA; &#xE9; um arquivo de senhas no padr&#xE3;o <emphasis role="strong">V7 </emphasis>da entrada padr&#xE3;o e imprime na sa&#xED;da padr&#xE3;o no formato <emphasis role="strong">qmail-users</emphasis>.</para>
      <para>Geralmente a sa&#xED;da produzida pelo comando qmail-pw2u dever ser gravada no arquivo <emphasis role="strong">users/assign</emphasis>.</para>
      <para>Cada linha de um arquivo de senhas no formato V7 deve ter a forma:</para>
      <para>usu&#xE1;rio:senha:uid:gid:gecos:home:shell</para>
      <para>Aonde, <emphasis>usu&#xE1;rio</emphasis> &#xE9; o nome da conta local, <emphasis>uid </emphasis>e <emphasis>gid</emphasis> s&#xE3;o o User ID e Group ID de <emphasis>usu&#xE1;rio</emphasis>, <emphasis>home</emphasis> &#xE9; o diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> de <emphasis>usu&#xE1;rio. senha, gecos</emphasis> e s<emphasis>hell</emphasis> s&#xE3;o ignorados por qmail-pw2u.</para>
      <para>qmail-pw2u ignora o usu&#xE1;rio se:</para>
      <itemizedlist>
        <listitem>
          <para>Possuir UID 0 (zero).</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>Diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> n&#xE3;o existir.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>O usu&#xE1;rio n&#xE3;o for o dono de seu diret&#xF3;rio <emphasis role="strong">$HOME.</emphasis></para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>O nome de usu&#xE1;rio possuir letras em mai&#xFA;sculo.</para>
        </listitem>
      </itemizedlist>
      <para>Se o conte&#xFA;do impresso por qmail-pw2u for gravado no arquivo <emphasis role="strong">/var/qmail/users/assign</emphasis> e for executado o comando <emphasis role="strong">qmail-newu</emphasis>, <emphasis role="strong">qmail-lspawn</emphasis><emphasis> </emphasis>ir&#xE1; obedecer todas as instru&#xE7;&#xF5;es impressas por qmail-pw2u.</para>
      <para><emphasis role="strong">OBS: </emphasis>Ap&#xF3;s alterar qualquer usu&#xE1;rio, uid, gid ou diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> dentro do arquivo de senhas, &#xE9; necess&#xE1;rio executar qmail-pw2u e <emphasis role="strong">qmail-newu</emphasis> novamente, para que <emphasis role="strong">qmail-lspawn</emphasis> obede&#xE7;a &#xE0;s altera&#xE7;&#xF5;es.</para>
      <para>As a&#xE7;&#xF5;es padr&#xE3;o de qmail-pw2u podem ser alteradas, utilizando-se os seguintes arquivos dentro do diret&#xF3;rio <emphasis role="strong">/var/qmail/users</emphasis>:</para>
      <itemizedlist>
        <listitem>
          <para>include</para>
        </listitem>
      </itemizedlist>
      <para>Lista de usu&#xE1;rios permitidos, um por linha. </para>
      <para role="lineBreak">Se <emphasis role="strong">include </emphasis>existir, e o usu&#xE1;rio n&#xE3;o estiver listado neste arquivo, ser&#xE1; ignorado.</para>
      <itemizedlist>
        <listitem>
          <para>exclude</para>
        </listitem>
      </itemizedlist>
      <para>Lista de usu&#xE1;rios que devem ser ignorados, um por linha. </para>
      <para role="lineBreak">Se <emphasis role="strong">exclude</emphasis> existir, e o usu&#xE1;rio estiver listado neste arquivo, ser&#xE1; ignorado.</para>
      <itemizedlist>
        <listitem>
          <para>mailnames</para>
        </listitem>
      </itemizedlist>
      <para>Nomes substitutos para nomes de usu&#xE1;rios, cada linha deve ter a forma:</para>
      <para><command>usuario:mailname1:mailnamel2</command>Aonde mensagens para os endere&#xE7;os de e-mail <emphasis>mailname1, mailname1-algumacoisa, mailname2</emphasis> ser&#xE3;o entregues para <emphasis>usuario</emphasis>.</para>
      <para role="lineBreak"><emphasis role="strong">OBS: </emphasis>Mensagens para os endere&#xE7;os <emphasis>usu&#xE1;rio</emphasis> e <emphasis>usu&#xE1;rio-algumacoisa</emphasis> n&#xE3;o ser&#xE3;o entregues para <emphasis>usu&#xE1;rio</emphasis>, a menos que estejam listados como um dos <emphasis>mailnames.</emphasis></para>
      <itemizedlist>
        <listitem>
          <para>subusers</para>
        </listitem>
      </itemizedlist>
      <para>Endere&#xE7;os extra para nomes de usu&#xE1;rios, cada linha deve ter a forma:</para>
      <para role="lineBreak"><command>sub:usuario:extra:</command><emphasis>sub</emphasis> ser&#xE1; gerenciado por <emphasis role="strong">$HOME/.qmail</emphasis>-<emphasis>extra</emphasis>, aonde <emphasis role="strong">$HOME</emphasis> ser&#xE1; o diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> de <emphasis>usu&#xE1;rio.sub-algumacoisa</emphasis> ser&#xE1; gerenciado por <emphasis role="strong">$HOME/.qmail</emphasis>-<emphasis>extra-algumacoisa.</emphasis></para>
      <itemizedlist>
        <listitem>
          <para>append</para>
        </listitem>
      </itemizedlist>
      <para>Tarefas extras, que ser&#xE3;o impressas na tela no final do processamento de qmail-pw2u.</para>
      <para>Pode-se ainda utilizar as op&#xE7;&#xF5;es:</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.9cm"/>
          <colspec colname="c2" colwidth="15.1cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-o</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Ignora usu&#xE1;rio se seu diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> n&#xE3;o existir (ou n&#xE3;o seja vis&#xED;vel por qmail-pw2u) ou caso n&#xE3;o seja o dono de seu diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-h</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>P&#xE1;ra o processamento se o diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> do usu&#xE1;rio n&#xE3;o existir (apropriado se cada usu&#xE1;rio deve ter seu diret&#xF3;rio <emphasis role="strong">$HOME</emphasis>) ou caso n&#xE3;o seja o dono de seu diret&#xF3;rio <emphasis role="strong">$HOME</emphasis>. </para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-H</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o checa se o usu&#xE1;rio &#xE9; dono de seu diret&#xF3;rio <emphasis role="strong">$HOME</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-u</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Permite letras em mai&#xFA;sculo no nome do usu&#xE1;rio.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-U</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Ignora usu&#xE1;rio, se houver alguma letra em mai&#xFA;sculo no nome do usu&#xE1;rio (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>
                  <emphasis role="strong">-c</emphasis>
                  <emphasis>char</emphasis>
                </para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza <emphasis>char</emphasis> como delimitador de extens&#xE3;o de usu&#xE1;rio no lugar de &#x201C;-&#x201D;</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-C</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Desabilita o mecanismo de extens&#xE3;o de usu&#xE1;rios.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-/</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza <emphasis role="strong">$HOME/.qmail-/</emphasis>... ao inv&#xE9;s de <emphasis role="strong">$HOME/.qmail-</emphasis>...</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
    <section>
      <title>qmail-qread</title>
      <para>Gera e mostra um relat&#xF3;rio detalhado das mensagens que est&#xE3;o aguardando na fila do qmail. Este relat&#xF3;rio mostra a data que a mensagem entrou em fila, tamanho em bytes, remetente e todos os recipientes que devem receber a mensagem.</para>
      <para>Deve ser executado pelo usu&#xE1;rio root<emphasis> </emphasis>ou pelo usu&#xE1;rio qmails membro do grupo qmail. </para>
    </section>
    <section>
      <title>qmail-qstat</title>
      <para>Gera e mostra um relat&#xF3;rio com o n&#xFA;mero de mensagens que est&#xE3;o aguardando na fila do qmail para serem processadas e entregues.</para>
      <para>Deve ser executado pelo usu&#xE1;rio root<emphasis> </emphasis>ou por algum usu&#xE1;rio do grupo qmail.</para>
    </section>
    <section>
      <title>qmail-showctl</title>
      <para>Analisa os arquivos de configura&#xE7;&#xE3;o do qmail e mostra sua configura&#xE7;&#xE3;o corrente de forma detalhada.</para>
    </section>
    <section>
      <title>qmail-tcpok</title>
      <para>Limpa a tabela de timeout TCP do programa <emphasis role="strong">qmail-remote</emphasis>, fazendo com que <emphasis role="strong">qmail-remote</emphasis> n&#xE3;o utilize nenhuma refer&#xEA;ncia de tempo para os endere&#xE7;os que falharam.</para>
      <para>Deve ser executado pelo usu&#xE1;rio <emphasis role="strong">root</emphasis><emphasis> </emphasis>ou pelo usu&#xE1;rio <emphasis role="strong">qmailr</emphasis> membro do grupo <emphasis role="strong">qmail</emphasis>.</para>
    </section>
    <section>
      <title>qmail-tcpto</title>
      <para>Gera e mostra um relat&#xF3;rio com os timeouts da tabela TCP do programa <emphasis role="strong">qmail-remote</emphasis>.</para>
      <para>Se o programa <emphasis role="strong">qmail-remote</emphasis> falhar em uma tentativa de conex&#xE3;o SMTP, o IP do host remoto &#xE9; gravado nesta tabela. Se a conex&#xE3;o SMTP para este host falhar uma segunda vez (depois de no m&#xED;nimo 2 minutos de conex&#xF5;es sem sucesso), esta entrada &#xE9; marcada na tabela e o qmail n&#xE3;o tentar&#xE1; entregar esta mensagem por 1 (uma) hora.</para>
      <para>Deve ser executado pelo usu&#xE1;rio <emphasis role="strong">root</emphasis><emphasis> </emphasis>ou pelo usu&#xE1;rio <emphasis role="strong">qmailr</emphasis> membro do grupo <emphasis role="strong">qmail</emphasis>.</para>
    </section>
    <section>
      <title>tcp-env</title>
      <para>
        <command>tcp-env [ -rR ] [ -t </command>
        <emphasis>n</emphasis>
        <command> ] </command>
        <emphasis>programa </emphasis>
        <command>[ </command>
        <emphasis>argumentos</emphasis>
        <command> ]</command>
      </para>
      <para>Tenta obter informa&#xE7;&#xF5;es sobre conex&#xF5;es TCP para setar uma s&#xE9;rie de vari&#xE1;veis de ambiente que ser&#xE3;o utilizadas por <emphasis>programa</emphasis> (e opcionalmente seus <emphasis>argumentos</emphasis>).</para>
      <para>A entrada de dados para o programa tcp-env deve ser uma conex&#xE3;o do tipo TCP.</para>
      <para>tcp-env &#xE9; geralmente utilizado em conjunto com o programa <emphasis role="strong">inetd.</emphasis></para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.9cm"/>
          <colspec colname="c2" colwidth="15.1cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-r</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tenta obter informa&#xE7;&#xE3;o do host remoto e setar a vari&#xE1;vel <emphasis role="strong">$TCPREMOTEINFO</emphasis> (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-R</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o tenta obter <emphasis role="strong">$TCPREMOTEINFO</emphasis> do host remoto.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>
                  <emphasis role="strong">-t </emphasis>
                  <emphasis>n</emphasis>
                </para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tempo m&#xE1;ximo em segundos que tentar&#xE1; obter <emphasis role="strong">$TCPREMOTEINFO</emphasis> de uma conex&#xE3;o TCP antes de desistir. O padr&#xE3;o &#xE9; 30 segundos.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para/>
    </section>
  </section>
  <section>
    <title>Arquivos de controle/configura&#xE7;&#xE3;o</title>
    <section>
      <title>badmailfrom</title>
      <para>Listagem de remetentes que ser&#xE3;o proibidos de enviar e-mails para este servidor ou para servidores remotos. </para>
      <para>Ex:</para>
      <para>
        <command>null@spammer.com</command>
      </para>
      <para>
        <command>@spammers.com</command>
      </para>
      <para>Utilizado por: <emphasis role="strong">qmail-smtpd</emphasis>.</para>
    </section>
    <section>
      <title>bouncefrom</title>
      <para>Define o nome de usu&#xE1;rio (sender) que ser&#xE1; utilizado em mensagens de erro que ser&#xE3;o retornadas aos seus respectivos recipientes. </para>
      <para>Este usu&#xE1;rio n&#xE3;o representa um usu&#xE1;rio local do sistema. </para>
      <para>Padr&#xE3;o: <emphasis role="strong">MAILER-DAEMON</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>bouncehost</title>
      <para>Define o nome de host que ser&#xE1; utilizado em mensagens de erro que ser&#xE3;o retornadas aos seus respectivos recipientes. </para>
      <para>Se a mensagem n&#xE3;o puder ser entregue permanentemente, <emphasis role="strong">qmail-send</emphasis> envia uma &#xFA;nica mensagem de bounce para o <emphasis role="strong">sender</emphasis>. </para>
      <para>O <emphasis role="strong">sender </emphasis>ter&#xE1; o formato <emphasis role="strong">bouncefrom@bouncehost, </emphasis>caso contr&#xE1;rio ser&#xE1; vazio.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>concurrencylocal</title>
      <para>Define o n&#xFA;mero m&#xE1;ximo de entregas locais simult&#xE2;neas que o qmail pode gerenciar. </para>
      <para>Padr&#xE3;o: <emphasis role="strong">10</emphasis> - podendo se estender a <emphasis role="strong">120</emphasis> (limite m&#xE1;ximo definido na compila&#xE7;&#xE3;o do qmail). Se for 0 (zero), as entregas locais ser&#xE3;o colocadas em espera.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>concurrencyremote</title>
      <para>Define o n&#xFA;mero m&#xE1;ximo de entregas remotas simult&#xE2;neas que o qmail pode gerenciar. </para>
      <para>Padr&#xE3;o: <emphasis role="strong">20</emphasis> - podendo se estender a <emphasis role="strong">120</emphasis>. (limite m&#xE1;ximo definido na compila&#xE7;&#xE3;o do qmail). Se for 0 (zero), as entregas remotas ser&#xE3;o colocadas em espera.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>databytes</title>
      <para>Define o tamanho m&#xE1;ximo em bytes que um e-mail pode ter ou 0 (zero) para sem limite. Para definir o tamanho m&#xE1;ximo de e-mails em 10MB, utilize:</para>
      <para>
        <command>10485760</command>
      </para>
      <para>Se a mensagem exceder este limite, <emphasis role="strong">qmail-smtpd</emphasis> retorna um c&#xF3;digo de erro permanente ao cliente.</para>
      <para>Se o disco local estiver cheio ou <emphasis role="strong">qmail-smtpd </emphasis>alcan&#xE7;ar um limite de recursos, <emphasis role="strong">qmail-smtpd </emphasis>retorna um c&#xF3;digo de erro tempor&#xE1;rio ao cliente.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">0</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-smtpd</emphasis>.</para>
    </section>
    <section>
      <title>defaultdomain</title>
      <para>Dom&#xED;nio padr&#xE3;o que ser&#xE1; utilizado em endere&#xE7;os de e-mail que n&#xE3;o possuam a forma <emphasis role="strong">usuario@nomedohost.</emphasis><emphasis>dominio</emphasis>. </para>
      <para>Por padr&#xE3;o, qmail-inject adiciona o conte&#xFA;do de defaultdomain a qualquer nome de host que n&#xE3;o possua o dom&#xED;nio; tamb&#xE9;m v&#xE1;lido para <emphasis role="strong">defaulthost</emphasis>.</para>
      <para>Exce&#xE7;&#xF5;es: veja <emphasis role="strong">plusdomain</emphasis>.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-inject</emphasis>.</para>
    </section>
    <section>
      <title>defaulthost</title>
      <para>Nome de host padr&#xE3;o que ser&#xE1; utilizado em endere&#xE7;os de e-mail que n&#xE3;o possuam a forma <emphasis role="strong">usuario@</emphasis><emphasis>nomedohost</emphasis><emphasis role="strong">.dominio</emphasis>. </para>
      <para>Por padr&#xE3;o, qmail-inject adiciona o conte&#xFA;do de defaulthost a qualquer endere&#xE7;o de e-mail que n&#xE3;o possua o nome do host.</para>
      <para>defaulthost n&#xE3;o precisa ser o nome corrente do servidor.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-inject</emphasis>.</para>
    </section>
    <section>
      <title>doublebouncehost</title>
      <para>Especifica o nome de host que ser&#xE1; utilizado no <emphasis role="strong">sender </emphasis>de mensagens de erro que foram enviadas e retornaram com erro.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.<emphasis role="strong"> </emphasis></para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>doublebounceto</title>
      <para>Especifica o nome de usu&#xE1;rio que ser&#xE1; utilizado para receber mensagens de erro que foram enviadas e retornaram com erro.</para>
      <para><emphasis role="strong">qmail-send</emphasis> envia mensagens desse tipo para <emphasis role="strong">doublebounceto@doublebouncehosts</emphasis>; se a mensagem retornar com erro, qmail exclui a mensagem.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">postmaster</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>envnoathost</title>
      <para>Define o dom&#xED;nio padr&#xE3;o a ser utilizado para recipientes que n&#xE3;o possuirem &#x201C;<emphasis role="strong">@&#x201D;</emphasis> em seu endere&#xE7;o de e-mail.</para>
      <para>Se <emphasis role="strong">qmail-send</emphasis> encontrar um recipiente sem &#x201C;<emphasis role="strong">@</emphasis>&#x201D; em seu endere&#xE7;o de e-mail, adiciona <emphasis role="strong">@envnoathost</emphasis> ao endere&#xE7;o de e-mail.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>helohost</title>
      <para>Nome corrente do host, para ser utilizado por <emphasis role="strong">qmail-remote</emphasis> em sess&#xF5;es SMTP somente para identificar-se ao servidor remoto. </para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-remote</emphasis>.</para>
    </section>
    <section>
      <title>idhost</title>
      <para>Nome do host que ser&#xE1; utilizado no cabe&#xE7;alho <emphasis role="strong">Message-ID</emphasis> em e-mails.</para>
      <para>idhost n&#xE3;o precisa ser o nome corrente do servidor.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-inject</emphasis>.</para>
    </section>
    <section>
      <title>localiphost</title>
      <para>Altera o nome da m&#xE1;quina associado ao IP local. </para>
      <para><emphasis role="strong">qmail-smtpd </emphasis>&#xE9; respons&#xE1;vel por detectar endere&#xE7;os IP no formato <emphasis role="strong">a.b.c.d</emphasis>. Quando <emphasis role="strong">qmail-smtpd </emphasis>detecta um endere&#xE7;o de e-mail no formato <emphasis role="strong">box@[a.b.c.d]</emphasis> aonde <emphasis role="strong">[a.b.c.d] </emphasis>&#xE9; um endere&#xE7;o IP local, altera pelo conte&#xFA;do de localiphost.</para>
      <para>Isso &#xE9; feito antes do processamento de <emphasis role="strong">rcpthosts</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command>qmailserver.domain.net</command>
      </para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-smtpd</emphasis>.</para>
    </section>
    <section>
      <title>locals</title>
      <para>Lista de dom&#xED;nios considerados locais pelo qmail, um por linha. </para>
      <para>O e-mail <emphasis role="strong">usuario@dominio.com</emphasis> ser&#xE1; considerado local se <emphasis role="strong">dominio.com</emphasis> estiver listado em locals<emphasis>.</emphasis></para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>me</title>
      <para>Especifica o nome do host do servidor de e-mail local. </para>
      <para>&#xC9; o arquivo de controle mais importante do qmail, pois seu conte&#xFA;do &#xE9; utilizado como padr&#xE3;o por muitos outros arquivos, caso n&#xE3;o estejam presentes. Sem este arquivo o qmail n&#xE3;o funciona.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>morercpthosts</title>
      <para>Listagem de hosts e dom&#xED;nios adicionais que o qmail reconhecer&#xE1; como locais e aceitar&#xE1; mensagens para seus destinat&#xE1;rios. </para>
      <para>Utilizando <emphasis role="strong">qmail-newmrh</emphasis>, ser&#xE1; gerado um arquivo base de dados no formato bin&#xE1;rio (control/morercpthosts.cdb), que ser&#xE1; utilizado por <emphasis role="strong">qmail-smtpd</emphasis> para consultas mais r&#xE1;pidas e eficientes. &#xC9; necess&#xE1;rio executar <emphasis role="strong">qmail-newmrh</emphasis> toda vez que o conte&#xFA;do do arquivo morercpthosts for alterado, para que as altera&#xE7;&#xF5;es sejam efetivadas.</para>
      <para>Dica para grande quantidade de dom&#xED;nios: mantenha os 50 dom&#xED;nios mais acessados no arquivo <emphasis role="strong">rcpthosts </emphasis>e o restante em morercpthosts</para>
      <para>Utilizado por: <emphasis role="strong">qmail-smtpd</emphasis>.</para>
    </section>
    <section>
      <title>percenthack</title>
      <para>Especifica a lista de dom&#xED;nios aonde ser&#xE1; checado a presen&#xE7;a de &#x201C;%&#x201D; (sinal de percentagem) no nome do usu&#xE1;rio.</para>
      <para>Nomes de usu&#xE1;rios do tipo <emphasis role="strong">usuario%empresa.com@dominio.com</emphasis> ser&#xE3;o convertidos para <emphasis role="strong">usuario@empresa.com</emphasis><emphasis>.</emphasis></para>
      <para><emphasis role="strong">qmail-send</emphasis> processa percenthack antes de <emphasis role="strong">locals</emphasis><emphasis>.</emphasis></para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>plusdomain</title>
      <para>Extens&#xE3;o que <emphasis role="strong">qmail-inject</emphasis> adicionar&#xE1; ao final de dom&#xED;nios que terminam com o sinal &#x201C;+&#x201D; (adi&#xE7;&#xE3;o); tamb&#xE9;m v&#xE1;lido para <emphasis role="strong">defaulthost</emphasis>, se este terminar com um sinal &#x201C;+&#x201D;.</para>
      <para>Se o nome do host n&#xE3;o possuir a forma <emphasis role="strong">nomedohost.dominio </emphasis>mas terminar com o sinal &#x201C;+&#x201D;, <emphasis role="strong">qmail-inject</emphasis> utilizar&#xE1; plusdomain e n&#xE3;o <emphasis role="strong">defaultdomain</emphasis>. </para>
      <para>Ex:</para>
      <para>
        <command>com.br</command>
      </para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-inject</emphasis>.</para>
    </section>
    <section>
      <title>qmqpservers</title>
      <para>Especifica os endere&#xE7;os de servidores QMQP que ser&#xE3;o utilizados pelo programa qmail-qmqpc.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-qmqpc</emphasis>.</para>
    </section>
    <section>
      <title>queuelifetime</title>
      <para>Define o n&#xFA;mero m&#xE1;ximo em segundos que uma mensagem pode ficar na fila do qmail.</para>
      <para>Depois desse tempo, <emphasis role="strong">qmail-send</emphasis> tentar&#xE1; entregar a mensagem mais uma vez e tratar&#xE1; qualquer outro erro, como um erro permanente.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">604800</emphasis> (uma semana).</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
    <section>
      <title>rcpthosts</title>
      <para>Listagem de hosts e dom&#xED;nios que ser&#xE3;o reconhecidos pelo qmail como locais e ser&#xE3;o aceitas mensagens para seus recipientes. Caso n&#xE3;o exista, <emphasis role="strong">qmail-smtpd</emphasis> aceitar&#xE1; e-mails para qualquer host ou dom&#xED;nio.</para>
      <para>A documenta&#xE7;&#xE3;o do qmail recomenda adicionar n&#xE3;o mais que 50 hosts ou dom&#xED;nios em rcpthosts.</para>
      <para>Dom&#xED;nios adicionais devem ser adicionados em <emphasis role="strong">morercpthosts</emphasis>.<emphasis role="strong"> </emphasis></para>
      <para>Exce&#xE7;&#xE3;o: Se a vari&#xE1;vel de ambiente <emphasis role="strong">$RELAYCLIENT </emphasis>estiver setada, <emphasis role="strong">qmail-smtpd </emphasis>ignora rcpthosts e adiciona o conte&#xFA;do de <emphasis role="strong">$RELAYCLIENT </emphasis>ao endere&#xE7;o do recipiente.</para>
      <para>Ex:</para>
      <para>
        <command>qmailserver.domain.net</command>
      </para>
      <para>
        <command>domain.com.br</command>
      </para>
      <para>Utilizado por: <emphasis role="strong">qmail-smtpd</emphasis>.</para>
    </section>
    <section>
      <title>smtpgreeting</title>
      <para>Especifica a mensagem de boas vindas que ser&#xE1; exibida no banner apresentado por <emphasis role="strong">qmail-smtpd</emphasis>.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">me</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-smtpd</emphasis>.</para>
    </section>
    <section>
      <title>smtproutes</title>
      <para>Especifica rotas SMTP est&#xE1;ticas para entrega de e-mails em hosts remotos.</para>
      <para>Cada linha deve possuir o formato:</para>
      <para>
        <command>dominio:servidor-remoto</command>
      </para>
      <para>ou</para>
      <para>
        <command>dominio:servidor-remoto:porta-tcp </command>
      </para>
      <para>Ex:</para>
      <para>
        <command>dominio.com:[172.11.10.12]</command>
      </para>
      <para>
        <command>dominio.net:smtp2.dominio.net</command>
      </para>
      <para>
        <command>dominio.org:mail.dominio.org:26</command>
      </para>
      <para>Aonde, todos e-mails enviados para <emphasis role="strong">dominio.com </emphasis>ser&#xE3;o entregues no host <emphasis role="strong">172.11.10.12</emphasis><emphasis>, </emphasis>e-mails enviados para <emphasis role="strong">dominio.net</emphasis> ser&#xE3;o entregues no host <emphasis role="strong">smtp2.dominio.net</emphasis> e e-mails enviados para <emphasis role="strong">dominio.org</emphasis> ser&#xE3;o entregues no host <emphasis role="strong">mail.dominio.org</emphasis> na porta <emphasis role="strong">26/TCP</emphasis>.</para>
      <para><emphasis role="strong">qmail-remote</emphasis> n&#xE3;o tentar&#xE1; obter a entrada <emphasis role="strong">MX</emphasis> ou <emphasis role="strong">A</emphasis> via <emphasis role="strong">DNS</emphasis> para <emphasis role="strong">dominio.com</emphasis><emphasis>, </emphasis><emphasis role="strong">dominio.net</emphasis><emphasis> </emphasis>e<emphasis> </emphasis><emphasis role="strong">dominio.org</emphasis>.</para>
      <para>Se <emphasis>servidor-remoto </emphasis>n&#xE3;o for especificado, <emphasis role="strong">qmail-remote</emphasis> atuar&#xE1; de forma padr&#xE3;o, tentando obter a entrada <emphasis role="strong">MX</emphasis> para <emphasis>dominio</emphasis><emphasis role="strong"> </emphasis>atrav&#xE9;s de <emphasis role="strong">DNS</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command>.co.uk:</command>
      </para>
      <para>
        <command>:master.co.uk </command>
      </para>
      <para>Aonde, mensagens enviadas para dom&#xED;nios que terminam em &#x201C;<emphasis role="strong">.co.uk</emphasis>&#x201D; (mas n&#xE3;o para co.uk) ser&#xE3;o roteados atrav&#xE9;s de sua entrada <emphasis role="strong">MX</emphasis>; qualquer outro endere&#xE7;o ser&#xE1; roteado artificialmente para o host <emphasis role="strong">master.co.uk</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-remote</emphasis>.</para>
    </section>
    <section>
      <title>timeoutconnect</title>
      <para>Define o n&#xFA;mero m&#xE1;ximo em segundos que <emphasis role="strong">qmail-remote</emphasis> aguardar&#xE1; o servidor SMTP remoto aceitar a conex&#xE3;o SMTP antes de desconectar. </para>
      <para>Padr&#xE3;o: <emphasis role="strong">60 segundos</emphasis>.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-remote</emphasis>.</para>
    </section>
    <section>
      <title>timeoutremote</title>
      <para>Define o n&#xFA;mero m&#xE1;ximo de segundos que <emphasis role="strong">qmail-remote</emphasis> aguardar&#xE1; por uma resposta do servidor SMTP remoto (depois da conex&#xE3;o ser aceita) antes de desconectar. </para>
      <para>Padr&#xE3;o: <emphasis role="strong">1200 segundos</emphasis> (20 minutos).</para>
      <para>Utilizado por: <emphasis role="strong">qmail-remote</emphasis>.</para>
    </section>
    <section>
      <title>timeoutsmtpd</title>
      <para>Especifica o n&#xFA;mero m&#xE1;ximo em segundos que <emphasis role="strong">qmail-smtpd</emphasis> ir&#xE1; aguardar para receber dados do cliente SMTP remoto. </para>
      <para>Se nenhum dado for recebido por <emphasis role="strong">qmail-smtpd</emphasis> ao t&#xE9;rmino de timeoutsmtpd, a conex&#xE3;o SMTP remota ser&#xE1; terminada.</para>
      <para>Padr&#xE3;o: <emphasis role="strong">1200 segundos</emphasis> (20 minutos).</para>
      <para>Utilizado por: <emphasis role="strong">qmail-smtpd</emphasis>.</para>
    </section>
    <section>
      <title>virtualdomains</title>
      <para>Lista de usu&#xE1;rios ou dom&#xED;nios que ser&#xE3;o tratados pelo qmail como virtuais. </para>
      <para>Um usu&#xE1;rio virtual possui a forma <emphasis role="strong">usuario@dominio.com:prepend</emphasis>.</para>
      <para>Quando <emphasis role="strong">qmail-send</emphasis> receber um e-mail para <emphasis role="strong">usuario@dominio, </emphasis>converter&#xE1; para <emphasis role="strong">prepend-usuario@dominio</emphasis> e aceitar&#xE1; este usu&#xE1;rio como local.</para>
      <para>Dom&#xED;nios virtuais possuem a forma <emphasis role="strong">dominio.com:prepend</emphasis>, que ser&#xE1; convertido para <emphasis role="strong">prepend-dominio.com </emphasis>para todos os usu&#xE1;rio deste dom&#xED;nio.</para>
      <para>&#xC9; permitido a utiliza&#xE7;&#xE3;o de curingas. </para>
      <para>Ex:</para>
      <para>
        <command>.dominio.com:telles</command>
      </para>
      <para>
        <command>:alias-pegatudo</command>
      </para>
      <para>Aonde, mensagens enviadas para qualquer usu&#xE1;rio do dom&#xED;nio <emphasis role="strong">dominio.com</emphasis> ser&#xE3;o processadas como <emphasis role="strong">telles-usuario@dominio.com </emphasis>e <emphasis role="strong">alias-pegatudo </emphasis>receber&#xE1; todas as outras mensagens que n&#xE3;o possuirem como destinat&#xE1;rio um usu&#xE1;rio do dom&#xED;nio <emphasis role="strong">dominio.com</emphasis><emphasis>.</emphasis></para>
      <para>Exce&#xE7;&#xE3;o: O dom&#xED;nio n&#xE3;o ser&#xE1; tratado como virtual se o <emphasis role="strong">prepend</emphasis> for vazio.</para>
      <para><emphasis role="strong">qmail-send</emphasis> processa virtualdomains depois de <emphasis role="strong">locals</emphasis>; se o dom&#xED;nio estiver listado em <emphasis role="strong">locals, </emphasis>n&#xE3;o ser&#xE1; checado em virtualdomains.</para>
      <para>Utilizado por: <emphasis role="strong">qmail-send</emphasis>.</para>
    </section>
  </section>
  <section>
    <title>Vari&#xE1;veis de Ambiente</title>
    <section>
      <title>DATABYTES</title>
      <para>Seu conte&#xFA;do tem preced&#xEA;ncia sobre o valor definido no arquivo de controle <emphasis role="strong">databytes</emphasis>.</para>
    </section>
    <section>
      <title>DEFAULT</title>
      <para>Cont&#xEA;m a parte correspondente a &#x201C;default&#x201D; de arquivos .qmail-...</para>
      <para>Ex: Mensagem enviada para <emphasis role="strong">telles-amigos</emphasis>.</para>
      <para>Se o e-mail alcan&#xE7;ar o arquivo <emphasis role="strong">.qmail-default</emphasis> no diret&#xF3;rio <emphasis role="strong">$HOME </emphasis>do usu&#xE1;rio <emphasis role="strong">telles</emphasis>, a vari&#xE1;vel de ambiente DEFAULT assumir&#xE1; o valor &#x201C;<emphasis role="strong">amigos</emphasis>&#x201D;.</para>
    </section>
    <section>
      <title>DTLINE</title>
      <para>Linha completa de <emphasis role="strong">Delivered-To: </emphasis>utilizada no cabe&#xE7;alho do e-mail.</para>
    </section>
    <section>
      <title>EXT</title>
      <para>Extens&#xE3;o do endere&#xE7;o de e-mail.</para>
      <para>Ex: <emphasis role="strong">telles-amigos-sp-local-area</emphasis>.</para>
      <para>EXT assumir&#xE1; o valor &#x201C;<emphasis role="strong">amigos&#x201D;</emphasis>.</para>
    </section>
    <section>
      <title>EXT2</title>
      <para>Parte do endere&#xE7;o de e-mail a partir do segundo &#x201C;-&#x201D; (tra&#xE7;o).</para>
      <para>EXT2 assumir&#xE1; o valor &#x201C;<emphasis role="strong">sp</emphasis>&#x201D;.</para>
    </section>
    <section>
      <title>EXT3</title>
      <para>Parte do endere&#xE7;o de e-mail a partir do terceiro &#x201C;-&#x201D; (tra&#xE7;o).</para>
      <para>EXT3 assumir&#xE1; o valor &#x201C;<emphasis role="strong">local</emphasis>&#x201D;.</para>
    </section>
    <section>
      <title>EXT4</title>
      <para>Parte do endere&#xE7;o de e-mail a partir do quarto &#x201C;-&#x201D; (tra&#xE7;o).</para>
      <para>EXT4 assumir&#xE1; o valor &#x201C;<emphasis role="strong">area</emphasis>&#x201D;.</para>
    </section>
    <section>
      <title>HOME</title>
      <para>Diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> do usu&#xE1;rio local.</para>
    </section>
    <section>
      <title>HOST</title>
      <para>Dom&#xED;nio utilizado no e-mail. </para>
      <para>Ex: <emphasis role="strong">sub.dominio.com.br</emphasis>.</para>
    </section>
    <section>
      <title>HOST2</title>
      <para>Parte do dom&#xED;nio que precede o &#xFA;ltimo &#x201C;.&#x201D; (ponto). </para>
      <para>Ex: <emphasis role="strong">sub.dominio.com</emphasis>.</para>
    </section>
    <section>
      <title>HOST3</title>
      <para>Parte do dom&#xED;nio que precede o pen&#xFA;ltimo &#x201C;.&#x201D; (ponto). </para>
      <para>Ex: <emphasis role="strong">sub.dom&#xED;nio</emphasis>.</para>
    </section>
    <section>
      <title>HOST4</title>
      <para>Parte do dom&#xED;nio que precede o ante-pen&#xFA;ltimo &#x201C;.&#x201D; (ponto). </para>
      <para>Ex: <emphasis role="strong">sub</emphasis>.</para>
    </section>
    <section>
      <title>LOCAL</title>
      <para>Nome local do e-mail.</para>
    </section>
    <section>
      <title>MAILHOST/QMAILHOST</title>
      <para>Seu conte&#xFA;do tem preced&#xEA;ncia sobre o nome do host definido no arquivo de controle <emphasis role="strong">defaulthost</emphasis>.</para>
    </section>
    <section>
      <title>MAILNAME/QMAILNAME/NAME</title>
      <para>Nome pessoal utilizado no campo <emphasis role="strong">From:</emphasis> do cabe&#xE7;alho do e-mail.</para>
    </section>
    <section>
      <title>MAILUSER/QMAILUSER/USER/LOGNAME</title>
      <para>Nome do usu&#xE1;rio utilizado no campo <emphasis role="strong">From:</emphasis> do cabe&#xE7;alho do e-mail.</para>
    </section>
    <section>
      <title>NEWSENDER</title>
      <para>Armazena o endere&#xE7;o de e-mail do sender utilizado para redirecionamento.</para>
    </section>
    <section>
      <title>QMAILDEFAULTDOMAIN</title>
      <para>Seu conte&#xFA;do tem preced&#xEA;ncia sobre o valor definido no arquivo de controle <emphasis role="strong">defaultdomain</emphasis>.</para>
    </section>
    <section>
      <title>QMAILDEFAULTHOST</title>
      <para>Seu conte&#xFA;do tem preced&#xEA;ncia sobre o valor definido no arquivo de controle <emphasis role="strong">defaulthost</emphasis>.</para>
    </section>
    <section>
      <title>QMAILIDHOST</title>
      <para>Seu conte&#xFA;do tem preced&#xEA;ncia sobre o valor definido no arquivo de controle <emphasis role="strong">idhost</emphasis>.</para>
    </section>
    <section>
      <title>QMAILINJECT</title>
      <para>Especifica op&#xE7;&#xF5;es adicionais ao programa <emphasis role="strong">qmail-inject</emphasis>.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.9cm"/>
          <colspec colname="c2" colwidth="15.1cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>c</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza o formato endere&#xE7;o-coment&#xE1;rio para o campo <emphasis role="strong">From</emphasis>. Normalmente, <emphasis role="strong">qmail-inject</emphasis> utiliza o formato nome-endere&#xE7;o.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>s</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o verifica nenhum campo <emphasis role="strong">Return-Path</emphasis> em mensagens de entrada. Normalmente, se <emphasis role="strong">Return-Path</emphasis> &#xE9; especificado, este &#xE9; setado como endere&#xE7;o de sender e sobrescreve o valor de todas as vari&#xE1;veis de ambiente. <emphasis role="strong">Return-Path </emphasis>&#xE9; deletado de qualquer forma.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>f</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Deleta qualquer campo <emphasis role="strong">From</emphasis> em mensagens de entrada. Normalmente, se <emphasis role="strong">From</emphasis> &#xE9; especificado, este sobrescreve o valor do campo <emphasis role="strong">From</emphasis> criado por <emphasis role="strong">qmail-inject</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>i</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Deleta qualquer campo <emphasis role="strong">Message-ID</emphasis> em mensagens de entrada. Normalmente, se <emphasis role="strong">Message-ID </emphasis>&#xE9; especificado, este sobrescreve o valor do campo <emphasis role="strong">Message-ID </emphasis>criado por <emphasis role="strong">qmail-inject</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>r</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza <emphasis role="strong">Return-Path</emphasis> por usu&#xE1;rio (VERP - Variable Envelope Return Paths). Isto faz com que <emphasis role="strong">qmail-inject</emphasis> adicione cada endere&#xE7;o de recipiente no sender da c&#xF3;pia da mensagem que est&#xE1; indo para este usu&#xE1;rio.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>m</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza <emphasis role="strong">Return-Path</emphasis> por mensagem. Isto faz com que <emphasis role="strong">qmail-inject</emphasis> adicione a data corrente e o ID do processo no sender da mensagem.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
    <section>
      <title>QMAILMFTFILE</title>
      <para>Especifica o arquivo que conter&#xE1; uma lista de e-mails que ser&#xE3;o lidos por <emphasis role="strong">qmail-inject</emphasis>. </para>
      <para>Se um ou mais desses e-mails estiverem contidos no campo <emphasis role="strong">To:</emphasis> ou <emphasis role="strong">Cc:</emphasis> do cabe&#xE7;alho do e-mail, <emphasis role="strong">qmail-inject</emphasis> adicionar&#xE1; o campo de cabe&#xE7;alho <emphasis role="strong">Mail-Followup-To:</emphasis> (se j&#xE1; n&#xE3;o existir) com todos os endere&#xE7;os de e-mail contidos em <emphasis role="strong">To:</emphasis> ou <emphasis role="strong">Cc:</emphasis>.</para>
    </section>
    <section>
      <title>QMAILPLUSDOMAIN</title>
      <para>Seu conte&#xFA;do tem preced&#xEA;ncia sobre o valor definido no arquivo de controle <emphasis role="strong">plusdomain</emphasis><emphasis>.</emphasis></para>
    </section>
    <section>
      <title>QMAILSHOST/QMAILSUSER</title>
      <para>Seu conte&#xFA;do tem preced&#xEA;ncia sobre o valor definido para o <emphasis role="strong">sender</emphasis> da mensagem, quando enviada utilizando <emphasis role="strong">qmail-inject</emphasis>.</para>
    </section>
    <section>
      <title>RECIPIENT</title>
      <para>Endere&#xE7;o de e-mail do recipiente da mensagem.</para>
    </section>
    <section>
      <title>RELAYCLIENT</title>
      <para>Se setado, torna nulo o conte&#xFA;do do arquivo <emphasis role="strong">rcpthosts</emphasis> e permite ao usu&#xE1;rio enviar e-mails para qualquer dom&#xED;nio local ou remoto.</para>
    </section>
    <section>
      <title>RPLINE</title>
      <para>Linha completa de <emphasis role="strong">Return-Path:</emphasis> utilizada no cabe&#xE7;alho do e-mail.</para>
    </section>
    <section>
      <title>SENDER</title>
      <para>Endere&#xE7;o de e-mail utilizado como <emphasis role="strong">sender</emphasis> do e-mail.</para>
    </section>
    <section>
      <title>UFLINE</title>
      <para>Linha completa de <emphasis role="strong">From:</emphasis> utilizada no cabe&#xE7;alho do e-mail no formato UUCP</para>
    </section>
  </section>
  <section>
    <title>Sistema de Aliases/Forwards</title>
    <para>O qmail possui um avan&#xE7;ado, vers&#xE1;til e seguro sistema de aliases e forwards, e ainda pode aproveitar-se de mecanismos de aliases/forwards de terceiros, para facilitar migra&#xE7;&#xF5;es.</para>
    <section>
      <title>dot-qmail</title>
      <para>
        <command>/var/qmail/alias/.qmail-</command>
        <emphasis>alias</emphasis>
      </para>
      <para>Aonde <emphasis>alias</emphasis> &#xE9; o nome do alias que ser&#xE1; interpretado pelo qmail.</para>
      <para>Normalmente &#xE9; um arquivo contendo um ou mais endere&#xE7;os de e-mail para os quais as mensagens devem ser redirecionadas.</para>
      <para>&#xC9; importante lembrar que, <emphasis role="strong">~/alias/.qmail-</emphasis><emphasis>alias </emphasis>s&#xF3; ser&#xE1; alcan&#xE7;ado caso n&#xE3;o exista um usu&#xE1;rio local identificado por <emphasis>alias</emphasis>. Isto significa que, se existir um usu&#xE1;rio <emphasis role="strong">telles</emphasis> e for criado um alias <emphasis role="strong">~alias/.qmail-telles</emphasis>, este alias nunca ser&#xE1; alcan&#xE7;ado.</para>
      <para>Linhas que iniciam com &#x201C;#&#x201D; (coment&#xE1;rios) s&#xE3;o ignoradas.</para>
      <para>Ex: criando o alias <emphasis role="strong">rodrigo</emphasis>.</para>
      <para>
        <command># echo telles@domain.net &gt; /var/qmail/alias/.qmail-rodrigo</command>
      </para>
      <para>Isso far&#xE1; o qmail redirecionar todas as mensagens enviadas a <emphasis role="strong">rodrigo</emphasis> para <emphasis role="strong">telles@domain.net</emphasis>.</para>
      <para>&#xC9; poss&#xED;vel utilizar v&#xE1;rios e-mails para redirecionamento de mensagens dentro do arquivo de alias, bastando para isso, que cada e-mail esteja em uma &#xFA;nica linha:</para>
      <para>
        <command># cat /var/qmail/alias/.qmail-galera</command>
      </para>
      <para>
        <command>telles@tubes.br</command>
      </para>
      <para>
        <command>cleri@tdk.ft</command>
      </para>
      <para>
        <command>langona@ls.up</command>
      </para>
      <para>
        <command>kerne@games.md</command>
      </para>
      <para>
        <command>alvsan@lnx.pt</command>
      </para>
      <para>Ainda &#xE9; poss&#xED;vel utilizar scripts ou programas dentro dos arquivos .qmail-<emphasis>alias</emphasis>. </para>
      <para>Ex:</para>
      <para>
        <command># echo '| /home/telles/lixo.sh' &gt; /var/qmail/alias/.qmail-spam</command>
      </para>
      <para>Desta forma, todas as mensagens enviadas para <emphasis role="strong">spam</emphasis> ser&#xE3;o tratadas pelo script <emphasis role="strong">/home/telles/lixo.sh</emphasis><emphasis>, </emphasis>o que provavelmente ir&#xE1; deletar a mensagem com algo do tipo:</para>
      <para>
        <command>#!/bin/bash</command>
      </para>
      <para>
        <command>cat &gt; /dev/null</command>
      </para>
      <para>
        <command>exit 99</command>
      </para>
      <para><emphasis role="strong">NOTA</emphasis>: Caso deseje criar aliases que possuam &#x201C;.&#x201D; (ponto) no meio do nome (Ex: r.p.telles), substitua &#x201C;.&#x201D; por &#x201C;:&#x201D; (dois pontos).</para>
      <para>Ex:</para>
      <para>
        <command>$ echo telles@tubes.br </command>
        <command>&gt; /var/qmail/alias/.qmail-r:p:telles</command>
      </para>
    </section>
    <section>
      <title>
        <emphasis role="strong">$HOME/.qmail-</emphasis>
        <emphasis>alias</emphasis>
      </title>
      <para>Aonde <emphasis>alias</emphasis><emphasis> </emphasis>&#xE9; o nome do alias criado pelo usu&#xE1;rio local. </para>
      <para>Desta forma, o usu&#xE1;rio pode criar seus pr&#xF3;prios aliases, sem depender do administrador de sistemas.</para>
      <para>Exemplo 1: <emphasis role="strong">$HOME</emphasis> da usu&#xE1;ria <emphasis role="strong">aline</emphasis>.</para>
      <para>
        <command>$ echo joazinho &gt; $HOME/.qmail-encontro</command>
      </para>
      <para>Quando for enviado um e-mail para <emphasis role="strong">aline-encontro</emphasis>, qmail redirecionar&#xE1; a mensagem para o usu&#xE1;rio <emphasis role="strong">joaozinho</emphasis><emphasis>.</emphasis></para>
      <para>Ainda &#xE9; poss&#xED;vel redirecionar mensagens para caixas de e-mail no formato <emphasis role="strong">mbox</emphasis>.</para>
      <para>Exemplo 2: <emphasis role="strong">$HOME</emphasis> da usu&#xE1;ria <emphasis role="strong">aline</emphasis>.</para>
      <para>
        <command>$ echo ./Mailbox.encontros &gt; $HOME/.qmail-encontros</command>
      </para>
      <para>Desta forma, todos os e-mails enviados para <emphasis role="strong">aline-encontros</emphasis> ser&#xE3;o armazenados na caixa de e-mail <emphasis role="strong">$HOME/Mailbox.encontros </emphasis>no formato <emphasis role="strong">mbox</emphasis>.</para>
      <para>Quando uma mensagem para <emphasis role="strong">telles-amigos-smith</emphasis> &#xE9; enviada, <emphasis role="strong">qmail-lspawn </emphasis>checa se o usu&#xE1;rio <emphasis role="strong">telles</emphasis> existe, se existir <emphasis role="strong">qmail-local</emphasis> verifica no <emphasis role="strong">$HOME </emphasis>do usu&#xE1;rio <emphasis role="strong">telles</emphasis>, se <emphasis role="strong">.qmail-amigos-smith</emphasis> existe, se n&#xE3;o existir ou se estiver vazio, checa por <emphasis role="strong">qmail-amigos-default </emphasis>e por final <emphasis role="strong">.qmail-default</emphasis>; <emphasis role="strong">qmail-local</emphasis> seguir&#xE1; as istru&#xE7;&#xF5;es contidas no primeiro arquivo encontrado que tenha conte&#xFA;do diferente de vazio. Se o usu&#xE1;rio <emphasis role="strong">telles</emphasis> n&#xE3;o existir, <emphasis role="strong">qmail-lspawn</emphasis> passa o controle da entrega para o usu&#xE1;rio <emphasis role="strong">alias</emphasis> antes de rejeitar a mensagem.</para>
      <para>Quando <emphasis role="strong">qmail-local</emphasis> encaminha uma mensagem seguindo instru&#xE7;&#xF5;es contidas em um arquivo <emphasis role="strong">$HOME/.qmail-</emphasis><emphasis>alias</emphasis><emphasis> </emphasis>(ou $HOME/.qmail-default)<emphasis>, </emphasis>sempre verifica a exist&#xEA;ncia de um arquivo do tipo <emphasis role="strong">$HOME/.qmail-</emphasis><emphasis>alias-</emphasis><emphasis role="strong">owner</emphasis>; se o arquivo existir, <emphasis role="strong">qmail-local</emphasis> utilizar&#xE1; <emphasis role="strong">usuario-</emphasis><emphasis>alias-</emphasis><emphasis role="strong">owner@dominio</emphasis> como sendo o <emphasis role="strong">sender </emphasis>(Return-Path:) da mensagem. Caso contr&#xE1;rio, <emphasis role="strong">qmail-local</emphasis> mantem o endere&#xE7;o de sender original da mensagem. </para>
      <para>Excess&#xE3;o: <emphasis role="strong">qmail-local</emphasis> sempre mantem o endere&#xE7;o original de <emphasis role="strong">sender</emphasis> se este for vazio ou contiver &#x201C;#@[]&#x201D; (mensagens de erro &#x2013; bounces).</para>
      <para><emphasis role="strong">qmail-local</emphasis> tamb&#xE9;m suporta a utiliza&#xE7;&#xE3;o de <emphasis role="strong">sender vari&#xE1;vel </emphasis>(VERP &#x2013; Variable Envelope Return Paths). Se <emphasis role="strong">$HOME/.qmail-</emphasis><emphasis>alias</emphasis><emphasis role="strong">-owner</emphasis> e <emphasis role="strong">$HOME/.qmail-</emphasis><emphasis>alias</emphasis><emphasis>-</emphasis><emphasis role="strong">owner-default</emphasis> existirem, <emphasis role="strong">qmail-local</emphasis> utilizar&#xE1; <emphasis role="strong">usuario-</emphasis><emphasis>alias</emphasis><emphasis role="strong">-owner-@dominio-@[]</emphasis> como <emphasis role="strong">sender</emphasis> de mensagens encaminhadas. Isto far&#xE1; com que o recipiente da mensagem - <emphasis role="strong">recipiente@host</emphasis> - veja o <emphasis role="strong">sender</emphasis> como sendo <emphasis role="strong">usuario-</emphasis><emphasis>alias-</emphasis><emphasis role="strong">owner-recipiente=host@dominio</emphasis>.</para>
      <para>O arquivo <emphasis role="strong">$HOME/.qmail </emphasis>pode ser utilizado para alterar o m&#xE9;todo padr&#xE3;o de entrega de mensagens para o usu&#xE1;rio. </para>
      <para>Se <emphasis role="strong">$HOME/.qmail</emphasis> estiver completamente vazio ou n&#xE3;o existir, <emphasis role="strong">qmail-local</emphasis> utilizar&#xE1; o m&#xE9;todo padr&#xE3;o definido pelo administrador do sistema em <emphasis role="strong">qmail-start</emphasis> (defaultdelivery); normalmente o m&#xE9;todo padr&#xE3;o &#xE9; <emphasis role="strong">mbox </emphasis>e todas as mensagens ser&#xE3;o adicionadas ao arquivo <emphasis role="strong">$HOME/Mailbox </emphasis>neste<emphasis role="strong"> </emphasis>padr&#xE3;o.</para>
      <para><emphasis role="strong">$HOME/.qmail</emphasis> pode conter espa&#xE7;os em branco e tabs no final de cada linha; Linhas em branco s&#xE3;o permitidas, desde que n&#xE3;o sejam a primeira linha do arquivo.</para>
      <para>Se <emphasis role="strong">$HOME/.qmail</emphasis> for execut&#xE1;vel (possuir o bit de execu&#xE7;&#xE3;o &#x2013; x &#x2013; ligado) e contiver qualquer linha de programa, instru&#xE7;&#xF5;es de <emphasis role="strong">Mailbox</emphasis> ou <emphasis role="strong">Maildir</emphasis>, <emphasis role="strong">qmail-local </emphasis>suspende a entrega e devolve a mensagem &#xE0; fila de e-mails.</para>
      <para>Exemplo 3: <emphasis role="strong">$HOME</emphasis> do usu&#xE1;rio <emphasis role="strong">telles</emphasis>.</para>
      <para>
        <command>$ echo './Maildir/' &gt; $HOME/.qmail</command>
      </para>
      <para>&#xC9; importante lembrar que, ser&#xE1; necess&#xE1;rio criar o diret&#xF3;rio <emphasis role="strong">Maildir</emphasis> e sua estrutura, utilizando o programa <emphasis role="strong">maildirmake</emphasis>.</para>
      <para>Ainda &#xE9; poss&#xED;vel utilizar scripts e/ou programas dentro dos arquivos <emphasis role="strong">dot-qmail</emphasis>.</para>
      <para>Exemplo 4: <emphasis role="strong">$HOME</emphasis> do usu&#xE1;rio <emphasis role="strong">telles</emphasis>.</para>
      <para>
        <command>$ cat $HOME/.qmail</command>
      </para>
      <para>
        <command># Programa para filtragem de lixo</command>
      </para>
      <para>
        <command>|./lixo.sh</command>
      </para>
      <para>
        <command>&amp;telles@tubes.sp</command>
      </para>
      <para>
        <command>./Maildir/</command>
      </para>
      <para>No exemplo acima, todas as mensagens enviadas para o usu&#xE1;rio <emphasis role="strong">telles</emphasis>, ser&#xE3;o submetidas ao programa <emphasis role="strong">lixo.sh</emphasis> e se passarem desta etapa, ser&#xE3;o encaminhadas ao e-mail <emphasis role="strong">telles@tubes.sp</emphasis> e entregues no <emphasis role="strong">Maildir </emphasis>do usu&#xE1;rio.</para>
      <para>Se <emphasis role="strong">.qmail</emphasis> possuir permiss&#xF5;es de leitura para todos usu&#xE1;rios ou grupos do sistema, ou se o diret&#xF3;rio <emphasis role="strong">$HOME</emphasis> do usu&#xE1;rio possuir a flag <emphasis role="strong">sticky </emphasis>ligada, <emphasis role="strong">qmail-local</emphasis> suspende a entrega e devolve a mensagem &#xE0; fila de e-mails.</para>
      <para>A utiliza&#xE7;&#xE3;o da flag <emphasis role="strong">sticky </emphasis>(chmod +t $HOME) deve ser utilizada para manuten&#xE7;&#xE3;o e edi&#xE7;&#xE3;o do arquivo <emphasis role="strong">.qmail</emphasis> com seguran&#xE7;a, fazendo com que novas mensagens que alcancem a caixa de correio do usu&#xE1;rio, voltem para a fila e sejam entregues mais tarde, quando a flag <emphasis role="strong">sticky</emphasis> n&#xE3;o estiver mais setada (chmod -t $HOME) .</para>
      <para>Exemplo 5:</para>
      <para>
        <command>$ chmod +t $HOME</command>
      </para>
      <para>
        <command>$ /var/qmail/bin/qmail-local -n $USER ~ $USER '' '' '' '' ./Maildir/</command>
      </para>
      <para>
        <command>Warning: home directory is sticky.</command>
      </para>
      <para>
        <command>maildir ./Maildir/</command>
      </para>
      <para>
        <command>did 1+0+0</command>
      </para>
      <para>
        <command/>
      </para>
      <para>
        <command>$ chmod -t $HOME</command>
      </para>
      <para>
        <command>$ /var/qmail/bin/qmail-local -n $USER ~ $USER '' '' '' '' ./Maildir/</command>
      </para>
      <para>
        <command>maildir ./Maildir/</command>
      </para>
      <para>
        <command>did 1+0+0</command>
      </para>
    </section>
    <section>
      <title>qmail-users - assign/cdb</title>
      <para>&#xC9; poss&#xED;vel criar uma tabela de usu&#xE1;rios do qmail associada a usu&#xE1;rios do sistema.</para>
      <para>Este sistema utiliza os arquivos <emphasis role="strong">assign </emphasis>e <emphasis role="strong">cdb </emphasis>que est&#xE3;o localizados no diret&#xF3;rio <emphasis role="strong">/var/qmail/users </emphasis>e &#xE9; muito similar aos sistemas de aliases j&#xE1; mencionados, com a diferen&#xE7;a de utilizar m&#xE9;todos e programas diferentes para a mesma tarefa.</para>
      <para>O arquivo <emphasis role="strong">assign</emphasis><emphasis> </emphasis>contem os mapeamentos de usu&#xE1;rios qmail para usu&#xE1;rios do sistema, um em cada linha; <emphasis role="strong">cdb</emphasis><emphasis>,</emphasis> &#xE9; um arquivo bin&#xE1;rio gerado pelo programa <emphasis role="strong">qmail-newu</emphasis> a partir de <emphasis role="strong">assign</emphasis><emphasis>.</emphasis></para>
      <para><emphasis role="strong">assign</emphasis> possui o formato:</para>
      <para>
        <command>=endere&#xE7;o:usu&#xE1;rio:uid:gid:diret&#xF3;rio:tra&#xE7;o:alias:</command>
      </para>
      <para>Ainda &#xE9; poss&#xED;vel utilizar o sinal &#x201C;+&#x201D; (adi&#xE7;&#xE3;o) como curinga no lugar de &#x201C;=&#x201D; (igual), que far&#xE1; o qmail localizar <emphasis>endere&#xE7;o</emphasis> no in&#xED;cio do endere&#xE7;o de recipiente.</para>
      <para>Ex:</para>
      <para>
        <command># cat /var/qmail/users/assign</command>
      </para>
      <para>
        <command>=telles:rodrigo:500:500:/home/rodrigo:::</command>
      </para>
      <para>
        <command>+news-:rodrigo:500:500:/home/rodrigo:-::</command>
      </para>
      <para>
        <command>.</command>
      </para>
      <para>
        <command># /var/qmail/bin/qmail-newu</command>
      </para>
      <para>E-mails enviados para <emphasis role="strong">telles</emphasis> ser&#xE3;o entregues para o usu&#xE1;rio <emphasis role="strong">rodrigo</emphasis><emphasis> </emphasis>e e-mails enviados para qualquer endere&#xE7;o que comece com &#x201C;<emphasis role="strong">news-&#x201D;</emphasis><emphasis> </emphasis>tamb&#xE9;m ser&#xE3;o entregues ao usu&#xE1;rio <emphasis role="strong">rodrigo</emphasis><emphasis>.</emphasis></para>
      <para>Desta<emphasis> </emphasis>forma, um e-mail enviado para <emphasis role="strong">news-unix</emphasis><emphasis> </emphasis>ser&#xE1; tratado por <emphasis role="strong">/home/rodrigo/.qmail-unix</emphasis><emphasis>.</emphasis></para>
      <para><emphasis role="strong">NOTA</emphasis>: A &#xFA;ltima linha do arquivo <emphasis role="strong">assign</emphasis><emphasis> </emphasis>sempre deve ser um &#xFA;nico &#x201C;.&#x201D; (ponto).</para>
      <para>Entrega local:</para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/img003.jpg" width="9.775cm" depth="11.003cm"/>
        </imageobject>
      </mediaobject>
      <para/>
    </section>
  </section>
  <section>
    <title>O programa dot-forward</title>
    <para>O programa dot-forward extende os recursos de encaminhamento do qmail, permitindo-o utilizar os arquivos de forward (.forward) do <emphasis role="strong">sendmail</emphasis>, tornando migra&#xE7;&#xF5;es transparentes para os usu&#xE1;rios.</para>
    <section>
      <title>dot-forward</title>
      <para>
        <command>dot-forward [ -nN ] </command>
        <emphasis>.forward</emphasis>
      </para>
      <para>Se <emphasis>.forward</emphasis> existir, dot-forward encaminha mensagens de entrada de acordo com instru&#xE7;&#xF5;es no padr&#xE3;o sendmail contidas em <emphasis>.forward.</emphasis></para>
      <para>Exemplo 1:</para>
      <para>Dentro do arquivo <emphasis role="strong">$HOME/.qmail</emphasis> do usu&#xE1;rio:</para>
      <para>
        <command>| dot-forward .forward</command>
      </para>
      <para>
        <command>./Maildir/</command>
      </para>
      <para>N&#xE3;o esque&#xE7;a de incluir uma linha logo ap&#xF3;s a instru&#xE7;&#xE3;o dot-forward, informando ao programa <emphasis role="strong">qmail-local</emphasis> que a mensagem deve ser entregue na caixa de e-mail do usu&#xE1;rio se dot-forward n&#xE3;o encontrar o arquivo .forward, caso contr&#xE1;rio o usu&#xE1;rio local n&#xE3;o receber&#xE1; novas mensagens.</para>
      <para>Exemplo 2:</para>
      <para>&#xC9; poss&#xED;vel informar v&#xE1;rios arquivos de forward:</para>
      <para>
        <command>| dot-forward .forward .forward1 .forward2</command>
      </para>
      <para>
        <command>./Maildir/</command>
      </para>
      <para>dot-forward vai executar as instru&#xE7;&#xF5;es do primeiro arquivo de forward que existir e contiver instru&#xE7;&#xF5;es, caso contr&#xE1;rio, testa cada arquivo at&#xE9; o final da lista.</para>
      <para>Normalmente, dot-forward sai com c&#xF3;digo de erro 99, desta forma <emphasis role="strong">qmail-local</emphasis> ignora as pr&#xF3;ximas instru&#xE7;&#xF5;es contidas no arquivo <emphasis role="strong">.qmail</emphasis>. </para>
      <para>Se o nome do usu&#xE1;rio local estiver listado em <emphasis>.forward </emphasis>ou<emphasis> .forward </emphasis>n&#xE3;o existir, dot-forward sai com c&#xF3;digo de erro 0 (zero) e <emphasis role="strong">qmail-local</emphasis> processar&#xE1; o restante das instru&#xE7;&#xF5;es contidas no arquivo <emphasis role="strong">.qmail</emphasis> normalmente.</para>
      <para>Se dot-forward encontrar algum erro ao tentar ler <emphasis>.forward</emphasis>, sai com c&#xF3;digo de erro 111, fazendo com que o e-mail volte para a fila; <emphasis role="strong">qmail-local</emphasis> tentar&#xE1; entreg&#xE1;-lo novamente mais tarde.</para>
      <para>Exemplo 3:</para>
      <para><emphasis>.forward</emphasis> pode conter v&#xE1;rias linhas, cada uma contendo v&#xE1;rios endere&#xE7;os de e-mail</para>
      <para>
        <command>$ cat .forward</command>
      </para>
      <para>
        <command>telles, kerne, langona</command>
      </para>
      <para>
        <command>Joao Dias &lt;joao@dias.com&gt;</command>
      </para>
      <para>Exemplo 4:</para>
      <para>Ainda &#xE9; poss&#xED;vel utilizar comandos e coment&#xE1;rios dentro de <emphasis>.forward</emphasis>:</para>
      <para>
        <command>$ cat .forward</command>
      </para>
      <para>
        <command># Aviso de f&#xE9;rias para Telles</command>
      </para>
      <para>
        <command>telles, &#x201C;| vacation telles&#x201D;</command>
      </para>
      <para>dot-forward entregar&#xE1; novos e-mails para <emphasis role="strong">telles</emphasis> e em seguida os encaminhar&#xE1; ao programa <emphasis role="strong">vacation,</emphasis> juntamente com as vari&#xE1;veis de ambiente <emphasis role="strong">$UFLINE</emphasis>, <emphasis role="strong">$RPLINE</emphasis> e <emphasis role="strong">$DTLINE,</emphasis> utilizando <emphasis role="strong">telles</emphasis><emphasis> </emphasis>como par&#xE2;metro do programa.</para>
      <para>Para utilizar dot-forward de forma global para todos os usu&#xE1;rios, basta modificar o arquivo de inicializa&#xE7;&#xE3;o do programa <emphasis role="strong">qmail-start</emphasis> (geralmente em /var/qmail/rc) para que fique desta forma:</para>
      <para>
        <command>exec env - PATH="/var/qmail/bin:$PATH" \</command>
      </para>
      <para>
        <command>qmail-start '|dot-forward .forward</command>
      </para>
      <para>
        <command>./Maildir' splogger qmail</command>
      </para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.9cm"/>
          <colspec colname="c2" colwidth="15.1cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-n</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>L&#xEA; <emphasis>.forward</emphasis> e imprime em <emphasis role="strong">STDOUT</emphasis> as instru&#xE7;&#xF5;es a serem executadas sem execut&#xE1;-las. &#xDA;til para executar dot-forward via linha de comando e visualizar como <emphasis>.forward</emphasis> ser&#xE1; interpretado.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-N</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>L&#xEA; e encaminha a mensagem (Padr&#xE3;o).</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para><emphasis role="strong">Notas de compatibilidade:</emphasis></para>
      <itemizedlist>
        <listitem>
          <para>dot-forward n&#xE3;o suporta m&#xE9;todos &#x201C;<emphasis role="strong">:include:&#x201D;</emphasis> ou entregas no formato <emphasis role="strong">mbox</emphasis>. Utilize o m&#xE9;todo <emphasis role="strong">dot-qmail</emphasis>.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>dot-forward ignora arquivos <emphasis>.forward</emphasis> vazios.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>Se dot-forward encontrar um erro tempor&#xE1;rio no processamento de um arquivo <emphasis>.forward</emphasis>, sai com c&#xF3;digo de erro 111, fazendo <emphasis role="strong">qmail-local</emphasis> processar a mensagem novamente mais tarde. <emphasis role="strong">sendmail</emphasis> assume incorretamente que o arquivo n&#xE3;o existe.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para><emphasis>.forward</emphasis> precisa ser leg&#xED;vel por dot-forward, que normalmente roda com as permiss&#xF5;es do usu&#xE1;rio local. <emphasis role="strong">sendmail</emphasis> normalmente &#xE9; executado pelo usu&#xE1;rio <emphasis role="strong">root</emphasis> e possui acesso total a todos os arquivos.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para><emphasis role="strong">sendmail</emphasis> manipula &#x201C;&#x201D; (aspas) e &#x201C;\&#x201D; (contra-barras), violando as <emphasis role="strong">RFC&#x2019;s 821</emphasis> e <emphasis role="strong">822</emphasis>. dot-forward n&#xE3;o manipula tais caracteres; endere&#xE7;os do tipo &#x201C;<emphasis role="strong">\joao</emphasis>&#x201D; s&#xE3;o tratados da mesma forma que &#x201C;<emphasis role="strong">joao</emphasis>&#x201D;.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>dot-forward permite coment&#xE1;rios nos arquivos <emphasis>.forward</emphasis>; vers&#xF5;es do <emphasis role="strong">sendmail</emphasis> anteriores a <emphasis role="strong">V8</emphasis> n&#xE3;o permitem coment&#xE1;rios nos arquivos <emphasis>.forward</emphasis>.</para>
          <para/>
        </listitem>
      </itemizedlist>
    </section>
  </section>
  <section>
    <title>Programas do pacote fastforward</title>
    <para>fastforward &#xE9; um conjunto de programas que permitem ao qmail, utilizar-se de arquivos de <emphasis role="strong">aliases/forwards</emphasis> (/etc/aliases) e arquivos de tabela de dom&#xED;nios virtuais criados especificamente para o programa sendmail.</para>
    <section>
      <title>fastforward</title>
      <para>
        <command>fastforward [ -nNpPdD ] </command>
        <emphasis>cdb</emphasis>
      </para>
      <para>Encaminha cada mensagem recebida, seguindo instru&#xE7;&#xF5;es contidas em <emphasis>cdb</emphasis><emphasis role="strong">,</emphasis> criado previamente por <emphasis role="strong">setforward</emphasis>.</para>
      <para>fastforward &#xE9; geralmente utilizado dentro do arquivo de alias <emphasis role="strong">~alias/.qmail-default</emphasis>, mas pode ser utilizado tamb&#xE9;m em outros arquivos padr&#xE3;o <emphasis role="strong">dot-qmail</emphasis>.</para>
      <para>Arquivos do tipo <emphasis role="strong">~alias/.qmail-recipiente</emphasis> tem preced&#xEA;ncia sobre <emphasis role="strong">~alias/.qmail-default</emphasis>. </para>
      <para>Se n&#xE3;o existir instru&#xE7;&#xF5;es de forward para o destinat&#xE1;rio do e-mail no arquivo <emphasis>cdb</emphasis>, fastforward rejeita a mensagem e a devolve ao seu remetente.</para>
      <para><emphasis role="strong">Nota de seguran&#xE7;a:</emphasis></para>
      <para>Se <emphasis>cdb </emphasis>incluir instru&#xE7;&#xF5;es para uma lista de e-mails controlada por outro usu&#xE1;rio, este usu&#xE1;rio ganhar&#xE1; algumas permiss&#xF5;es de fastforward para executar tarefas com as permiss&#xF5;es do usu&#xE1;rio original. Isso permite que este usu&#xE1;rio force o acesso a arquivos que somente o usu&#xE1;rio original teria.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.6cm"/>
          <colspec colname="c2" colwidth="15.4cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-n</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o faz forward da mensagem, apenas imprime instru&#xE7;&#xF5;es que ser&#xE3;o seguidas no momento da entrega.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-N</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Encaminha a mensagem conforme instru&#xE7;&#xF5;es contidas em <emphasis>cdb</emphasis> (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-p</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Se fastforward n&#xE3;o localizar instru&#xE7;&#xF5;es para o recipiente da mensagem em <emphasis>cdb</emphasis>, sai com c&#xF3;digo de erro 0 (zero), fazendo com que as pr&#xF3;xima instru&#xE7;&#xF5;es do arquivo <emphasis role="strong">.qmail-default </emphasis>sejam executadas normalmente. Se fastforward localizar instru&#xE7;&#xF5;es para o recipiente da mensagem em <emphasis>cdb</emphasis>, encaminha a mensagem e sai com c&#xF3;digo de erro 99, fazendo com que as pr&#xF3;ximas instru&#xE7;&#xF5;es do arquivo <emphasis role="strong">.qmail-default</emphasis> sejam ignoradas.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-P</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Se fastforward localizar instru&#xE7;&#xF5;es para o recipiente da mensagem em <emphasis>cdb</emphasis>, encaminha a mensagem e sai com c&#xF3;digo de erro 0 (zero), caso contr&#xE1;rio, rejeita e mensagem e devolve ao seu rementente (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-d</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza <emphasis role="strong">$DEFAULT@$HOST</emphasis> como endere&#xE7;o de recipiente ou <emphasis role="strong">$EXT@$HOST</emphasis> se <emphasis role="strong">$DEFAULT</emphasis> n&#xE3;o estiver setado.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-D</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza <emphasis role="strong">$RECIPIENT</emphasis> como endere&#xE7;o de recipiente (Padr&#xE3;o).</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
    <section>
      <title>newaliases</title>
      <para>L&#xEA; uma tabela de aliases a partir do arquivo <emphasis role="strong">/etc/aliases,</emphasis> e converte em uma base de dados <emphasis role="strong">cdb</emphasis> (/etc/aliases.cdb) para ser utilizada pelo programa <emphasis role="strong">fastforward</emphasis>; newaliases &#xE9; um clone do programa newaliases do <emphasis role="strong">sendmail</emphasis>.</para>
      <para>Por seguran&#xE7;a, newliases converte a tabela de aliases para <emphasis role="strong">/etc/aliases.tmp</emphasis> e somente depois move <emphasis role="strong">/etc/aliases.tmp</emphasis> para <emphasis role="strong">/etc/aliases.cdb</emphasis>.</para>
      <para>Caso ocorra um problema na grava&#xE7;&#xE3;o do arquivo <emphasis role="strong">/etc/aliases.tmp</emphasis>, newaliases n&#xE3;o tenta mover <emphasis role="strong">/etc/aliases.tmp</emphasis><emphasis> </emphasis>para <emphasis role="strong">/etc/aliases.cdb</emphasis>, preservando o conte&#xFA;do anterior do arquivo inalterado e sem prejudicar entregas que est&#xE3;o acontecendo no momento.</para>
      <para>newaliases sempre cria o arquivo <emphasis role="strong">/etc/aliases.cdb</emphasis> com permiss&#xE3;o de leitura para todos os usu&#xE1;rios do sistema.</para>
      <para>newaliases n&#xE3;o tenta proteger <emphasis role="strong">/etc/aliases.cdb </emphasis>contra atualiza&#xE7;&#xF5;es simult&#xE2;neas.</para>
      <para><emphasis role="strong">Formato do arquivo /etc/aliases</emphasis></para>
      <para>Aliases e forwards podem conter a forma:</para>
      <para>
        <command>root: sysadm</command>
      </para>
      <para>
        <command>sysadm: telles, kernel</command>
      </para>
      <para>
        <command>sysop: Just for fun &lt;just@for.fun&gt;</command>
      </para>
      <para>
        <command># coment&#xE1;rios s&#xE3;o ignorados</command>
      </para>
      <para>
        <command>kernel: kerne</command>
      </para>
      <para>
        <command># executando programas e scripts</command>
      </para>
      <para>
        <command>script: &#x201C;| ./script.sh&#x201D;</command>
      </para>
      <para>Aonde novas mensagens para o usu&#xE1;rio <emphasis role="strong">root</emphasis> ser&#xE3;o encaminhadas para <emphasis role="strong">sysadm</emphasis> que por sua vez ser&#xE3;o encaminhadas para os usu&#xE1;rios <emphasis role="strong">telles</emphasis> e <emphasis role="strong">kernel</emphasis>, aonde <emphasis role="strong">kernel</emphasis> &#xE9; um alias para <emphasis role="strong">kerne</emphasis> e novas mensagens para o usu&#xE1;rio <emphasis role="strong">sysop</emphasis> ser&#xE3;o encaminhadas para o e-mail <emphasis role="strong">just@for.fun</emphasis>.</para>
      <para>Quando newaliases encontrar um endere&#xE7;o de recipiente que n&#xE3;o possui um nome de dom&#xED;nio (@dominio.com.br) seguido de um &#x201C;|&#x201D; (barra vertical), processa o conte&#xFA;do logo ap&#xF3;s a barra vertical como sendo um programa a ser executado. <emphasis role="strong">fastforward</emphasis> executar&#xE1; <emphasis role="strong">./script.sh</emphasis> quando receber uma mensagem para <emphasis role="strong">script</emphasis>.</para>
      <para>Qualquer endere&#xE7;o de recipiente que n&#xE3;o possua &#x201C;<emphasis role="strong">@dominio.com.br&#x201D;</emphasis> utilizar&#xE1; os mecanimos <emphasis role="strong">defaulhost, defaultdomain </emphasis>e <emphasis role="strong">plusdomain</emphasis>.</para>
      <para>Instru&#xE7;&#xF5;es de encaminhamentos podem ser separadas em v&#xE1;rias linhas, desde que a pr&#xF3;xima linha inicie com um espa&#xE7;o em branco, tab ou esteja vazia.</para>
      <para>Ex: </para>
      <para>
        <command>hostmaster:</command>
      </para>
      <para>
        <command>telles,</command>
      </para>
      <para>
        <command/>
        <command>nobody</command>
      </para>
      <para>Coment&#xE1;rios pode ser separados em v&#xE1;rias linhas, desde que a pr&#xF3;xima linha inicie com um espa&#xE7;o em branco, tab ou esteja vazia.</para>
      <para>Ex:</para>
      <para>
        <command># coment&#xE1;rios</command>
      </para>
      <para>
        <command>em varias</command>
      </para>
      <para>
        <command>linhas s&#xE3;o permitidos.</command>
      </para>
      <para><emphasis role="strong">Notas de compatibilidade:</emphasis></para>
      <itemizedlist>
        <listitem>
          <para>newaliases n&#xE3;o suporta entrega em arquivo, utilize o mecanismo de entrega <emphasis role="strong">dot-qmail</emphasis> (formato <emphasis role="strong">mbox</emphasis>). </para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>Se existir v&#xE1;rias entradas de encaminhamentos para o mesmo alias em /etc/aliases, <emphasis role="strong">sendmail</emphasis> solta uma mensagem de erro na tela; <emphasis role="strong">fastforward</emphasis> utilizar&#xE1; silenciosamente a primeira instru&#xE7;&#xE3;o.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para><emphasis role="strong">sendmail</emphasis> processa aspas &#x201C;&#x201D;(aspas) e &#x201C;\&#x201D; (contra-barras) em <emphasis role="strong">/etc/aliases</emphasis>, violando as <emphasis role="strong">RFC's 821</emphasis> e <emphasis role="strong">822</emphasis>; newaliases n&#xE3;o processa tais caracteres.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para><emphasis role="strong">sendmail</emphasis> n&#xE3;o suporta aliases por host, sendo assim, processa <emphasis role="strong">user@host.com.br</emphasis> da mesma forma que <emphasis role="strong">user</emphasis>, se <emphasis role="strong">host.com.br</emphasis> for local.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>Grupos de endere&#xE7;os n&#xE3;o s&#xE3;o permitidos.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>V&#xE1;rias vers&#xF5;es do <emphasis role="strong">sendmail</emphasis> fazem coisas estranhas quando encontram aliases circulares; nestes casos, fastforward entrega a mensagem apenas uma vez.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>Endere&#xE7;os de e-mail podem legitimamente iniciar com &#x201C;/&#x201D; (barra) ou &#x201C;|&#x201D; (pipe - barra vertical). newaliases processa qualquer instru&#xE7;&#xE3;o que contenha o s&#xED;mbolo &#x201C;@&#x201D; e n&#xE3;o esteja entre &#x201C;&#x201D; (aspas) como um recipiente de e-mail. Aparentemente, <emphasis role="strong">sendmail</emphasis> tem v&#xE1;rios problemas com estes endere&#xE7;os e com comandos que contenham o simbolo &#x201C;@&#x201D; (arroba).</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>newaliases n&#xE3;o permite a utiliza&#xE7;&#xE3;o de &#x201C;|&#x201D; (barra vertical) antes de aspas duplas.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para><emphasis role="strong">sendmail</emphasis> requer que a &#x201C;,&#x201D; (v&#xED;rgula) esteja na primeira linha de um encaminhamento separado em v&#xE1;rias linhas de instru&#xE7;&#xF5;es.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para><emphasis role="strong">sendmail</emphasis> n&#xE3;o permite linhas em branco no meio de uma continua&#xE7;&#xE3;o de encaminhamentos separados em m&#xFA;ltiplas linhas.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>sendmail n&#xE3;o permite coment&#xE1;rios divididos em m&#xFA;ltiplas linhas.</para>
        </listitem>
      </itemizedlist>
      <para><emphasis role="strong">Arquivos de Include</emphasis></para>
      <para>Se um endere&#xE7;o de recipiente possuir a forma &#x201C;<emphasis role="strong">:include:</emphasis>usu&#xE1;rios&#x201D;, significa que todos os usu&#xE1;rios contidos no arquivo usu&#xE1;rios<emphasis> </emphasis>devem receber uma c&#xF3;pia da mensagem. Atualmente, <emphasis role="strong">fastforward</emphasis> l&#xEA; o arquivo usu&#xE1;rios.<emphasis role="strong">bin</emphasis> que deve ser criado utilizando-se o programa <emphasis role="strong">newinclude</emphasis>.</para>
      <para>Perceba que o arquivo usu&#xE1;rios &#xE9; lido por <emphasis role="strong">fastforward</emphasis> e n&#xE3;o pelo programa newaliases, desta forma, o administrador n&#xE3;o precisa executar newaliases a cada modifica&#xE7;&#xE3;o feita em usu&#xE1;rios.</para>
      <para><emphasis role="strong">Notas de compatibilidade:</emphasis></para>
      <itemizedlist>
        <listitem>
          <para>Se o arquivo de include usu&#xE1;rios n&#xE3;o puder ser lido ou n&#xE3;o existir, <emphasis role="strong">sendmail</emphasis> ignora esta entrada; <emphasis role="strong">fastforward</emphasis> somente adia a entrega da mensagem, fazendo-a retornar &#xE0; fila de e-mails.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para><emphasis role="strong">sendmail</emphasis> n&#xE3;o permite espa&#xE7;os em branco no texto da instru&#xE7;&#xE3;o &#x201C;<emphasis role="strong">:include: nome-ap&#xF3;s-espa&#xE7;o</emphasis>&#x201D;, newaliases permite. </para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>vers&#xF5;es do sendmail anteriores a V8, n&#xE3;o retiram as aspas (&#x201C;quote&#x201D;) de arquivos &#x201C;:include:&#x201D;.</para>
        </listitem>
      </itemizedlist>
      <para><emphasis role="strong">Alias Owners</emphasis></para>
      <para>Se existir um alias <emphasis role="strong">owner</emphasis>-lista, aonde lista aponta para v&#xE1;rios usu&#xE1;rios ou outros aliases, <emphasis role="strong">fastforward</emphasis> altera o <emphasis role="strong">sender</emphasis> (Return-Path:) de cada mensagem por <emphasis role="strong">owner</emphasis>-lista, antes de encaminhar a mensagem para os destinat&#xE1;rios contidos em lista.</para>
      <para>Ex:</para>
      <para>
        <command>humor: telles, kerne, hugo, cleri</command>
      </para>
      <para>
        <command>owner-humor: telles</command>
      </para>
      <para>Desta forma, novas mensagens para humor ser&#xE3;o entregues para telles, kerne, hugo e cleri, e caso algum destes usu&#xE1;rios n&#xE3;o exista ou ocorra um erro na entrega da mensagem, este erro retornar&#xE1; para o usu&#xE1;rio telles listado como owner<emphasis> </emphasis>(dono) da lista humor.</para>
      <para><emphasis role="strong">Nota de compatibilidade:</emphasis></para>
      <para>Quando um alias inclui um endere&#xE7;o de recipiente e outros aliases, aonde o mesmo endere&#xE7;o de recipiente tamb&#xE9;m est&#xE1; listado dentro de um dos aliases, <emphasis role="strong">fastforward</emphasis> enviar&#xE1; a mesma mensagem 2 (duas) vezes, cada uma com um endere&#xE7;o de <emphasis role="strong">sender </emphasis>diferente. <emphasis role="strong">sendmail</emphasis> envia a mensagem apenas uma vez, e o <emphasis role="strong">sender </emphasis>a ser utilizado vai depender muito das fases da lua.</para>
      <para>Ex:</para>
      <para>
        <command>owner-humor: telles</command>
      </para>
      <para>
        <command>humor: telles, kerne, hugo, cleri</command>
      </para>
      <para>
        <command>friends: kerne, humor</command>
      </para>
    </section>
    <section>
      <title>newinclude</title>
      <para>
        <command>newinclude </command>
        <emphasis>arquivo-de-lista</emphasis>
      </para>
      <para>L&#xEA; entradas do tipo &#x201C;<emphasis role="strong">:include: arquivo-de-lista&#x201D;</emphasis> no estilo <emphasis role="strong">sendmail</emphasis> e converte em um formato bin&#xE1;rio (arquivo-de-lista.bin) para ser utilizado por <emphasis role="strong">fastforward</emphasis>.</para>
      <para>newinclude primeiro escreve no arquivo <emphasis role="strong">arquivo-de-lista.tmp</emphasis> e ent&#xE3;o move o arquivo para <emphasis role="strong">arquivo-de-lista.bin</emphasis>.</para>
      <para>Caso ocorra um problema na grava&#xE7;&#xE3;o de <emphasis role="strong">arquivo-de-lista.tmp</emphasis>, newinclude n&#xE3;o tenta mover <emphasis role="strong">arquivo-de-lista.tmp</emphasis><emphasis> </emphasis>para <emphasis role="strong">arquivo-de-lista.bin</emphasis>, preservando o conte&#xFA;do anterior do arquivo <emphasis role="strong">arquivo-de-lista.bin </emphasis>(caso exista) inalterado.</para>
      <para>newinclude sempre cria <emphasis role="strong">arquivo-de-lista.bin</emphasis> com permiss&#xE3;o de leitura para todos os usu&#xE1;rios do sistema.</para>
      <para><emphasis role="strong">arquivo-de-lista</emphasis> pode conter v&#xE1;rias linhas, cada linha pode conter v&#xE1;rios endere&#xE7;os de e-mail separados por &#x201C;,&#x201D; (v&#xED;rgula) e ainda outras instru&#xE7;&#xF5;es do tipo &#x201C;<emphasis role="strong">:include:arquivo-de-lista&#x201D;</emphasis>.</para>
      <para>Qualquer linha que iniciar com um &#x201C;#&#x201D; (coment&#xE1;rio) ser&#xE1; ignorada.</para>
      <para><emphasis role="strong">Nota de compatibilidade:</emphasis></para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="strong">sendmail</emphasis> l&#xEA; <emphasis role="strong">arquivo-de-lista</emphasis> diretamente, <emphasis role="strong">fastforward</emphasis> necessita do arquivo em formato bin&#xE1;rio (arquivo-de-lista.bin). A estrat&#xE9;gia utilizada por <emphasis role="strong">sendmail</emphasis> pode causar um disastre se o arquivo estiver sendo escrito no disco ao mesmo tempo que <emphasis role="strong">sendmail</emphasis> estiver lendo-o; o arquivo pode ser truncado e ainda incluir &#x201C;sugeiras&#x201D; no meio dos endere&#xE7;os de e-mail da lista; se o sistema travar neste momento, o arquivo ser&#xE1; preenchido com todo tipo de lixo.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>newinclude n&#xE3;o suporta entrega de mensagens em arquivo ou atrav&#xE9;z de programas em arquivos &#x201C;<emphasis role="strong">:include:</emphasis>&#x201D;. Utilize o mecanismo <emphasis role="strong">dot-qmail</emphasis>.</para>
        </listitem>
      </itemizedlist>
      <itemizedlist>
        <listitem>
          <para>Vers&#xF5;es do sendmail anteriores a V8 n&#xE3;o permitem coment&#xE1;rios em arquivos &#x201C;<emphasis role="strong">:include:</emphasis>&#x201D;.</para>
        </listitem>
      </itemizedlist>
    </section>
    <section>
      <title>printforward</title>
      <para>L&#xEA; uma base de dados (cdb) de encaminhamentos via <emphasis role="strong">STDIN</emphasis> e imprime em <emphasis role="strong">STDOUT</emphasis> todas as instru&#xE7;&#xF5;es de encaminhamentos em um formato aceito por <emphasis role="strong">setforward</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command>$ /var/qmail/bin/printforward &lt; /etc/aliases.cdb </command>
      </para>
      <para>
        <command>mailer-daemon@:</command>
      </para>
      <para>
        <command>, &amp;postmaster@myqmail.box</command>
      </para>
      <para>
        <command>;</command>
      </para>
      <para>
        <command>postmaster@:</command>
      </para>
      <para>
        <command>, &amp;root@myqmail.box</command>
      </para>
      <para>
        <command>;</command>
      </para>
      <para>
        <command>root@:</command>
      </para>
      <para>
        <command>, &amp;telles@myqmail.box</command>
      </para>
      <para>
        <command>;</command>
      </para>
      <para>
        <command>humor@:</command>
      </para>
      <para>
        <command>, &amp;cleri@myqmail.box</command>
      </para>
      <para>
        <command>, &amp;hugo@myqmail.box</command>
      </para>
      <para>
        <command>, &amp;kerne@myqmail.box</command>
      </para>
      <para>
        <command>, &amp;telles@myqmail.box</command>
      </para>
      <para>
        <command>;</command>
      </para>
      <para>
        <command>humor@: ?owner-humor@myqmail.box;</command>
      </para>
      <para>
        <command>owner-humor@:</command>
      </para>
      <para>
        <command>, &amp;telles@myqmail.box</command>
      </para>
      <para>
        <command>;</command>
      </para>
    </section>
    <section>
      <title>printmaillist</title>
      <para>L&#xEA; uma lista de e-mails no formato bin&#xE1;rio via <emphasis role="strong">STDIN</emphasis> e imprime todas as instru&#xE7;&#xF5;es de encaminhamento em <emphasis role="strong">STDOUT</emphasis> em um formato aceito por <emphasis role="strong">setmaillist</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command>$ /var/qmail/bin/printmaillist &lt; lista.bin </command>
      </para>
      <para>
        <command>&amp;rodrigo@nosp.am</command>
      </para>
      <para>
        <command>&amp;root@local.net</command>
      </para>
    </section>
    <section>
      <title>setforward</title>
      <para>
        <command>setforward </command>
        <emphasis>cdb tmp</emphasis>
      </para>
      <para>L&#xEA; uma tabela de instru&#xE7;&#xF5;es de encaminhamentos da entrada padr&#xE3;o (<emphasis role="strong">STDIN</emphasis>) e converte em uma base de dados de encaminhamentos, que pode ser utilizada por <emphasis role="strong">fastforward</emphasis>.</para>
      <para>Por seguran&#xE7;a, setforward escreve a base de dados no arquivo <emphasis>tmp</emphasis> e s&#xF3; depois move <emphasis>tmp </emphasis>para <emphasis>cdb. </emphasis></para>
      <para>Caso ocorra um problema na grava&#xE7;&#xE3;o do arquivo <emphasis>tmp</emphasis>, setforward n&#xE3;o tenta mover <emphasis>tmp</emphasis><emphasis> </emphasis>para <emphasis>cdb</emphasis>, preservando o conte&#xFA;do anterior do arquivo inalterado.</para>
      <para>A base de dados <emphasis>cdb</emphasis> &#xE9; port&#xE1;vel entre computadores diferentes, tornando poss&#xED;vel a utiliza&#xE7;&#xE3;o da mesma base por computadores distintos.</para>
      <para>As instru&#xE7;&#xF5;es de redirecionamentos devem conter um alvo, seguido de &#x201C;:&#x201D; (dois pontos), uma s&#xE9;rie de comandos e finalizar com &#x201C;;&#x201D; (ponto-e-v&#xED;rgula):</para>
      <para>
        <command>alvo: comando1, comando2, comando3, ...;</command>
      </para>
      <para>Cada comando, pode ser um ou v&#xE1;rios endere&#xE7;os de recipiente separados por &#x201C;,&#x201D; (v&#xED;rgula), um endere&#xE7;o de owner, uma lista de endere&#xE7;os externos ou um programa.</para>
      <para>Ex:</para>
      <para>
        <command>sysadm@host.com: telles@space.net, sysadm@nosp.am;</command>
      </para>
      <para>Aonde, e-mails para <emphasis role="strong">sysadm@host.com</emphasis> ser&#xE3;o encaminhados para <emphasis role="strong">telles@space.net</emphasis> e <emphasis role="strong">sysadm@nosp.am</emphasis>.</para>
      <para>setforward ignora linhas que iniciam com &#x201C;#&#x201D; (coment&#xE1;rios), finais de linha (permitindo dividir instru&#xE7;&#xF5;es de forwards em mais de uma linha), espa&#xE7;os em branco e tabs (pode-se utilizar de contra-barras para escapar espa&#xE7;os em branco, tabs, v&#xED;rgulas, caracteres especiais, etc).</para>
      <para>Quando <emphasis role="strong">fastforward</emphasis> recebe uma mensagem contendo o destinat&#xE1;rio <emphasis role="strong">user@host.dom</emphasis>, verifica primeiro a exist&#xEA;ncia do alvo <emphasis role="strong">user@host.dom</emphasis>, depois <emphasis role="strong">@host.dom</emphasis> e por fim <emphasis role="strong">user@</emphasis>. Obedecer&#xE1; as regras de encaminhamento do primeiro alvo que encontrar.</para>
      <para>Todos os comandos para um alvo devem ser listados em uma &#xFA;nica instru&#xE7;&#xE3;o; com exce&#xE7;&#xE3;o de endere&#xE7;os de owner.</para>
      <para>Se um comando iniciar com um &#x201C;&amp;&#x201D;, setforward processa o resto do comando como sendo um endere&#xE7;o de recipiente.</para>
      <para>Ex:</para>
      <para>
        <command>root@nosp.am: &amp;ni@nosp.am;</command>
      </para>
      <para>setforward encaminhar&#xE1; cada nova mensagem com destino a <emphasis role="strong">root@nosp.am</emphasis> para <emphasis role="strong">ni@nosp.am</emphasis>. O endere&#xE7;o de recipiente deve ter a forma <emphasis role="strong">user@dominio.com</emphasis> e n&#xE3;o pode ultrapassar 800 bytes (800 caracteres).</para>
      <para><emphasis role="strong">Endere&#xE7;os de owner</emphasis></para>
      <para>Se um comando iniciar com o sinal &#x201C;?&#x201D; (interroga&#xE7;&#xE3;o), setforward processa o resto do comando como sendo um endere&#xE7;o de owner:</para>
      <para>
        <command>suporte@nosp.am: ?owner-suporte@nosp.am;</command>
      </para>
      <para><emphasis role="strong">fastforward</emphasis> utilizar&#xE1; o endere&#xE7;o <emphasis role="strong">owner-suporte@nosp.am </emphasis>como <emphasis role="strong">sender</emphasis> (Return-Path:) de todos os e-mails encaminhados a partir de <emphasis role="strong">suporte@nosp.am.</emphasis></para>
      <para>Normalmente, se uma mensagem &#xE9; encaminhada para um recipiente com problemas, a mensagem volta com erro para o endere&#xE7;o utilizado como <emphasis role="strong">sender</emphasis>.</para>
      <para><emphasis role="strong">Listas externas de e-mails</emphasis></para>
      <para>Se um comando iniciar com um &#x201C;.&#x201D; (ponto) ou com uma &#x201C;/&#x201D; (barra), <emphasis role="strong">fastforward</emphasis> processa o resto do comando como sendo o nome de um arquivo bin&#xE1;rio contendo uma lista de e-mails gerada pelo programa <emphasis role="strong">setmaillist</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command>suporte@nosp.am: /etc/lists/suporte.bin;</command>
      </para>
      <para><emphasis role="strong">fastforward</emphasis> ir&#xE1; ler o conte&#xFA;do do arquivo <command>/etc/lists/suporte.bin</command> e seguir as instru&#xE7;&#xF5;es de encaminhamento contidas neste arquivo. O arquivo precisa ser acess&#xED;vel por qualquer usu&#xE1;rio e por <emphasis role="strong">fastforward</emphasis>.</para>
      <para><emphasis role="strong">Programas</emphasis></para>
      <para>Se um comando iniciar com um &#x201C;|&#x201D; (pipe &#x2013; barra vertical) ou um &#x201C;!&#x201D; (sinal de exclama&#xE7;&#xE3;o), <emphasis role="strong">fastforward</emphasis> processa o resto do comando como sendo o nome de um programa a ser executado.</para>
      <para>Ex:</para>
      <para>
        <command>root-cmd@: | /bin/monitor;</command>
      </para>
      <para>Se utilizado &#x201C;|&#x201D;, <emphasis role="strong">fastforward</emphasis> encaminhar&#xE1; a mensagem para o programa <emphasis role="strong">monitor</emphasis> quando receber uma mensagem para <emphasis role="strong">root-cmd</emphasis>. </para>
      <para>Se utilizado &#x201C;!&#x201D;, <emphasis role="strong">fastforward</emphasis> age da mesma forma, exceto que enviar&#xE1; tamb&#xE9;m as vari&#xE1;veis de ambiente <emphasis role="strong">$UFLINE</emphasis>, <emphasis role="strong">$RPLINE</emphasis> e <emphasis role="strong">$DTLINE</emphasis> ao programa <emphasis role="strong">monitor</emphasis>.</para>
      <para><emphasis role="strong">Duplicidades</emphasis></para>
      <para>Quando setforward est&#xE1; montando a lista de recipientes para cada e-mail, ele segue a lista de recipientes que ser&#xE1; utilizada para os encaminhamentos; se detectar duplicidades de instru&#xE7;&#xF5;es de encaminhamento, ignora a segunda ocorr&#xEA;ncia da instru&#xE7;&#xE3;o e continua o processamento.</para>
      <para>Ex:</para>
      <para>
        <command>everybody@nosp.am: programmers@nosp.am, testers@nosp.am;</command>
      </para>
      <para>
        <command>programmers@nosp.am: root@nosp.am, devel@nosp.am;</command>
      </para>
      <para>
        <command>testers@nosp.am: root@nosp.am, fred@nosp.am;</command>
      </para>
      <para>Mensagens para <emphasis role="strong">everybody@nosp.am</emphasis> ser&#xE3;o encaminhadas para <emphasis role="strong">root@nosp.am </emphasis>apenas<emphasis role="strong"> </emphasis>uma vez. setforward se encarrega de evitar loops internos.</para>
      <para>Exce&#xE7;&#xE3;o: Se o alvo possuir um endere&#xE7;o de owner, comandos para este alvo ser&#xE3;o considerados de forma diferente.</para>
      <para>Ex:</para>
      <para>
        <command>everybody@nosp.am: programmers@nosp.am, testers@nosp.am;</command>
      </para>
      <para>
        <command>programmers@nosp.am: root@nosp.am, devel@nosp.am;</command>
      </para>
      <para>
        <command>testers@nosp.am: root@nosp.am, fred@nosp.am;</command>
      </para>
      <para>
        <command>testers-owner@nosp.am: root@nosp.am</command>
      </para>
      <para>Mensagens para <emphasis role="strong">everybody@nosp.am</emphasis> ser&#xE3;o encaminhadas para <emphasis role="strong">root@nosp.am</emphasis> 2 (duas) vezes; uma vez atrav&#xE9;z de <emphasis role="strong">programmers@nosp.am</emphasis> e outra vez atrav&#xE9;z de <emphasis role="strong">testers@nosp.am</emphasis>. Isto ocorre por causa da exist&#xEA;ncia de <emphasis role="strong">testers-owner@nosp.am</emphasis>, que torna <emphasis role="strong">root@nosp.am</emphasis> especial. <emphasis role="strong">setforward</emphasis> elimina endere&#xE7;os duplicados para aliases regulares, mas n&#xE3;o para listas de e-mails, indicada acima pela exist&#xEA;ncia de <emphasis role="strong">testers-owner</emphasis>.</para>
    </section>
    <section>
      <title>setmaillist</title>
      <para>
        <command>setmaillist </command>
        <emphasis>arquivo.bin arquivo.tmp</emphasis>
      </para>
      <para>L&#xEA; uma lista de e-mails via <emphasis role="strong">STDIN</emphasis>, escreve em formato bin&#xE1;rio em <emphasis role="strong">arquivo.tmp</emphasis> e move <emphasis role="strong">arquivo.tmp</emphasis> para <emphasis role="strong">arquivo.bin</emphasis>.</para>
      <para>Caso ocorra um problema na grava&#xE7;&#xE3;o de <emphasis role="strong">arquivo.tmp</emphasis>, setmaillist imprime uma mensagem de erro em <emphasis role="strong">STDOUT</emphasis> e n&#xE3;o tenta mover <emphasis role="strong">arquivo.tmp</emphasis><emphasis> </emphasis>para <emphasis role="strong">arquivo.bin</emphasis>, preservando o conte&#xFA;do anterior do arquivo <emphasis role="strong">arquivo.bin </emphasis>(caso exista) inalterado.</para>
      <para><emphasis role="strong">arquivo.bin </emphasis>e<emphasis role="strong"> arquivo.tmp </emphasis>devem obrigatoriamente estar localizados no mesmo sistema de arquivos.</para>
      <para>O arquivo bin&#xE1;rio gerado por setmaillist &#xE9; port&#xE1;vel entre computadores diferentes, tornando poss&#xED;vel a utiliza&#xE7;&#xE3;o do mesmo arquivo por computadores distintos.</para>
      <para>setmaillist sempre cria <emphasis role="strong">arquivo.bin</emphasis> com permiss&#xE3;o de leitura para todos os usu&#xE1;rios do sistema.</para>
      <para><emphasis role="strong">Formato de entrada</emphasis></para>
      <para>Se uma linha iniciar com um &#x201C;.&#x201D; (ponto) ou com uma &#x201C;/&#x201D; (barra), setmaillist processa o resto da linha como sendo um arquivo de include.</para>
      <para>Se uma linha iniciar com um &#x201C;&amp;&#x201D;, letras ou n&#xFA;meros , setmaillist processa o resto da linha como sendo um endere&#xE7;o de recipiente.</para>
      <para>Cada endere&#xE7;o de recipiente deve ter a forma <emphasis role="strong">user@dominio.com</emphasis> e n&#xE3;o pode ultrapassar 800 bytes (800 caracteres).</para>
      <para>setmaillist ignora linhas em branco, linhas que iniciam com um &#x201C;#&#x201D; (coment&#xE1;rio), espa&#xE7;os e tabs no final de linhas.</para>
      <para>Ex:</para>
      <para>
        <command>admin@nosp.am</command>
      </para>
      <para>
        <command>&amp;abuse@localhost.net</command>
      </para>
      <para>
        <command>/etc/mail/amigos.bin</command>
      </para>
      <para>
        <command>postmaster@local.net</command>
      </para>
      <para>
        <command/>
      </para>
    </section>
  </section>
  <section>
    <title>O programa checkpassword</title>
    <para>O programa checkpassword &#xE9; utilizado para efetuar a autentica&#xE7;&#xE3;o de usu&#xE1;rios utilizando o arquivo <emphasis role="strong">/etc/password</emphasis>.</para>
    <section>
      <title>checkpassword</title>
      <para>
        <command>checkpassword </command>
        <emphasis>programa</emphasis>
      </para>
      <para>Geralmente utilizado em conjunto com o programa <emphasis role="strong">qmail-popup</emphasis>, checkpassword recebe via file descriptor 3 o nome de usu&#xE1;rio e senha que devem ser verificados no arquivo <emphasis role="strong">/etc/password.</emphasis> </para>
      <para>Se a senha for aceita para o usu&#xE1;rio, checkpassword executa <emphasis>programa</emphasis>. <emphasis>programa </emphasis>consiste em um ou mais argumentos. </para>
      <para>Se a senha n&#xE3;o for aceita, retorna c&#xF3;digo de erro 1. </para>
      <para>Se ocorrer um problema tempor&#xE1;rio na checagem da senha, retorna c&#xF3;digo de erro 111. </para>
      <para>Retorna c&#xF3;digo de erro 2 (dois) para qualquer outra situa&#xE7;&#xE3;o inesperada.</para>
      <para>Exemplo 1:</para>
      <para>
        <command># /var/qmail/bin/qmail-popup nosp.am /bin/checkpassword pwd </command>
      </para>
      <para>
        <command>+OK &lt;1484.1083201875@nosp.am&gt;</command>
      </para>
      <para>
        <command>user ana</command>
      </para>
      <para>
        <command>+OK </command>
      </para>
      <para>
        <command>pass senha</command>
      </para>
      <para>
        <command>/home/ana</command>
      </para>
      <para>Se usu&#xE1;rio e senha estiverem corretos, checkpassword executa o comando <emphasis role="strong">pwd</emphasis> utilizando o usu&#xE1;rio <emphasis role="strong">ana</emphasis>.</para>
      <para>Exemplo 2:</para>
      <para>
        <command># /var/qmail/bin/qmail-popup nosp.am /bin/checkpassword qualquer-comando</command>
      </para>
      <para>
        <command>+OK &lt;1504.1083202316@nosp.am&gt;</command>
      </para>
      <para>
        <command>user zica</command>
      </para>
      <para>
        <command>+OK </command>
      </para>
      <para>
        <command>pass brava</command>
      </para>
      <para>
        <command>-ERR authorization failed</command>
      </para>
      <para>Se usu&#xE1;rio e senha estiverem corretos, mas <emphasis role="strong">qualquer-comando</emphasis> n&#xE3;o for um comando v&#xE1;lido ou n&#xE3;o puder ser localizado, checkpassword falha na autentica&#xE7;&#xE3;o.</para>
      <para>Exemplo 3:</para>
      <para>
        <command># /var/qmail/bin/qmail-popup nosp.am /bin/checkpassword pwd</command>
      </para>
      <para>
        <command>+OK &lt;1511.1083202756@nosp.am&gt;</command>
      </para>
      <para>
        <command>user paula</command>
      </para>
      <para>
        <command>+OK </command>
      </para>
      <para>
        <command>pass lalala</command>
      </para>
      <para>
        <command>-ERR authorization failed</command>
      </para>
      <para>Se usu&#xE1;rio e senha n&#xE3;o estiverem corretos, checkpassword falha na autentica&#xE7;&#xE3;o e n&#xE3;o executa o comando <emphasis role="strong">pwd</emphasis>.</para>
      <para>Sess&#xE3;o de autentica&#xE7;&#xE3;o POP3:</para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/img004.jpg" width="9.775cm" depth="11.003cm"/>
        </imageobject>
      </mediaobject>
      <para/>
    </section>
  </section>
  <section>
    <title>Sistema de entrega</title>
    <section>
      <title>Mailbox</title>
      <para>M&#xE9;todo de entrega de mensagens mais comumente utilizado, que consiste em um arquivo no formato <emphasis role="strong">mbox</emphasis> (Ex: Mailbox) aonde s&#xE3;o armazenadas todas as mensagens, tanto mensagens lidas quanto n&#xE3;o lidas; o status da mensagem pode ser identificado por <emphasis role="strong">FLAGS</emphasis> setadas no campo &#x201C;<emphasis role="strong">Status:&#x201D; </emphasis>no cabe&#xE7;alho de cada mensagem.</para>
      <para>Uma mensagem formatada no padr&#xE3;o <emphasis role="strong">mbox,</emphasis> inicia com uma linha utilizando a nota&#xE7;&#xE3;o &#x201C;<emphasis role="strong">From &#x201C; </emphasis>(<emphasis role="strong">From</emphasis> seguido de um espa&#xE7;o em branco) e finaliza com uma linha em branco. O conte&#xFA;do entre &#x201C;<emphasis role="strong">From &#x201C;</emphasis> e a linha em branco deve ser uma mensagem formatada conforme a <emphasis role="strong">RFC 822</emphasis>. </para>
      <para>Ex:</para>
      <para>
        <command>From root@nosp.am Sun Jul 28 11:05:34 2004</command>
      </para>
      <para>
        <command>Return-Path: &lt;root@nosp.am&gt;</command>
      </para>
      <para>
        <command>Delivered-To: root@localnet.org</command>
      </para>
      <para>
        <command>Date: 28 Jul 2004 11:05:34 -0300</command>
      </para>
      <para>
        <command>From: Imortal &lt;root@nosp.am&gt;</command>
      </para>
      <para>
        <command>To: root@localnet.org</command>
      </para>
      <para>
        <command/>
      </para>
      <para>
        <command>Ol&#xE1;, esta &#xE9; uma mensagem que vai para o guia de consulta sobre qmail.</command>
      </para>
      <para>
        <command/>
      </para>
      <para>
        <command>Meus cumprimentos.</command>
      </para>
      <para>A &#xFA;ltima linha da mensagem deve ser uma linha em branco, sem espa&#xE7;os em branco ou tabs.</para>
      <para><emphasis role="strong">Como a mensagem &#xE9; entregue</emphasis></para>
      <para>Primeiramente &#xE9; criado a linha &#x201C;<emphasis role="strong">From &#x201C;</emphasis> contendo o <emphasis role="strong">sender</emphasis> da mensagem e a data corrente. Se o <emphasis role="strong">sender</emphasis> for vazio (Ex: se for uma mensagem do tipo bounce), <emphasis role="strong">qmail-local</emphasis> utiliza <emphasis role="strong">MAILER-DAEMON</emphasis> como <emphasis role="strong">sender</emphasis>. Se o <emphasis role="strong">sender</emphasis> possuir espa&#xE7;os em branco, tabs ou newlines, <emphasis role="strong">qmail-local</emphasis> os substitui por h&#xED;fens.</para>
      <para>A mensagem &#xE9; copiada para o arquivo, e todas as linhas s&#xE3;o filtradas utilizando a cita&#xE7;&#xE3;o &#x201C;<emphasis role="strong">&gt;From</emphasis>&#x201D;, que significa que cada linha n&#xE3;o deve ser identificada como uma linha de &#x201C;<emphasis role="strong">From </emphasis>&#x201C;. Se uma linha iniciar com &#x201C;<emphasis role="strong">From</emphasis>&#x201D;, ser&#xE1; inserido o caracter &#x201C;&gt;&#x201D; no in&#xED;cio da linha. Se iniciar com &#x201C;<emphasis role="strong">&gt;From</emphasis>&#x201D;, ser&#xE1; transformada em &#x201C;<emphasis role="strong">&gt;&gt;From</emphasis>&#x201D; e assim por diante.</para>
      <para>Finalmente, &#xE9; inserida uma linha em branco no final da mensagem. Se a &#xFA;ltima linha da mensagem for uma linha parcial, ser&#xE3;o adicionadas 2 (duas) linhas em branco, caso contr&#xE1;rio somente uma linha ser&#xE1; adicionada.</para>
      <para><emphasis role="strong">Como a mensagem &#xE9; lida</emphasis></para>
      <para>O leitor de mensagens deve procurar primeiramente pela linha que inicia com &#x201C;<emphasis role="strong">From </emphasis>&#x201C;. Qualquer linha que inicie com &#x201C;<emphasis role="strong">From </emphasis>&#x201C; indica o in&#xED;cio de uma mensagem. O leitor de mensagens n&#xE3;o deve se esfor&#xE7;ar em tomar vantagem do fato de cada linha de &#x201C;<emphasis role="strong">From</emphasis> &#x201C; ser precedida por uma linha em branco.</para>
      <para>Uma vez que o leitor de mensagens encontra o in&#xED;cio de uma mensagem, extrai o <emphasis role="strong">sender</emphasis> e a data de entrega da linha de &#x201C;<emphasis role="strong">From </emphasis>&#x201C;, ent&#xE3;o l&#xEA; a mensagem at&#xE9; a pr&#xF3;xima linha de &#x201C;<emphasis role="strong">From </emphasis>&#x201C; ou at&#xE9; o final do arquivo. Extrai a &#xFA;ltima linha em branco e deleta os caracteres &#x201C;&gt;&#x201D; que possivelmente foram inseridos no in&#xED;cio das linhas que iniciam com &#x201C;<emphasis role="strong">From </emphasis>&#x201C; ou &#x201C;&gt;<emphasis role="strong">From </emphasis>&#x201D; e assim por diante. O resultado &#xE9; uma mensagem formatada conforme a <emphasis role="strong">RFC 822</emphasis>.</para>
      <para>Existem muitas variantes do formato <emphasis role="strong">mbox</emphasis>, a variante utilizada neste documento &#xE9; conhecida como <emphasis role="strong">mboxrd</emphasis> e foi popularizada por <emphasis role="strong">Rahul Dhesi</emphasis> em Junho de 1995.</para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/img005.png" width="4.226cm" depth="7.549cm"/>
        </imageobject>
      </mediaobject>
      <para/>
      <para><emphasis role="strong">Detalhes de travamente de arquivo</emphasis></para>
      <para>Existem muitos mecanismos de travamento de arquivos no formato <emphasis role="strong">mbox</emphasis>. <emphasis role="strong">qmail-local</emphasis> sempre utiliza <emphasis role="strong">flock</emphasis> em sistemas que suportam este mecanismo; caso contr&#xE1;rio, utiliza <emphasis role="strong">lockf</emphasis>.</para>
      <para>A data de entrega na linha de &#x201C;<emphasis role="strong">From </emphasis>&#x201D;<emphasis role="strong"> </emphasis>n&#xE3;o especifica um fuso hor&#xE1;rio. <emphasis role="strong">qmail-local</emphasis> sempre cria a data de entrega no formato <emphasis role="strong">GMT </emphasis>(Greenwich Mean Time - Hor&#xE1;rio M&#xE9;dio de Greenwich), desta forma, arquivos <emphasis role="strong">mbox</emphasis> podem ser transportados de um fuso hor&#xE1;rio<emphasis role="strong"> </emphasis>para outro sem necessidade de altera&#xE7;&#xF5;es da data.</para>
      <para>Se <emphasis role="strong">mtime</emphasis> (hora da &#xFA;ltima modifica&#xE7;&#xE3;o) de um arquivo <emphasis role="strong">mbox</emphasis> n&#xE3;o vazio for maior que <emphasis role="strong">atime</emphasis> (hora do &#xFA;ltimo acesso), significa que o arquivo <emphasis role="strong">mbox</emphasis> tem novo e-mail. Se <emphasis role="strong">mtime </emphasis>for menor que <emphasis role="strong">atime</emphasis>, significa que o novo e-mail j&#xE1; foi lido. Se <emphasis role="strong">mtime</emphasis> for igual a <emphasis role="strong">atime</emphasis>, n&#xE3;o h&#xE1; forma de determinar se existem novos e-mails ou n&#xE3;o no arquivo <emphasis role="strong">mbox</emphasis>; para estes casos, a solu&#xE7;&#xE3;o &#xE9; o leitor de e-mails setar artificialmente <emphasis role="strong">mtime</emphasis> com o valor de <emphasis role="strong">atime + 1</emphasis>. Desta forma, o arquivo <emphasis role="strong">mbox </emphasis>somente ter&#xE1; novas mensagens se <emphasis role="strong">atime</emphasis> for menor ou igual a <emphasis role="strong">mtime</emphasis>.</para>
      <para>Alguns leitores de e-mails adicionam o campo &#x201C;<emphasis role="strong">Status:&#x201D;</emphasis> em cada mensagem, para indicar que a mensagem j&#xE1; foi lida.</para>
      <para>Pelo fato de todas as mensagens serem armazenadas em um &#xFA;nico arquivo, o m&#xE9;todo <emphasis role="strong">mbox </emphasis>torna-se bastante vulner&#xE1;vel a falhas de corrup&#xE7;&#xE3;o, sejam por m&#xE9;todos de acesso/escrita simult&#xE2;neos ou por travamentos do sistema no momento de entrega de novas mensagens.</para>
      <para>Por padr&#xE3;o, <emphasis role="strong">qmail-local </emphasis>adiciona novas mensagens no final do arquivo <emphasis role="strong">Mailbox</emphasis>.</para>
      <para>O formato <emphasis role="strong">mbox</emphasis> n&#xE3;o pode ser utilizado com seguran&#xE7;a em sistemas de arquivo <emphasis role="strong">NFS</emphasis> (Network File System).</para>
    </section>
    <section>
      <title>Maildir</title>
      <para>M&#xE9;todo de entrega de mensagens que consiste em um diret&#xF3;rio (Maildir) com subdiret&#xF3;rios (<emphasis role="strong">new</emphasis>, <emphasis role="strong">cur</emphasis> e <emphasis role="strong">tmp</emphasis> - devem estar localizados no mesmo sistema de arquivos), aonde cada mensagem &#xE9; armazenada em um arquivo independente.</para>
      <para>Maildir &#xE9; mais eficiente que o tradicional formato <emphasis role="strong">mbox</emphasis>, pois n&#xE3;o causa truncamentos de arquivos &#x2013; seja por acesso simult&#xE2;neo ou travamento do sistema no momento da entrega - e problemas de travamento de caixa postal.</para>
      <para>Desta forma, um computador pode ter 2 (dois) ou mais programas entregando mensagens simultaneamente para o mesmo usu&#xE1;rio sem nenhum problema.</para>
      <para>O diret&#xF3;rio <emphasis role="strong">tmp</emphasis> &#xE9; utilizado no momento da entrega como destino tempor&#xE1;rio de novas mensagens, e somente depois que o sistema de entrega consegue escrever a mensagem com sucesso dentro de <emphasis role="strong">tmp</emphasis>, a mensagem &#xE9; copiada para dentro do diret&#xF3;rio <emphasis role="strong">new</emphasis> e ent&#xE3;o removida do diret&#xF3;rio <emphasis role="strong">tmp</emphasis>. Cada arquivo dentro do diret&#xF3;rio <emphasis role="strong">new</emphasis> &#xE9; uma nova mensagem. O <emphasis role="strong">mtime</emphasis> do arquivo ser&#xE1; a data de entrega da mensagem. A mensagem &#xE9; entregue sem nenhuma linha adicional de &#x201C;<emphasis role="strong">From </emphasis>&#x201D;, sem nenhuma cita&#xE7;&#xE3;o do tipo &#x201C;<emphasis role="strong">&gt;From </emphasis>&#x201D;<emphasis role="strong"> </emphasis>e sem nenhuma linha em branco adicional no final do arquivo. A mensagem normalmente est&#xE1; formatada conforme a <emphasis role="strong">RFC 822</emphasis>, iniciando com uma linha de &#x201C;<emphasis role="strong">Return-Path</emphasis>&#x201D;<emphasis role="strong"> </emphasis>e uma linha &#x201C;<emphasis role="strong">Delivered-To</emphasis>&#x201D;, mas tamb&#xE9;m pode conter dados bin&#xE1;rios arbitr&#xE1;rios. A mensagem n&#xE3;o precisa necessariamente finalizar com uma linha em branco.</para>
      <para>As mensagens s&#xE3;o armazenadas em arquivos com nome no formato <emphasis role="strong">timestamp.pid.nome-do-host</emphasis>.</para>
      <para>Ex: </para>
      <para>
        <command>1082564410.2518.mybox.nosp.am</command>
      </para>
      <para>Aonde, <emphasis role="strong">1082564410</emphasis> &#xE9; o n&#xFA;mero de segundos contados a partir de 00:00:00 01-01-1970 UTC, <emphasis role="strong">2518</emphasis> &#xE9; o n&#xFA;mero do processo que gerou a entrega e <emphasis role="strong">mybox.nosp.am </emphasis>&#xE9; o nome local da m&#xE1;quina.</para>
      <para>O formato Maildir pode ser utilizado sem problemas em sistemas de arquivo <emphasis role="strong">NFS</emphasis> (Network File System).</para>
      <para><emphasis role="strong">Funcionamento do sistema de entrega</emphasis></para>
      <para>Mensagens entregues por <emphasis role="strong">qmail-local </emphasis>s&#xE3;o feitas em 6 etapas:</para>
      <orderedlist continuation="restarts" numeration="arabic">
        <listitem>
          <para>Altera o diret&#xF3;rio corrente para o diret&#xF3;rio Maildir do usu&#xE1;rio (<emphasis role="strong">$HOME/Maildi</emphasis>r).</para>
        </listitem>
        <listitem>
          <para>Utiliza a fun&#xE7;&#xE3;o <emphasis role="strong">stat()</emphasis> do UNIX para determinar se o arquivo <emphasis role="strong">tmp/timestamp.pid.nome-do-host </emphasis>existe.</para>
        </listitem>
        <listitem>
          <para>Se o arquivo existir, aguarda 2 (dois) segundos e tenta novamente utilizando o <emphasis role="strong">timestamp</emphasis> atualizado, se falhar, tenta mais uma vez, e em caso de falha, abandona a entrega e retorna um erro.</para>
        </listitem>
        <listitem>
          <para>Se o arquivo n&#xE3;o existir, cria o arquivo <emphasis role="strong">tmp/timestamp.pid.nome-do-host</emphasis>.</para>
        </listitem>
        <listitem>
          <para>Armazena a mensagem recebida no arquivo <emphasis role="strong">tmp/timestamp.pid.nome-do-host</emphasis> criado anteriormente.</para>
        </listitem>
        <listitem>
          <para>O arquivo &#xE9; copiado com o mesmo nome para dentro do diret&#xF3;rio <emphasis role="strong">new</emphasis> e s&#xF3; ent&#xE3;o &#xE9; removido do diret&#xF3;rio <emphasis role="strong">tmp</emphasis>.</para>
        </listitem>
      </orderedlist>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/img006.png" width="4.507cm" depth="8.052cm"/>
        </imageobject>
      </mediaobject>
      <para/>
      <para>Mensagens j&#xE1; lidas pelo cliente de e-mail (MUA &#x2013; Mail User Agent), s&#xE3;o movidas do diret&#xF3;rio <emphasis role="strong">new</emphasis> para dentro do diret&#xF3;rio <emphasis role="strong">cur</emphasis>. Tal a&#xE7;&#xE3;o s&#xF3; &#xE9; executada caso o cliente de e-mail esteja configurado para deixar c&#xF3;pia de mensagens no servidor. Normalmente, a mensagem &#xE9; removida ap&#xF3;s ser lida.</para>
      <para>O leitor da mensagem tamb&#xE9;m deve verificar por mensagens antigas dentro do diret&#xF3;rio <emphasis role="strong">tmp</emphasis> e remove-las. O arquivo &#xE9; considerado antigo e pode ser removido com seguran&#xE7;a se n&#xE3;o foi acessado a 36 horas atr&#xE1;z.</para>
      <para>&#xC9; uma boa id&#xE9;ia para leitores de mensagens, ignorarem arquivos dentro de <emphasis role="strong">new</emphasis> e <emphasis role="strong">tmp</emphasis> que iniciem com &#x201C;.&#x201D; (ponto).</para>
      <para>Leitores de e-mail que suportam nativamente o formato <emphasis role="strong">Maldir</emphasis>, utilizam a vari&#xE1;vel de ambiente <emphasis role="strong">$MAILDIR</emphasis> para localizar corretamente o diret&#xF3;rio <emphasis role="strong">Maildir </emphasis>do usu&#xE1;rio.</para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/img007.png" width="4.547cm" depth="8.124cm"/>
        </imageobject>
      </mediaobject>
      <para/>
      <para>Quando a mensagem &#xE9; movida para o diret&#xF3;rio <emphasis role="strong">cur</emphasis>, o nome do arquivo &#xE9; alterado para:</para>
      <para>
        <command>timestamp.pid.nome-do-host:info</command>
      </para>
      <para>O <emphasis role="strong">timestamp, </emphasis>o<emphasis role="strong"> pid</emphasis> e <emphasis role="strong">nome-do-host</emphasis> continuam os mesmos.</para>
      <para><emphasis role="strong">:info</emphasis> &#xE9; equivalente ao campo &#x201C;<emphasis role="strong">Status:&#x201D;</emphasis> utilizado no cabe&#xE7;alho de mensagens no formato <emphasis role="strong">mbox</emphasis>.</para>
      <para><emphasis role="strong">info</emphasis> consiste em 2 (dois) campos separados por &#x201C;,&#x201D; (v&#xED;rgula), o primeiro &#xE9; um n&#xFA;mero e o segundo &#xE9; uma <emphasis role="strong">FLAG</emphasis>, utilizada para ajudar a identificar o status da mensagem aos clientes de e-mail (MUA).</para>
      <para>Ex:</para>
      <para>
        <command>1082564410.2518.mybox.nosp.am:2,S</command>
      </para>
      <para>Se o campo num&#xE9;rico contiver o n&#xFA;mero 1 (hum), significa que a <emphasis role="strong">FLAG</emphasis> logo ap&#xF3;s a v&#xED;rgula &#xE9; do tipo experimental.</para>
      <para>Se o campo num&#xE9;rico contiver o n&#xFA;mero 2 (dois), significa que a <emphasis role="strong">FLAG</emphasis> logo ap&#xF3;s a v&#xED;rgula &#xE9; padr&#xE3;o, do tipo:</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="2.2cm"/>
          <colspec colname="c2" colwidth="14.8cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Flag</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>P (passed)</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O usu&#xE1;rio encaminhou/rebateu esta mensagem para outro recipiente.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>R (replied)</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O usu&#xE1;rio respondeu a esta mensagem.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>S (seen)</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O usu&#xE1;rio leu esta mensagem.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>T (trashed)</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O usu&#xE1;rio moveu esta mensagem para a lixeira (trash) e ser&#xE1; removida na finaliza&#xE7;&#xE3;o da sess&#xE3;o.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>D (draft)</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O usu&#xE1;rio considera esta mensagem um rascunho/esbo&#xE7;o (draft).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>F (flagged)</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Flag definida pelo usu&#xE1;rio.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
  </section>
  <section>
    <title>Programas do pacote ucspi-tcp</title>
    <para>O pacote ucspi-tcp (<emphasis role="strong">U</emphasis>nix <emphasis role="strong">C</emphasis>lient-<emphasis role="strong">S</emphasis>erver <emphasis role="strong">P</emphasis>rogram <emphasis role="strong">I</emphasis>nterface) &#xE9; um conjunto de programas espec&#xED;ficos para manipula&#xE7;&#xE3;o de conex&#xF5;es de rede utilizando o protocolo TCP.</para>
    <section>
      <title>addcr</title>
      <para>Insere um <emphasis role="strong">CR</emphasis> (carriage return - \015) antes de cada <emphasis role="strong">LF</emphasis> (line feed - \012) no final de cada linha de entrada.</para>
      <para>N&#xE3;o insere o <emphasis role="strong">CR</emphasis> em linhas que possuem um final de linha parcial.</para>
      <para>V&#xE1;rios programas <emphasis role="strong">unix2dos</emphasis> e <emphasis role="strong">dos2unix</emphasis> tem problemas com linhas longas e caracteres nulos, addcr n&#xE3;o tem problemas com tais carateres.</para>
    </section>
    <section>
      <title>argv0</title>
      <para>
        <command>argv0 </command>
        <emphasis>programa argumento-zero</emphasis>
        <command> [ </command>
        <emphasis>argumentos</emphasis>
        <command> ]</command>
      </para>
      <para>Executa <emphasis>programa</emphasis> e seus argumentos utilizando <emphasis>argumento-zero </emphasis>como se fosse o nome de <emphasis>programa</emphasis>.</para>
      <para>Alguns programas utilizam o argumento zero (argv[0] &#x2013; nome do programa) como argumento especial e argv0 permite setar <emphasis>argumento-zero </emphasis>para argv[0].</para>
      <para>Ex :</para>
      <para>
        <command>$ ./programa.bin</command>
      </para>
      <para>
        <command>Meu nome &#xE9;: ./programa.bin</command>
      </para>
      <para>
        <command>$ argv0 ./programa.bin meu-novo-nome</command>
      </para>
      <para>
        <command>Meu nome &#xE9;: meu-novo-nome</command>
      </para>
    </section>
    <section>
      <title>date@</title>
      <para>
        <command>date@ </command>
        <emphasis>host-remoto</emphasis>
      </para>
      <para>Imprime a data de <emphasis>host-remoto.</emphasis></para>
      <para>Conecta em <emphasis>host-remoto</emphasis> na porta 13/TCP (daytime) e imprime a data corrente do sistema.</para>
      <para>Remove o <emphasis role="strong">CR</emphasis> (carriage return - \015) da entrada recebida e converte caracteres que n&#xE3;o podem ser impressos na tela em um formato vis&#xED;vel.</para>
      <para>Se <emphasis>host-remoto</emphasis><emphasis> </emphasis>n&#xE3;o for informado, date@ ir&#xE1; conectar em <emphasis role="strong">localhost</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command># tcpserver &#x2013;RHl0 0 13 /bin/date</command>
      </para>
      <para>
        <command>$ date@</command>
      </para>
      <para>
        <command>Wed Aug 4 23:17:15 BRT 2004</command>
      </para>
    </section>
    <section>
      <title>delcr</title>
      <para>Remove o <emphasis role="strong">CR</emphasis> (carriage return - \015) do final de cada linha de entrada, se o <emphasis role="strong">CR</emphasis> estiver presente.</para>
      <para>N&#xE3;o remove o <emphasis role="strong">CR</emphasis> em linhas que possuem um final de linha parcial.</para>
      <para>V&#xE1;rios programas <emphasis role="strong">unix2dos</emphasis> e <emphasis role="strong">dos2unix</emphasis> tem problemas com linhas longas e caracteres nulos, delcr n&#xE3;o tem problemas com tais carateres.</para>
    </section>
    <section>
      <title>finger@</title>
      <para>
        <command>finger@ </command>
        <emphasis>host-remoto</emphasis>
        <command> </command>
        <emphasis>usu&#xE1;rio</emphasis>
      </para>
      <para>Busca informa&#xE7;&#xF5;es de <emphasis>usu&#xE1;rio </emphasis>em <emphasis>host-remoto.</emphasis></para>
      <para>Conecta em <emphasis>host-remoto </emphasis>na porta 79/TCP (finger) e tenta obter informa&#xE7;&#xF5;es de <emphasis>usu&#xE1;rio.</emphasis></para>
      <para>Remove o <emphasis role="strong">CR</emphasis> (carriage return - \015) da entrada recebida e converte caracteres que n&#xE3;o podem ser impressos na tela em um formato vis&#xED;vel.</para>
      <para>Se <emphasis>usu&#xE1;rio</emphasis> n&#xE3;o for especificado, finger@ envia uma linha em branco para <emphasis>host-remoto</emphasis>. Alguns computadores respondem com informa&#xE7;&#xF5;es de todos os usu&#xE1;rios conectados no sistema.</para>
      <para>Se <emphasis>host-remoto</emphasis><emphasis> </emphasis>n&#xE3;o for informado, finger@ ir&#xE1; conectar em <emphasis role="strong">localhost</emphasis>.</para>
    </section>
    <section>
      <title>fixcrio</title>
      <para>
        <command>fixcrio </command>
        <emphasis>programa</emphasis>
      </para>
      <para>Executa <emphasis>programa </emphasis>e insere um retorno de carro (CR &#x2013; carriage return) no final de cada linha de entrada ou sa&#xED;da de <emphasis>programa</emphasis> que n&#xE3;o contenha um retorno de carro.</para>
      <para>fixcrio &#xE9; executado como um processo filho de <emphasis>programa</emphasis>. Quando <emphasis>programa</emphasis> &#xE9; finalizado, fixcrio tamb&#xE9;m &#xE9; finalizado.</para>
    </section>
    <section>
      <title>http@</title>
      <para>
        <command>http@ </command>
        <emphasis>host-remoto p&#xE1;gina-web 80</emphasis>
      </para>
      <para>Busca <emphasis>p&#xE1;gina-web</emphasis> em <emphasis>host-remoto </emphasis>na porta <emphasis>80 </emphasis>TCP<emphasis>.</emphasis></para>
      <para>http@ envia os comandos</para>
      <para>GET /<emphasis>p&#xE1;gina-web</emphasis> HTTP/1.0</para>
      <para>Host: <emphasis>host-remoto</emphasis></para>
      <para>para <emphasis>host-remoto</emphasis> na porta TCP especificada e imprime o conte&#xFA;do da resposta, removendo o <emphasis role="strong">CR</emphasis> de cada linha recebida. </para>
      <para>Ex:</para>
      <para>
        <command>$ http@ www.nosp.am /index.php 80</command>
      </para>
      <para>http@ exibir&#xE1; o conte&#xFA;do HTML de <emphasis role="strong">index.php</emphasis> (caso a p&#xE1;gina exista) na porta <emphasis role="strong">80</emphasis> do host <emphasis role="strong">www.nosp.am</emphasis>.</para>
      <para>Se a porta TCP n&#xE3;o for especificada, http@ utilizar&#xE1; a porta 80/TCP.</para>
      <para>Se <emphasis>p&#xE1;gina-web</emphasis><emphasis> </emphasis>n&#xE3;o for especificada, http@ utilizar&#xE1; &#x201C;/&#x201D; (barra).</para>
      <para>Se <emphasis>host-remoto</emphasis><emphasis> </emphasis>n&#xE3;o for informado, http@ ir&#xE1; conectar em <emphasis role="strong">localhost</emphasis>.</para>
    </section>
    <section>
      <title>mconnect</title>
      <para>
        <command>mconnect </command>
        <emphasis>host-remoto porta</emphasis>
      </para>
      <para>Conecta em um servidor SMTP remoto.</para>
      <para>Ex:</para>
      <para>
        <command>mconnect 172.17.16.11 25</command>
      </para>
      <para>
        <command>220 Welcome [Seja bem vindo] ESMTP</command>
      </para>
      <para>mconnect adiciona um <emphasis role="strong">CR</emphasis> no final de cada linha enviada para <emphasis>host-remoto,</emphasis> e imprime em tela qualquer resposta recebida.</para>
      <para>Se <emphasis>porta</emphasis> n&#xE3;o for especificada, mconnect utilizar&#xE1; a porta 25/TCP (SMTP).</para>
      <para>Se <emphasis>host-remoto</emphasis><emphasis> </emphasis>n&#xE3;o for informado, mconnect ir&#xE1; conectar em <emphasis role="strong">localhost</emphasis>.</para>
    </section>
    <section>
      <title>rblsmtpd</title>
      <para>
        <command>rblsmtpd [ -BbCc ] [ -R ] [ -t </command>
        <emphasis>n </emphasis>
        <command>] [ -r </command>
        <emphasis>base </emphasis>
        <command>-r </command>
        <emphasis>base1</emphasis>
        <command> -r</command>
        <emphasis> baseN </emphasis>
        <command>] [ -a </command>
        <emphasis>a-base </emphasis>
        <command>] </command>
        <emphasis>smtpd</emphasis>
        <command> [ </command>
        <emphasis>argumentos </emphasis>
        <command>]</command>
      </para>
      <para>Rejeita conex&#xF5;es de IPs que estejam cadastrados em listas negras (RBLs).</para>
      <para>Pode ser utilizado em qualquer servidor SMTP que suporte ser executado sob <emphasis role="strong">tcpserver</emphasis>.</para>
      <para>Se a vari&#xE1;vel de ambiente <emphasis role="strong">$RBLSMTPD</emphasis> estiver setada e seu conte&#xFA;do n&#xE3;o for vazio, rblsmtpd rejeita a conex&#xE3;o e envia o conte&#xFA;do dessa vari&#xE1;vel como mensagem de erro para o cliente; se o conte&#xFA;do da vari&#xE1;vel for vazio, rblsmtpd n&#xE3;o rejeita a conex&#xE3;o.</para>
      <para>Normalmente, rblsmtpd &#xE9; executado sob <emphasis role="strong">tcpserver</emphasis>; voc&#xEA; pode utilizar o programa <emphasis role="strong">tcprules</emphasis> para setar a vari&#xE1;vel de ambiente <emphasis role="strong">$RBLSMTPD</emphasis> para determinados clientes. Se o conte&#xFA;do de <emphasis role="strong">$RBLSMTPD</emphasis> iniciar com um &#x201C;-&#x201C; (h&#xED;fem), rblsmtpd remove o h&#xED;fem e utiliza o c&#xF3;digo de erro 553, podendo assim, rejeitar conex&#xF5;es de clientes leg&#xED;timos. </para>
      <para>Se a vari&#xE1;vel de ambiente <emphasis role="strong">$RBLSMTPD</emphasis> n&#xE3;o existir, rblsmtpd procura por <emphasis role="strong">$TCPREMOTEIP</emphasis> na base <emphasis role="strong">RBL</emphasis> e rejeita a conex&#xE3;o se <emphasis role="strong">$TCPREMOTEIP</emphasis> estiver listado. <emphasis role="strong">tcpserver</emphasis> seta a vari&#xE1;vel <emphasis role="strong">$TCPREMOTEIP</emphasis> com o IP do host remoto.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="2.2cm"/>
          <colspec colname="c2" colwidth="14.8cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xF5;es</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-B</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza o c&#xF3;digo de erro 451 para IPs cadastrados em listas negras (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-b</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza o c&#xF3;digo de erro 553 para IPs cadastrados em listas negras.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-C</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Caso a procura pela lista negra falhe, assume que o IP n&#xE3;o est&#xE1; listado e aceita a conex&#xE3;o (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-c</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Caso a procura pela lista negra falhe, assume que o IP est&#xE1; listado e rejeita a conex&#xE3;o (utiliza c&#xF3;digo de erro 451, mesmo que <emphasis role="strong">&#x2013;c</emphasis> tenha sido especificado).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-r <emphasis>base</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza <emphasis>base </emphasis>como fonte de consulta para IPs que devem ser bloqueados. <emphasis>base </emphasis>deve ser um endere&#xE7;o IP ou um nome de host. Pode-se especificar v&#xE1;rias bases repetindo-se o par&#xE2;metro &#x201C;<emphasis role="strong">-r</emphasis>&#x201D;. Ex: -r <emphasis>bl</emphasis>.<emphasis>spamcop.net </emphasis>-r<emphasis> relays.ordb.org </emphasis>-r <emphasis>spam.halls.net</emphasis>. O endere&#xE7;o IP <emphasis role="strong">a.b.c.d </emphasis>estar&#xE1; listado na <emphasis>base</emphasis>, se <emphasis role="strong">d.c.b.a.</emphasis><emphasis>base</emphasis> possuir um registro <emphasis role="strong">DNS</emphasis> do tipo <emphasis role="strong">TXT</emphasis>. rblsmtpd utiliza o conte&#xFA;do do registro <emphasis role="strong">TXT</emphasis> como mensagem de erro para o cliente. Se n&#xE3;o for especificada nenhuma base, rblsmtpd utilizar&#xE1; por padr&#xE3;o a entrada <emphasis role="strong">rbl.maps.vix.com</emphasis>. Isso pode ser alterado em pr&#xF3;ximas vers&#xF5;es.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-a <emphasis>a-base</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza <emphasis>a-base</emphasis> como fonte de consulta para IPs que est&#xE3;o listados em <emphasis>base </emphasis>mas mesmo assim devem ser liberados. Pode-se especificar v&#xE1;rias bases repetindo-se o par&#xE2;metro &#x201C;<emphasis role="strong">-a</emphasis>&#x201D;. Ex: -a <emphasis>anti-bl</emphasis>.<emphasis>mynet.com </emphasis>-a<emphasis> anti-bl.nosp.am</emphasis>. O endere&#xE7;o IP <emphasis role="strong">a.b.c.d</emphasis> ser&#xE1; liberado se <emphasis role="strong">d.c.b.a.</emphasis><emphasis>a-base</emphasis> possuir um registro <emphasis role="strong">DNS</emphasis> do tipo <emphasis role="strong">A</emphasis>. Neste caso, rblsmtpd n&#xE3;o rejeitar&#xE1; a conex&#xE3;o. </para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-t <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tempo m&#xE1;ximo em segundos que aguarda antes de terminar a conex&#xE3;o com a <emphasis>base </emphasis>de consulta remota (timeout &#x2013; Padr&#xE3;o: 60 segundos).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>smtpd</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Software de SMTP a ser utilizado em conjunto com rblsmtpd. rblsmtpd somente invoca <emphasis>smtpd</emphasis> caso a conex&#xE3;o seja aceita, e passa o controle da conex&#xE3;o para <emphasis>smtpd</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>argumentos</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Argumentos a serem utilizados em smtpd.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para>Se voc&#xEA; quiser utilizar a sua pr&#xF3;pria <emphasis role="strong">RBL</emphasis> ou anti-<emphasis role="strong">RBL</emphasis>, utilize o programa <emphasis role="strong">rbldns</emphasis> do pacote <emphasis role="strong">djbdns</emphasis>.</para>
    </section>
    <section>
      <title>recordio</title>
      <para>
        <command>recordio </command>
        <emphasis>programa</emphasis>
      </para>
      <para>Executa <emphasis>programa</emphasis> e imprime a entrada e sa&#xED;da no file descriptor 2.</para>
      <para>recordio insere na sa&#xED;da, o <emphasis role="strong">ID</emphasis> do processo seguido de um &#x201C;<emphasis role="strong">&lt;&#x201D;</emphasis> para entrada ou &#x201C;<emphasis role="strong">&gt;&#x201D;</emphasis> para sa&#xED;da. Insere &#x201C;<emphasis role="strong">+&#x201D;</emphasis> no final de cada linha, um espa&#xE7;o ou um <emphasis role="strong">[EOF]</emphasis>. O espa&#xE7;o indica que existe um <emphasis role="strong">new line</emphasis> (\n) na entrada ou na sa&#xED;da, e <emphasis role="strong">[EOF]</emphasis> indica que chegou ao final da entrada ou da sa&#xED;da.</para>
      <para>recordio imprime qualquer pacote de entrada ou sa&#xED;da imediatamente e n&#xE3;o tenta combinar pacotes em linhas coerentes.</para>
      <para>Ex: </para>
      <para>
        <command>$ recordio sed 's/bom/o melhor/' &lt; qmail.txt &gt; /dev/null</command>
      </para>
      <para>
        <command>1982 &lt; qmail &#xE9; bom ! </command>
      </para>
      <para>
        <command>1982 &lt; [EOF]</command>
      </para>
      <para>
        <command>1982 &gt; qmail &#xE9; o melhor ! </command>
      </para>
      <para>
        <command>1982 &gt; [EOF]</command>
      </para>
      <para>recordio utiliza v&#xE1;rias linhas para pacotes longos para garantir que cada linha seja impressa atomicamente.</para>
      <para>recordio &#xE9; executado como um processo filho de <emphasis>programa</emphasis>. Quando <emphasis>programa</emphasis> &#xE9; finalizado, recordio tamb&#xE9;m &#xE9; finalizado.</para>
    </section>
    <section>
      <title>tcpcat</title>
      <para>
        <command>tcpcat </command>
        <emphasis>host-remoto porta</emphasis>
      </para>
      <para>Imprime dados recebidos pela porta TCP <emphasis>porta </emphasis>de <emphasis>host-remoto.</emphasis></para>
      <para>Ex:</para>
      <para>
        <command>$ tcpcat ftp.telles.net 21</command>
      </para>
      <para>
        <command>220 FTP Server ready</command>
      </para>
      <para>tcpcat pode ser utilizado para transfer&#xEA;ncia de dados bin&#xE1;rios, pois n&#xE3;o aplica nenhum tipo convers&#xE3;o de dados.</para>
    </section>
    <section>
      <title>tcpclient</title>
      <para>
        <command>tcpclient [ -hHrRdDqQv ] [ -i </command>
        <emphasis>iplocal</emphasis>
        <command> ] [ -p </command>
        <emphasis>portalocal</emphasis>
        <command> ] [ -T </command>
        <emphasis>x+y</emphasis>
        <command> ] [ -l </command>
        <emphasis>nomelocal</emphasis>
        <command> ] [ -t </command>
        <emphasis>n</emphasis>
        <command> ] </command>
        <emphasis>host porta programa</emphasis>
      </para>
      <para>Efetua conex&#xF5;es TCP em hosts remotos.</para>
      <para>tcpclient tenta conectar e uma porta TCP em host remoto; se obtiver sucesso, executa <emphasis>programa</emphasis> recebendo dados de rede via descriptor 6 e enviando via descriptor 7. Por padr&#xE3;o, cria uma s&#xE9;rie de vari&#xE1;veis TCP.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="2.2cm"/>
          <colspec colname="c2" colwidth="14.8cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xF5;es</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-q</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o imprime mensagens de erro na tela.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-Q</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Imprime mensagens de erro na tela (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-v</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Imprime mensagens de erro e de status na tela.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-T <emphasis>x+y</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Abandona a conex&#xE3;o ap&#xF3;s <emphasis>x+</emphasis>y segundos. (Padr&#xE3;o: 2+58 segundos). Quando o host possui v&#xE1;rios endere&#xE7;os IP, tcpclient tenta conectar no primeiro endere&#xE7;o IP, aguarda <emphasis>x</emphasis> segundos, tenta conectar no segundo endere&#xE7;o IP, aguarda <emphasis>x </emphasis>segundos e assim por diante; logo ap&#xF3;s a primeira sequ&#xEA;ncia de tentativas, tenta conectar uma segunda vez em cada um dos hosts que falharam, e aguarda <emphasis>y</emphasis> segundos em cada tentativa. &#xC9; poss&#xED;vel omitir +<emphasis>y</emphasis>, para tcpclient n&#xE3;o executar a segunda tentativa de conex&#xE3;o. Vers&#xF5;es de tcpclient anteriores a 0.88, utilizam apenas <emphasis>x</emphasis> (Padr&#xE3;o: 60 segundos).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-i <emphasis>iplocal</emphasis><emphasis> </emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Especifica o endere&#xE7;o IP local a ser utilizado como origem da conex&#xE3;o. Aborta com erro se <emphasis>iplocal</emphasis> n&#xE3;o estiver dispon&#xED;vel. Normalmente tcpclient deixa o sistema operacional escolher o IP.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-p<emphasis> </emphasis><emphasis>portalocal</emphasis><emphasis> </emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Especifica a porta TCP local a ser utilizada como origem da conex&#xE3;o. Aborta com erro se <emphasis>portalocal</emphasis> n&#xE3;o estiver dispon&#xED;vel. Normalmente tcpclient deixa o sistema operacional escolher a porta.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-l <emphasis>nomelocal</emphasis><emphasis> </emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o tenta resolver <emphasis>nomelocal</emphasis> em DNS. Utiliza <emphasis>nomelocal</emphasis> para a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPLOCALHOST</emphasis>. Recomendado utilizar 0 (zero) como <emphasis>nomelocal.</emphasis></para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-d</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Atrasa o envio de dados em uma fra&#xE7;&#xE3;o de segundos caso o host remoto responda lentamente (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-D</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Nunca atrasa o envio de dados. Habilita a op&#xE7;&#xE3;o <emphasis role="strong">TCP_NODELAY</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-h</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tenta obter o nome do host remoto via DNS para setar a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEHOST</emphasis> (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-H</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o tenta obter o nome do host remoto via DNS e remove a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEHOST</emphasis> caso esteja setada.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-r</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tenta obter informa&#xE7;&#xF5;es do host remoto para setar a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEINFO</emphasis> (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-R</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o tenta obter informa&#xE7;&#xF5;es do host remoto.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-t <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Desiste de obter informa&#xE7;&#xF5;es do host remoto para setar <emphasis role="strong">$TCPREMOTEINFO</emphasis> ap&#xF3;s <emphasis>n </emphasis>segundos (timeout &#x2013; Padr&#xE3;o: 26 segundos).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>host</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Alvo remoto a ser utilizado para a conex&#xE3;o. <emphasis>host </emphasis>pode ser 0 (zero), referindo-se ao host local, um endere&#xE7;o IP na forma <emphasis role="strong">a.b.c.d</emphasis> ou um nome de host. Se o alvo possuir v&#xE1;rios endere&#xE7;os IP, tcpclient tentar&#xE1; conectar em cada endere&#xE7;o IP at&#xE9; obter sucesso na conex&#xE3;o.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>porta</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Porta TCP alvo do host remoto a ser utilizada. <emphasis>porta</emphasis><emphasis> </emphasis>deve ser um nome listado em <emphasis role="strong">/etc/services</emphasis> ou um n&#xFA;mero.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>programa</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Programa a ser executado em caso de sucesso da conex&#xE3;o TCP.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
    </section>
    <section>
      <title>tcprules</title>
      <para>
        <command>tcprules </command>
        <emphasis>cdb tmp &lt; arquivo-de-regras</emphasis>
      </para>
      <para>Compila regras que podem ser utilizadas por <emphasis role="strong">tcpserver</emphasis> para aceitar ou rejeitar conex&#xF5;es TCP em um arquivo <emphasis>cdb</emphasis>.</para>
      <para>tcprules pode ser utilizado enquanto <emphasis role="strong">tcpserver </emphasis>estiver rodando. Isto garante que o arquivo <emphasis>cdb</emphasis> ser&#xE1; atualizado atomicamente.</para>
      <para>tcprules compila as regras primeiro em <emphasis>tmp</emphasis> e somente depois move <emphasis>tmp</emphasis> para <emphasis>cdb</emphasis>. Se <emphasis>tmp</emphasis> existir, ser&#xE1; destru&#xED;do. tcprules precisa ter permiss&#xE3;o de escrita nos diret&#xF3;rios que cont&#xE9;m <emphasis>tmp</emphasis> e <emphasis>cdb</emphasis>; <emphasis>tmp </emphasis>e <emphasis>cdb</emphasis> precisam estar localizados no mesmo sistema de arquivos.</para>
      <para>Caso ocorra um problema na grava&#xE7;&#xE3;o do arquivo <emphasis>tmp</emphasis>, tcprules solta uma mensagem de erro e n&#xE3;o tenta mover <emphasis>tmp</emphasis><emphasis> </emphasis>para <emphasis>cdb</emphasis>, preservando o conte&#xFA;do anterior do arquivo inalterado.</para>
      <para>O bin&#xE1;rio <emphasis>cdb</emphasis> &#xE9; port&#xE1;vel entre computadores diferentes.</para>
      <para><emphasis role="strong">Formato das regras</emphasis></para>
      <para>Cada regra deve estar em uma &#xFA;nica linha, e linhas que iniciam com &#x201C;#&#x201D; (coment&#xE1;rios) s&#xE3;o ignoradas.</para>
      <para>Cada regra deve possuir um <emphasis role="strong">endere&#xE7;o</emphasis>, seguido de &#x201C;<emphasis role="strong">:</emphasis>&#x201C; (dois pontos) e uma <emphasis role="strong">lista de instru&#xE7;&#xF5;es</emphasis> sem espa&#xE7;os extra. Quando <emphasis role="strong">tcpserver</emphasis> receber uma conex&#xE3;o a partir de <emphasis role="strong">endere&#xE7;o</emphasis>, seguir&#xE1; as <emphasis role="strong">instru&#xE7;&#xF5;es</emphasis> compiladas no arquivo <emphasis>cdb</emphasis>.</para>
      <para><emphasis role="strong">Endere&#xE7;os</emphasis></para>
      <para>tcpserver procura por regras com v&#xE1;rios endere&#xE7;os:</para>
      <orderedlist continuation="restarts" numeration="arabic">
        <listitem>
          <para><emphasis role="strong">$TCPREMOTEINFO</emphasis>@<emphasis role="strong">$TCPREMOTEIP</emphasis>, se <emphasis role="strong">$TCPREMOTEINFO</emphasis> estiver setado;</para>
        </listitem>
        <listitem>
          <para><emphasis role="strong">$TCPREMOTEINFO</emphasis>@=<emphasis role="strong">$TCPREMOTEHOST</emphasis>, se <emphasis role="strong">$TCPREMOTEINFO</emphasis> e <emphasis role="strong">$TCPREMOTEHOST</emphasis> estiverem setados;</para>
        </listitem>
        <listitem>
          <para><emphasis role="strong">$TCPREMOTEIP</emphasis>;</para>
        </listitem>
        <listitem>
          <para><emphasis role="strong">=$TCPREMOTEHOST</emphasis>, se <emphasis role="strong">$TCPREMOTEHOST</emphasis> estiver setado;</para>
        </listitem>
        <listitem>
          <para>pequenos prefixos de <emphasis role="strong">$TCPREMOTEIP</emphasis><emphasis> </emphasis>finalizados com um &#x201C;.&#x201D; (ponto);</para>
        </listitem>
        <listitem>
          <para>pequenos sulfixos de <emphasis role="strong">$TCPREMOTEHOST</emphasis> iniciados com um &#x201C;.&#x201D; (ponto) precedido por &#x201C;=&#x201D; (igualdade), se <emphasis role="strong">$TCPREMOTEHOST</emphasis> estiver setado;</para>
        </listitem>
        <listitem>
          <para>=, se <emphasis role="strong">$TCPREMOTEHOST</emphasis> estiver setado;</para>
        </listitem>
        <listitem>
          <para>uma string vazia;</para>
        </listitem>
      </orderedlist>
      <para>tcpserver utilizar&#xE1; a primeira regra que encontrar. &#xC9; poss&#xED;vel utilizar a op&#xE7;&#xE3;o &#x201C;<emphasis role="strong">-p</emphasis>&#x201D; se desejar que tcpserver tamb&#xE9;m procure pela vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEHOST</emphasis>.</para>
      <para>Exemplos de regras:</para>
      <para>
        <command>joao@127.0.0.1:A</command>
      </para>
      <para>
        <command>18.23.0.32:B</command>
      </para>
      <para>
        <command>:C</command>
      </para>
      <para>
        <command>127.:D</command>
      </para>
      <para>Se <emphasis role="strong">$TCPREMOTEIP</emphasis> for <emphasis role="strong">10.192.243.70</emphasis>, <emphasis role="strong">tcpserver</emphasis> ir&#xE1; seguir as istru&#xE7;&#xF5;es de <emphasis role="strong">C</emphasis>.</para>
      <para>Se <emphasis role="strong">$TCPREMOTEIP</emphasis> for <emphasis role="strong">18.23.0.32</emphasis>, <emphasis role="strong">tcpserver</emphasis> ir&#xE1; seguir as instru&#xE7;&#xF5;es de <emphasis role="strong">B</emphasis>.</para>
      <para>Se <emphasis role="strong">$TCPREMOTEIP</emphasis> for <emphasis role="strong">127.0.0.1</emphasis> e <emphasis role="strong">$TCPREMOTEINFO</emphasis> for <emphasis role="strong">telles</emphasis>, <emphasis role="strong">tcpserver</emphasis> ir&#xE1; seguir as instru&#xE7;&#xF5;es de <emphasis role="strong">D</emphasis>. </para>
      <para>Se <emphasis role="strong">$TCPREMOTEIP</emphasis> for <emphasis role="strong">127.0.0.1</emphasis> e <emphasis role="strong">$TCPREMOTEINFO</emphasis> for <emphasis role="strong">joao</emphasis>, <emphasis role="strong">tcpserver</emphasis> ir&#xE1; seguir as instru&#xE7;&#xF5;es de <emphasis role="strong">A</emphasis>.</para>
      <para>&#xC9; poss&#xED;vel utilizar <emphasis role="strong">tcprulescheck</emphasis> para checar como <emphasis role="strong">tcpserver</emphasis> ir&#xE1; interpretar as regras compiladas em <emphasis>cdb</emphasis>.</para>
      <para><emphasis role="strong">Intervalos de endere&#xE7;os</emphasis></para>
      <para>tcprules processa <emphasis role="strong">1.2.3.37-53:ins</emphasis> como uma abrevia&#xE7;&#xE3;o de regras do tipo <emphasis role="strong">1.2.3.37:ins</emphasis>, <emphasis role="strong">1.2.3.38:ins&#xB8;</emphasis> <emphasis role="strong">1.2.3.39:ins</emphasis> e assim por diante at&#xE9; <emphasis role="strong">1.2.3.53:ins</emphasis>. Similarmente, <emphasis role="strong">10.2-3.:ins</emphasis> &#xE9; uma abrevia&#xE7;&#xE3;o de <emphasis role="strong">10.2.:ins</emphasis> e <emphasis role="strong">10.3.:ins</emphasis>.</para>
      <para><emphasis role="strong">Instru&#xE7;&#xF5;es</emphasis></para>
      <para>As instru&#xE7;&#xF5;es de uma regra devem iniciar com <emphasis role="strong">allow</emphasis> ou <emphasis role="strong">deny</emphasis>. <emphasis role="strong">deny </emphasis>informa a <emphasis role="strong">tcpserver</emphasis> para rejeitar a conex&#xE3;o sem executar nenhum programa; <emphasis role="strong">allow</emphasis> funciona de forma totalmente oposta.</para>
      <para>Ex:</para>
      <para>
        <command>telles@127.0.0.1:allow</command>
      </para>
      <para>
        <command>10.172.9.70:allow,RELAYCLIENT=&#x201D;@domain.org&#x201D;</command>
      </para>
      <para>
        <command>:deny</command>
      </para>
      <para>Se a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEINFO</emphasis> for <emphasis role="strong">telles</emphasis> e <emphasis role="strong">$TCPREMOTEIP</emphasis> for <emphasis role="strong">127.0.0.1</emphasis><emphasis>,</emphasis><emphasis role="strong"> tcpserver</emphasis> aceitar&#xE1; a conex&#xE3;o.</para>
      <para>Se a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEIP</emphasis> for <emphasis role="strong">10.172.9.70</emphasis>, <emphasis role="strong">tcpserver</emphasis> aceitar&#xE1; a conex&#xE3;o e setar&#xE1; a vari&#xE1;vel de ambiente <emphasis role="strong">$RELAYCLIENT</emphasis> com o conte&#xFA;do &#x201C;<emphasis role="strong">@domain.org&#x201D;.</emphasis></para>
      <para>Se nenhuma das regras anteriores tomou uma a&#xE7;&#xE3;o (allow ou deny) com a conex&#xE3;o, a &#xFA;ltima regra ir&#xE1; negar a conex&#xE3;o.</para>
      <para>As &#x201C;&#x201D; (aspas) podem ser substitu&#xED;das por qualquer caractere repetido.</para>
      <para>Ex:</para>
      <para>
        <command>10.172.9.70:allow,RELAYCLIENT=/@domain.org/</command>
      </para>
      <para>Qualquer n&#xFA;mero de vari&#xE1;veis pode ser utilizado, desde que estejam separadas por &#x201C;,&#x201D; (v&#xED;rgula).</para>
      <para>Ex:</para>
      <para>
        <command>10.172.9.70:allow,RELAYCLIENT=&#x201D;@domain.org&#x201D;,RBLSMTPD=&#x201D;&#x201D;,TCPLOCALHOST=/magneto.nosp.am/</command>
      </para>
    </section>
    <section>
      <title>tcprulescheck</title>
      <para>
        <command>tcprulescheck </command>
        <emphasis>cdb</emphasis>
      </para>
      <para>Checa qual a&#xE7;&#xE3;o ser&#xE1; tomada por <emphasis role="strong">tcpserver,</emphasis> baseado no conte&#xFA;do de <emphasis>cdb</emphasis> e nas vari&#xE1;veis de ambiente setadas.</para>
      <para>Imaginando que o conte&#xFA;do do arquivo <emphasis>cdb </emphasis>seja:</para>
      <para>
        <command>:deny</command>
      </para>
      <para>
        <command>telles@10.7.8.9:allow</command>
      </para>
      <para>
        <command>192.168.0.10:allow,ALLOWED=&#x201D;Yes&#x201D;</command>
      </para>
      <para>Ex: </para>
      <para>
        <command>$ export TCPREMOTEINFO=&#x201D;telles&#x201D;</command>
      </para>
      <para>
        <command>$ tcprulescheck </command>
        <emphasis>cdb</emphasis>
        <command> </command>
      </para>
      <para>
        <command>rule :</command>
      </para>
      <para>
        <command>deny connection</command>
      </para>
      <para>
        <command>$ export TCPREMOTEIP="10.7.8.9"</command>
      </para>
      <para>
        <command>$ tcprulescheck </command>
        <emphasis>cdb</emphasis>
        <command> </command>
      </para>
      <para>
        <command>rule telles@10.7.8.9:</command>
      </para>
      <para>
        <command>allow connection</command>
      </para>
      <para>
        <command>$ export TCPREMOTEIP=&#x201D;192.168.0.10"</command>
      </para>
      <para>
        <command>$ tcprulescheck </command>
        <emphasis>cdb</emphasis>
        <command> </command>
      </para>
      <para>
        <command>rule 192.168.0.10:</command>
      </para>
      <para>
        <command>set environment variable ALLOWED=Yes</command>
      </para>
      <para>
        <command>allow connection</command>
      </para>
    </section>
    <section>
      <title>tcpserver</title>
      <para>
        <command>tcpserver</command>
        <emphasis> </emphasis>
        <command>[ -1UXpPhHrRoOdDqQv ] [ -c </command>
        <emphasis>n</emphasis>
        <command> ] [ -x </command>
        <emphasis>regras.cdb</emphasis>
        <command> ] [ -B </command>
        <emphasis>banner</emphasis>
        <command> ] [ -g </command>
        <emphasis>gid</emphasis>
        <command> ] [ -u </command>
        <emphasis>uid</emphasis>
        <command> ] [ -b </command>
        <emphasis>n</emphasis>
        <command> ] [ -l </command>
        <emphasis>nomelocal</emphasis>
        <command> ] [ -t </command>
        <emphasis>n</emphasis>
        <command> ] </command>
        <emphasis>host porta programa</emphasis>
      </para>
      <para>Aceita conex&#xF5;es TCP de entrada.</para>
      <para>tcpserver aguarda por conex&#xF5;es TCP de clientes. Para cada conex&#xE3;o, executa <emphasis>programa</emphasis> recebendo informa&#xE7;&#xF5;es de rede via descritor 0 e enviando via descriptor 1. Por padr&#xE3;o, cria uma s&#xE9;rie de vari&#xE1;veis TCP.</para>
      <para>tcpserver ser&#xE1; finalizado se receber um sinal kill do tipo <emphasis role="strong">SIGTERM</emphasis>.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="2.4cm"/>
          <colspec colname="c2" colwidth="14.6cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xF5;es</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-q</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o imprime mensagens de erro na tela.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-Q</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Imprime mensagens de erro na tela (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-v</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Imprime mensagens de erro e de status na tela.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-c n</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xFA;mero m&#xE1;ximo de conex&#xF5;es simult&#xE2;neas que ser&#xE3;o aceitas. Deve ser um n&#xFA;mero positivo. (Padr&#xE3;o: 40).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-x<emphasis> </emphasis><emphasis>regras.cdb</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utiliza regras compiladas por <emphasis role="strong">tcprules</emphasis> no arquivo <emphasis>regras.cdb</emphasis> para setar vari&#xE1;veis de ambiente ou rejeitar conex&#xF5;es remotas. &#xC9; poss&#xED;vel executar <emphasis role="strong">tcprules</emphasis> para atualizar <emphasis>regras.cdb</emphasis> enquanto tcpserver estiver sendo executado.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-X</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Utilizada em conjunto com <emphasis>-x regras.cdb, </emphasis>faz com que tcpserver aceite conex&#xF5;es caso <emphasis>regras.cdb</emphasis> n&#xE3;o exista. Normalmente tcpserver rejeita conex&#xF5;es se <emphasis>regras.cdb</emphasis> n&#xE3;o existir.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-B<emphasis> </emphasis><emphasis>banner</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Imprime banner na tela assim que a conex&#xE3;o &#xE9; efetuada. tcpserver mostra o banner antes de verificar as vari&#xE1;veis de ambiente <emphasis role="strong">$TCPREMOTEHOST</emphasis> e <emphasis role="strong">$TCPREMOTEINFO</emphasis> e antes de checar regras.cdb. Este recurso pode ser utilizado para reduzir a lat&#xEA;ncia em protocolos aonde o cliente aguarda um cumprimento do servidor.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-g<emphasis> </emphasis><emphasis>gid</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Altera o id de grupo do programa para <emphasis>gid</emphasis> depois de se preparar para receber a conex&#xE3;o. <emphasis>gid </emphasis>precisa ser um inteiro positivo.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-u <emphasis>uid</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Altera o id de usu&#xE1;rio do programa para <emphasis>uid</emphasis> depois de se preparar para receber a conex&#xE3;o. <emphasis>uid</emphasis> precisa ser um inteiro positivo.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-U</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O mesmo que -u <emphasis role="strong">$UID</emphasis> e -g <emphasis role="strong">$GID</emphasis><emphasis>.</emphasis> Tipicamente <emphasis role="strong">$UID</emphasis> e <emphasis role="strong">$GID</emphasis> s&#xE3;o setados utilizando <emphasis role="strong">envuidgid</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-1</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Ap&#xF3;s preparar a recep&#xE7;&#xE3;o da conex&#xE3;o, imprime na tela a porta local utilizada na conex&#xE3;o.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-b <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Permite acumular aproximadamente <emphasis>n </emphasis>conex&#xF5;es TCP do tipo SYN (backlog). Em v&#xE1;rios sistemas, <emphasis>n</emphasis> &#xE9; silenciosamente limitado em 5. Em sistemas que suportam <emphasis role="strong">SYN cookies</emphasis>, o backlog &#xE9; irrelevante.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-o</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o altera op&#xE7;&#xF5;es do protocolo IP nos pacotes da conex&#xE3;o.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-O</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Deleta op&#xE7;&#xF5;es do protocolo IP nos pacotes da conex&#xE3;o (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-d</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Atrasa o envio de dados em uma fra&#xE7;&#xE3;o de segundos caso o host remoto responda lentamente (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-D</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Nunca atrasa o envio de dados. Habilita a op&#xE7;&#xE3;o <emphasis role="strong">TCP_NODELAY</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-h</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tenta obter o nome do host remoto via DNS para setar a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEHOST</emphasis> (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-H</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o tenta obter o nome do host remoto via DNS e remove a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEHOST</emphasis> caso esteja setada. Para evitar loops, utilize esta op&#xE7;&#xE3;o para servidores rodando na porta 53.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-p</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Paranoid. Depois de obter o nome do host remoto via DNS, tenta obter o endere&#xE7;o IP deste host via DNS; remove a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEHOST</emphasis> se n&#xE3;o encontrar o endere&#xE7;o IP para o nome do host ou se o endere&#xE7;o IP retornado n&#xE3;o for o endere&#xE7;o IP do cliente.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-P</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o utiliza Paranoid (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-l <emphasis>nomelocal</emphasis> </para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o tenta resolver <emphasis>nomelocal</emphasis> em DNS. Utiliza <emphasis>nomelocal</emphasis> para a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPLOCALHOST.</emphasis> Recomendado utilizar 0 (zero) como <emphasis>nomelocal.</emphasis> Para evitar loops, utilize esta op&#xE7;&#xE3;o para servidores rodando na porta 53.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-r</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Tenta obter informa&#xE7;&#xF5;es do host remoto para setar a vari&#xE1;vel de ambiente <emphasis role="strong">$TCPREMOTEINFO</emphasis> (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-R</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>N&#xE3;o tenta obter informa&#xE7;&#xF5;es do host remoto. Para evitar loops, utilize esta op&#xE7;&#xE3;o para servidores rodando na porta 53 e 113.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-t <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Desiste de obter informa&#xE7;&#xF5;es do host remoto para setar <emphasis role="strong">$TCPREMOTEINFO</emphasis> ap&#xF3;s <emphasis>n </emphasis>segundos (timeout &#x2013; Padr&#xE3;o: 26 segundos).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>host</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O endere&#xE7;o IP local do servidor ser&#xE1; obtido do nome de host <emphasis>host</emphasis>. Se for utilizado 0 (zero), tcpserver permitir&#xE1; que qualquer IP local receba conex&#xF5;es. <emphasis>host</emphasis> tamb&#xE9;m pode ser um endere&#xE7;o IP do tipo <emphasis role="strong">a.b.c.d</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>porta</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Porta TCP local a ser utilizada. Deve ser um n&#xFA;mero ou um nome listado no arquivo <emphasis role="strong">/etc/services</emphasis>. Se for 0 (zero), tcpserver escolhe uma porta TCP livre.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>programa</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Programa a ser executado em caso de sucesso da conex&#xE3;o TCP.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
    <section>
      <title>who@</title>
      <para>
        <command>who@ </command>
        <emphasis>host-remoto</emphasis>
      </para>
      <para>Imprime a lista de usu&#xE1;rios conectados em <emphasis>host-remoto.</emphasis></para>
      <para>Conecta em <emphasis>host-remoto</emphasis> na porta 11/TCP (systat) e imprime uma lista de usu&#xE1;rios que est&#xE3;o conectados atualmente no sistema.</para>
      <para>Remove o <emphasis role="strong">CR</emphasis> (carriage return - \015) da entrada recebida e converte caracteres que n&#xE3;o podem ser impressos na tela em um formato vis&#xED;vel.</para>
      <para>Se <emphasis>host-remoto</emphasis><emphasis> </emphasis>n&#xE3;o for informado, who@ ir&#xE1; conectar em <emphasis role="strong">localhost</emphasis>.</para>
      <para>Alguns computadores respondem na porta 11/TCP com uma lista de usu&#xE1;rios atualmente conectados.</para>
      <para>Ex:</para>
      <para>
        <command># tcpserver -RHl0 0 11 /usr/bin/who</command>
      </para>
      <para>
        <command>$ who@</command>
      </para>
      <para>
        <command>telles pts/1 Aug 6 16:29</command>
      </para>
      <para>
        <command>gilson pts/2 Aug 6 16:29</command>
      </para>
      <para>
        <command>cleri pts/3 Aug 6 16:29</command>
      </para>
      <para>
        <command>ana pts/4 Aug 6 16:29</command>
      </para>
    </section>
  </section>
  <section>
    <title>Vari&#xE1;veis de ambiente utilizadas por tcp-env, tcpserver e tcpclient</title>
    <informaltable>
      <tgroup cols="2">
        <colspec colname="c1" colwidth="3.9cm"/>
        <colspec colname="c2" colwidth="13.1cm"/>
        <thead>
          <row>
            <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>Op&#xE7;&#xF5;es</para>
            </entry>
            <entry align="center">
<?border 0.002cm solid #000000?>
              <para>Descri&#xE7;&#xE3;o</para>
            </entry>
          </row>
        </thead>
        <tbody>
          <row>
            <entry valign="middle" align="left">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>$PROTO</para>
            </entry>
            <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>A string TCP.</para>
            </entry>
          </row>
          <row>
            <entry valign="middle" align="left">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>$TCPLOCALHOST</para>
            </entry>
            <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>O dom&#xED;nio do host local com letras mai&#xFA;sculas convertidas em min&#xFA;sculas. Caso nenhum dom&#xED;nio esteja dispon&#xED;vel para o IP local, <emphasis role="strong">$TCPLOCALHOST</emphasis> n&#xE3;o ser&#xE1; setado.</para>
            </entry>
          </row>
          <row>
            <entry valign="middle" align="left">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>$TCPLOCALIP</para>
            </entry>
            <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>O IP local do host no formato <emphasis role="strong">a.b.c.d</emphasis>.</para>
            </entry>
          </row>
          <row>
            <entry valign="middle" align="left">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>$TCPLOCALPORT</para>
            </entry>
            <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>A porta TCP do host local no formato decimal.</para>
            </entry>
          </row>
          <row>
            <entry valign="middle" align="left">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>$TCPREMOTEHOST</para>
            </entry>
            <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>O dom&#xED;nio do host remoto com letras mai&#xFA;sculas convertidas em min&#xFA;sculas. Caso nenhum dom&#xED;nio esteja dispon&#xED;vel para o IP remoto, <emphasis role="strong">$TCPREMOTEHOST</emphasis> n&#xE3;o ser&#xE1; setado.</para>
            </entry>
          </row>
          <row>
            <entry valign="middle" align="left">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>$TCPREMOTEINFO</para>
            </entry>
            <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>Uma string espec&#xED;fica da conex&#xE3;o, talvez o nome do usu&#xE1;rio fornecido pelo host remoto via 931/1413/IDENT/TAP. Se o host remoto n&#xE3;o fornecer informa&#xE7;&#xF5;es sobre a conex&#xE3;o, <emphasis role="strong">$TCPREMOTEINFO</emphasis> n&#xE3;o ser&#xE1; setado.</para>
            </entry>
          </row>
          <row>
            <entry valign="middle" align="left">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>$TCPREMOTEIP</para>
            </entry>
            <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>O IP do host remoto.</para>
            </entry>
          </row>
          <row>
            <entry valign="middle" align="left">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>$TCPREMOTEPORT</para>
            </entry>
            <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
              <para>A porta TCP do host remoto.</para>
            </entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>
  </section>
  <section>
    <title>Programas do pacote daemontools</title>
    <para>daemontools &#xE9; um conjunto de ferramentas utilizadas para o gerenciamento de servi&#xE7;os e programas em sistemas UNIX e Unix-like.</para>
    <section>
      <title>envdir</title>
      <para>
        <command>envdir </command>
        <emphasis>diret&#xF3;rio programa</emphasis>
      </para>
      <para>Cria vari&#xE1;veis de ambiente baseado em arquivos contidos em <emphasis>diret&#xF3;rio</emphasis>, e executa <emphasis>programa</emphasis>.</para>
      <para>envdir l&#xEA; todos os arquivos contidos em diret&#xF3;rio e seta vari&#xE1;veis de ambiente aonde, <emphasis role="strong">NOME_DO_ARQUIVO=SEU_CONTE&#xDA;DO</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command>$ cat script.sh </command>
      </para>
      <para>
        <command>#!/bin/bash</command>
      </para>
      <para>
        <command>echo "Guia de $TIPO sobre $ASSUNTO."</command>
      </para>
      <para>
        <command>$ cat variaveis/TIPO </command>
      </para>
      <para>
        <command>consulta</command>
      </para>
      <para>
        <command>$ cat variaveis/ASSUNTO </command>
      </para>
      <para>
        <command>qmail</command>
      </para>
      <para>
        <command>$ envdir ./variaveis ./script.sh </command>
      </para>
      <para>
        <command>Guia de consulta sobre qmail.</command>
      </para>
      <para>Se <emphasis role="strong">NOME_DO_ARQUIVO</emphasis> j&#xE1; estiver setado como vari&#xE1;vel de ambiente e o arquivo n&#xE3;o estiver vazio, envdir remove a vari&#xE1;vel e seta novamente com o conte&#xFA;do de <emphasis role="strong">NOME_DO_ARQUIVO</emphasis>.</para>
      <para>O nome do arquivo n&#xE3;o pode conter o sinal &#x201C;<emphasis role="strong">=</emphasis>&#x201D; (igualdade); espa&#xE7;os em branco e TABS s&#xE3;o removidos do final de linha do arquivo.</para>
      <para>Se <emphasis role="strong">NOME_DO_ARQUIVO</emphasis> j&#xE1; estiver setado como vari&#xE1;vel de ambiente e o arquivo estiver vazio, envdir<emphasis> </emphasis>remove a vari&#xE1;vel e n&#xE3;o seta novamente.</para>
      <para>Caracteres nulos s&#xE3;o substitu&#xED;dos por <emphasis role="strong">new lines</emphasis> em vari&#xE1;veis de ambiente.</para>
      <para>Se n&#xE3;o conseguir ler o conte&#xFA;do de <emphasis>diret&#xF3;rio</emphasis>,<emphasis> </emphasis>n&#xE3;o puder executar <emphasis>programa</emphasis> ou se ocorrerem problemas de mem&#xF3;ria que o impessam de interagir com as vari&#xE1;veis de ambiente, envdir sai com c&#xF3;digo de erro 111.</para>
      <para>Se n&#xE3;o ocorrer nenhum erro, envdir sai com o mesmo c&#xF3;digo de erro de <emphasis>programa</emphasis>.</para>
    </section>
    <section>
      <title>envuidgid</title>
      <para>
        <command>envuidgid </command>
        <emphasis>usuario programa</emphasis>
      </para>
      <para>Executa <emphasis>programa</emphasis> utilizando as vari&#xE1;veis de ambiente <emphasis role="strong">$UID</emphasis> e <emphasis role="strong">$GID</emphasis> da conta <emphasis>usuario.</emphasis></para>
      <para>Se n&#xE3;o encontrar a conta <emphasis>usuario</emphasis> no sistema,<emphasis> </emphasis>n&#xE3;o puder executar <emphasis>programa</emphasis> ou se ocorrerem problemas de mem&#xF3;ria que o impessam de interagir com as vari&#xE1;veis de ambiente, envuidgid sai com c&#xF3;digo de erro 111.</para>
      <para>Se n&#xE3;o ocorrer nenhum erro, envuidgid sai com o mesmo c&#xF3;digo de erro de <emphasis>programa</emphasis>.</para>
    </section>
    <section>
      <title>fghack</title>
      <para>
        <command>fghack </command>
        <emphasis>programa</emphasis>
      </para>
      <para>For&#xE7;a <emphasis>programa </emphasis>a rodar em primeiro plano (foreground).</para>
      <para>Alguns programas quando executados, s&#xE3;o automaticamente jogados para segundo plano (background); fghack pode for&#xE7;ar tais programas a continuarem em primeiro plano.</para>
    </section>
    <section>
      <title>multilog</title>
      <para>
        <command>multilog [ te ] [ n</command>
        <emphasis>num</emphasis>
        <command> ] [ s</command>
        <emphasis>size</emphasis>
        <command> ] [ +-]</command>
        <emphasis>express&#xE3;o</emphasis>
        <command> [ =</command>
        <emphasis>arquivo</emphasis>
        <command> ] [ !</command>
        <emphasis>processador </emphasis>
        <command>] </command>
        <emphasis>diret&#xF3;rio</emphasis>
      </para>
      <para>Recebe uma sequ&#xEA;ncia de linhas via <emphasis role="strong">STDIN</emphasis> (entrada padr&#xE3;o) e faz log ou n&#xE3;o de entradas que contenham <emphasis>express&#xE3;o </emphasis>no arquivo <emphasis role="strong">&#x201C;current&#x201D; </emphasis>dentro de <emphasis>diret&#xF3;rio</emphasis>. </para>
      <para>Caso <emphasis>express&#xE3;o </emphasis>n&#xE3;o seja informada, todas as entradas ser&#xE3;o logadas.</para>
      <para>multilog sai com c&#xF3;digo de erro 0 (zero) quando encontra o final de <emphasis role="strong">STDIN</emphasis>. Se <emphasis role="strong">STDIN</emphasis> possuir um final de linha parcial, multilog adiciona um <emphasis role="strong">new line</emphasis> no final da linha.</para>
      <para>multilog escreve uma mensagem de erro em <emphasis role="strong">STDERR </emphasis>(sa&#xED;da de erro padr&#xE3;o) e sai com c&#xF3;digo de erro 111, sem ler nenhuma entrada, se ocorrerem problemas de mem&#xF3;ria ou se outro processo multilog estiver escrevendo em um mesmo arquivo de log rotacionado por ele.</para>
      <para>Quando executado no <emphasis role="strong">Shell</emphasis>, caracteres especiais devem ser escapados para n&#xE3;o serem interpretados.</para>
      <para>Se multilog n&#xE3;o conseguir escrever em disco ap&#xF3;s come&#xE7;ar a ler informa&#xE7;&#xF5;es de <emphasis role="strong">STDIN</emphasis>, escreve uma mensagem de erro em <emphasis role="strong">STDERR</emphasis>, pausa e tenta novamente sem perder nenhuma informa&#xE7;&#xE3;o. </para>
      <para><emphasis role="strong">NOTA</emphasis>: Isso pode tornar indispon&#xED;vel o programa que est&#xE1; enviando informa&#xE7;&#xF5;es para multilog.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="2.4cm"/>
          <colspec colname="c2" colwidth="14.6cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xF5;es</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>t</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Insere no in&#xED;cio de cada linha de entrada, um timestamp preciso.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>n<emphasis>num</emphasis></para>
              </entry>
              <entry align="justify">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para><emphasis>num </emphasis>ser&#xE1; o n&#xFA;mero m&#xE1;ximo de arquivos de log rotacionados que ser&#xE3;o mantidos em <emphasis>diret&#xF3;rio </emphasis>antes de iniciar a remo&#xE7;&#xE3;o do arquivo de log mais antigo. </para>
                <para>O rotacionamento de logs pode ocorrer quando <emphasis role="strong">current</emphasis> atingir o tamanho m&#xE1;ximo de 99999 bytes ou quando o processo multilog anterior, recebeu um sinal <emphasis role="strong">KILL</emphasis> inesperado (diferente de <emphasis role="strong">TERM</emphasis>). O valor padr&#xE3;o &#xE9; 10.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>s<emphasis>size</emphasis></para>
              </entry>
              <entry align="justify">
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para><emphasis>size </emphasis>&#xE9; o tamanho m&#xE1;ximo do arquivo de log em bytes. Ap&#xF3;s alcan&#xE7;ar <emphasis>size</emphasis>, multilog far&#xE1; o rotacionamento do arquivo. Seu novo nome ter&#xE1; o timestamp preciso do momento. </para>
                <para><emphasis>size</emphasis> pode variar entre 4096 e 16777215 bytes. O valor padr&#xE3;o &#xE9; 99999 bytes.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>e</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Faz multilog imprimir os primeiros 200 bytes de entrada na sa&#xED;da de erro padr&#xE3;o (stderr).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>+|-<emphasis>express&#xE3;o</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>A&#xE7;&#xE3;o a ser tomada quando <emphasis>express&#xE3;o</emphasis> for encontrada. Veja <emphasis role="strong">Exemplo 4</emphasis>.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>=<emphasis>arquivo</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Loga &#xFA;ltima entrada encontrada por express&#xE3;o mais 1000 bytes em arquivo.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>!<emphasis>processador</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Programa/A&#xE7;&#xE3;o a ser executado(a) quando multilog efetuar a&#xE7;&#xF5;es dentro de <emphasis>diret&#xF3;rio </emphasis>(Ex: rotacionamento de logs).</para>
                <para><emphasis>processador </emphasis>pode ser um programa contendo instru&#xE7;&#xF5;es a serem executadas na filtragem de <emphasis role="strong">current</emphasis> para ser armazenado em outro arquivo.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para>Exemplo 1:</para>
      <para>
        <command>$ while : ; do ( cat /tmp/input; sleep 5 ) ; done 2&gt;&amp;1 | multilog /logs &amp;</command>
      </para>
      <para>
        <command>[1] 2248</command>
      </para>
      <para>
        <command>$ ls /logs</command>
      </para>
      <para>
        <command>current lock state</command>
      </para>
      <para>
        <command>$ cat /logs/current </command>
      </para>
      <para>
        <command>cat: /tmp/input: No such file or directory</command>
      </para>
      <para>
        <command>$ kill 2248</command>
      </para>
      <para>Se multilog receber um sinal kill do tipo <emphasis role="strong">TERM</emphasis>, somente terminar&#xE1; ap&#xF3;s identificar o final de linha da linha que estava sendo precessada, garantindo assim, que nenhuma informa&#xE7;&#xE3;o seja perdida.</para>
      <para>Al&#xE9;m do arquivo <emphasis role="strong">current</emphasis><emphasis>, </emphasis>multilog criar&#xE1; os arquivos <emphasis role="strong">lock</emphasis><emphasis> </emphasis>e<emphasis> </emphasis><emphasis role="strong">state</emphasis><emphasis> </emphasis>dentro de <emphasis>diret&#xF3;rio, </emphasis>que ser&#xE3;o utilizados para evitar que outro processo multilog escreva em <emphasis role="strong">current</emphasis><emphasis>.</emphasis></para>
      <para>Exemplo 2:</para>
      <para>
        <command>$ while : ; do ( cat /tmp/input; sleep 5 ) ; done 2&gt;&amp;1 | multilog t /logs &amp;</command>
      </para>
      <para>
        <command>[1] 2321</command>
      </para>
      <para>
        <command>$ cat /logs/current </command>
      </para>
      <para>
        <command>cat: /tmp/input: No such file or directory</command>
      </para>
      <para>
        <command>@40000000404a54df0749da34 cat: /tmp/input: No such file or directory</command>
      </para>
      <para>
        <command>$ kill 2321</command>
      </para>
      <para>Com a utiliza&#xE7;&#xE3;o da op&#xE7;&#xE3;o &#x201C;<emphasis role="strong">t</emphasis>&#x201D;, multilog insere um timestamp preciso no in&#xED;cio de cada linha do arquivo de log. <emphasis role="strong">tai64nlocal</emphasis> converte este formato de timestamp para um formato leg&#xED;vel por humanos.</para>
      <para>Exemplo 3:</para>
      <para>
        <command>$ while : ; do ( cat /tmp/input; sleep 5 ) ; done 2&gt;&amp;1 | multilog t n10 s1048576 /logs &amp;</command>
      </para>
      <para>multilog manter&#xE1; 10 (dez) arquivos de log em <emphasis>diret&#xF3;rio</emphasis>, cada um com aproximadamente 1 MB de tamanho.</para>
      <para>Ap&#xF3;s atingir 10 arquivos, multilog ir&#xE1; apagar o arquivo de timestamp mais antigo no pr&#xF3;ximo rotacionamento.</para>
      <para>Exemplo 4:</para>
      <para>
        <command>$ while : ; do ( cat /tmp/input; sleep 5 ) ; done 2&gt;&amp;1 | multilog t '-*' '+*STATS:*' /logs &amp;</command>
      </para>
      <para>A express&#xE3;o &#x2018;-*&#x2019; instrui multilog a n&#xE3;o selecionar nenhuma linha, ao mesmo tempo em que utiliza &#x2018;+*STATS:*&#x2019; para instruir multilog a selecionar entradas que contenham a express&#xE3;o &#x201C;<emphasis role="strong">STATS:</emphasis>&#x201D; em qualquer parte da linha.</para>
      <para>Desta forma, multilog vai logar em <emphasis role="strong">current</emphasis><emphasis> </emphasis>apenas entradas que contenham a express&#xE3;o &#x201C;<emphasis role="strong">STATS:</emphasis>&#x201D;.</para>
      <para>Exemplo 5:</para>
      <para>
        <command>$ cat /tmp/script.sh</command>
      </para>
      <para>
        <command>#!/bin/bash</command>
      </para>
      <para>
        <command>/usr/bin/tee -a ./acumulado.log</command>
      </para>
      <para>
        <command>$ while : ; do ( cat /tmp/input; sleep 5 ) ; done 2&gt;&amp;1 | multilog t \!/tmp/script.sh /logs &amp;</command>
      </para>
      <para>multilog passar&#xE1; todo o conte&#xFA;do do arquivo <emphasis role="strong">current</emphasis> pelo programa <emphasis role="strong">/tmp/script.sh</emphasis> antes de executar o rotacionamento. Isso far&#xE1; <emphasis role="strong">/tmp/script.sh</emphasis><emphasis> </emphasis>gerar/incrementar o arquivo <emphasis role="strong">acumulado.log</emphasis> com o conte&#xFA;do de todos os arquivos rotacionados.</para>
      <para>O nome dos arquivos de log rotacionados por multilog, iniciam com um sinal de &#x201C;<emphasis role="strong">@</emphasis>&#x201D; seguidos de um timestamp preciso, finalizando com uma das seguintes extens&#xF5;es:</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="2cm"/>
          <colspec colname="c2" colwidth="15cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Extens&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>.s</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O arquivo foi processado completamente e escrito de forma segura no disco.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>.u</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O arquivo n&#xE3;o foi processado completamente durante uma interrup&#xE7;&#xE3;o inesperada, e possivelmente foi truncado no disco.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <para/>
      <para>Quando multilog est&#xE1; rodando, seta a permiss&#xE3;o de <emphasis role="strong">current</emphasis> para <emphasis role="strong">644</emphasis>; quando &#xE9; finalizado de forma segura, seta a permiss&#xE3;o de <emphasis role="strong">current</emphasis> para <emphasis role="strong">744</emphasis> restaurando a permiss&#xE3;o para <emphasis role="strong">644</emphasis> quando for executado novamente.</para>
    </section>
    <section>
      <title>pgrphack</title>
      <para>
        <command>pgrphack </command>
        <emphasis>programa</emphasis>
      </para>
      <para>Executa <emphasis>programa </emphasis>em um novo grupo de processos.</para>
    </section>
    <section>
      <title>readproctitle</title>
      <para>
        <command>readproctitle </command>
        <emphasis>L D</emphasis>
      </para>
      <para>readproctitle recebe via <emphasis role="strong">STDIN</emphasis> (entrada padr&#xE3;o) informa&#xE7;&#xF5;es de sa&#xED;da ou erros, e mant&#xEA;m um log na mem&#xF3;ria que &#xE9; rotacionado automaticamente para ser visualizado pelo comando <emphasis role="strong">ps</emphasis><emphasis>.</emphasis> readproctitle sempre mant&#xEA;m 3 (trez) pontos (...) &#xE0; esquerda de <emphasis>D</emphasis>.</para>
      <para><emphasis>L</emphasis> consiste em uma s&#xE9;rie de argumentos e <emphasis>D</emphasis> &#xE9; apenas um argumento, que deve ser no m&#xED;nimo 5 (cinco) pontos (.....).</para>
      <para>&#xC9; comumente utilizado para suprimir sa&#xED;das de erro de programas na console.</para>
      <para>A quantidade de informa&#xE7;&#xF5;es de sa&#xED;da ou de erros a ser exibida, depende do n&#xFA;mero de pontos (.) que foram utilizados em <emphasis>D, </emphasis>e ser&#xE1; sempre preservado o final da informa&#xE7;&#xE3;o.</para>
      <para>Quando uma nova linha (new line) &#xE9; encontrada, readproctitle substitue o <emphasis role="strong">new line</emphasis> por &#x201C;!&#x201D; (exclama&#xE7;&#xE3;o).</para>
      <para>A maioria das ferramentas de listagem de processos (Ex: ps) substituem &#x201C;!&#x201D; por um sinal de &#x201C;?&#x201D; (interroga&#xE7;&#xE3;o) ou um &#x201C;\n&#x201D;.</para>
      <para>readproctitle &#xE9; finalizado quando encontra o final de <emphasis role="strong">STDIN</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command>$ while : ; do ( cat /tmp/alo ; sleep 1 ) ; done 2&gt;&amp;1 | readproctitle saida/erro: .............................. &amp;</command>
      </para>
      <para>
        <command>$ ps axw | grep readproctitle </command>
      </para>
      <para>
        <command>2443 pts/1 S 0:00 readproctitle saida/erro: ... No such file or directory?</command>
      </para>
      <para>
        <command>$ echo &#x201C;Achei o arquivo&#x201D; &gt; /tmp/alo</command>
      </para>
      <para>
        <command>$ ps axw | grep readproctitle </command>
      </para>
      <para>
        <command>2443 pts/1 S 0:00 readproctitle saida/erro: ... directory?Achei o arquivo?</command>
      </para>
      <para><emphasis role="strong">NOTA:</emphasis> O limite conhecido para o n&#xFA;mero m&#xE1;ximo de pontos a serem utilizados &#xE9; de 512 (512 bytes) e pode variar conforme o sistema operacional.</para>
      <para>readproctitle est&#xE1; dispon&#xED;vel a partir da vers&#xE3;o 0.75 do pacote daemontools.</para>
    </section>
    <section>
      <title>setlock</title>
      <para>
        <command>setlock [ -nNxX ] </command>
        <emphasis>arquivo programa</emphasis>
      </para>
      <para>Executa <emphasis>programa </emphasis>utilizando uma trava de arquivo (flock) para <emphasis>arquivo.</emphasis></para>
      <para>setlock cria <emphasis>arquivo</emphasis> caso n&#xE3;o exista, e obt&#xE9;m uma trava exclusiva do arquivo. </para>
      <para>Normalmente a trava de arquivo desaparece quando <emphasis>programa</emphasis> &#xE9; finalizado.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.7cm"/>
          <colspec colname="c2" colwidth="15.3cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-n</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Se arquivo estiver travado por outro processo, setlock abandona o processo.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-N</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Se arquivo estiver travado por outro processo, setlock aguardar&#xE1; at&#xE9; que consiga obter uma nova trava para o arquivo (Padr&#xE3;o).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-x</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Se arquivo n&#xE3;o puder ser criado, aberto ou travado, setlock sai com c&#xF3;digo de erro 0 (zero).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-X</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Se arquivo n&#xE3;o puder ser criado, aberto ou travado, setlock imprime uma mensagem de erro e sai com c&#xF3;digo de erro diferente de 0 (Padr&#xE3;o).</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
    <section>
      <title>setuidgid</title>
      <para>
        <command>setuidgid </command>
        <emphasis>usuario programa</emphasis>
      </para>
      <para>Executa <emphasis>programa</emphasis> utilizando <emphasis>usuario</emphasis> como usu&#xE1;rio e grupo efetivos; remove qualquer grupo suplementar.</para>
      <para>Se n&#xE3;o encontrar a conta <emphasis>usuario</emphasis> no sistema,<emphasis> </emphasis>n&#xE3;o conseguir alterar para <emphasis>usuario </emphasis>ou o grupo de <emphasis>usuario</emphasis> e n&#xE3;o puder executar <emphasis>programa</emphasis>, setuidgid sai com c&#xF3;digo de erro 111.</para>
      <para>Se n&#xE3;o ocorrer nenhum erro, setuidgid sai com o mesmo c&#xF3;digo de erro de <emphasis>programa</emphasis>.</para>
      <para>setuidgid n&#xE3;o pode ser executado por nenhum outro usu&#xE1;rio que n&#xE3;o seja o usu&#xE1;rio <emphasis role="strong">root</emphasis>.</para>
    </section>
    <section>
      <title>softlimit</title>
      <para>
        <command>softlimit [ -mdslaopfcrt ]</command>
        <emphasis> programa</emphasis>
      </para>
      <para>Executa <emphasis>programa</emphasis> com novas limita&#xE7;&#xF5;es de recursos.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.7cm"/>
          <colspec colname="c2" colwidth="15.3cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-d <emphasis>n</emphasis><emphasis> </emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita o segmento de dados por processo para <emphasis>n </emphasis>bytes.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-s <emphasis>n</emphasis><emphasis> </emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita o segmento de pilha (stack) por processo para <emphasis>n</emphasis> bytes.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-l <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita as p&#xE1;ginas f&#xED;sicas travadas por processo para <emphasis>n</emphasis> bytes. N&#xE3;o tem efeito na maioria dos sistemas operacionais.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-a <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita o total de todos os segmentos por processo para <emphasis>n </emphasis>bytes. N&#xE3;o tem efeito na maioria dos sistemas operacionais.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-m <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>O mesmo que <emphasis role="strong">-d</emphasis> <emphasis>n</emphasis> <emphasis role="strong">-s</emphasis> <emphasis>n</emphasis> <emphasis role="strong">-l </emphasis><emphasis>n</emphasis> <emphasis role="strong">-a </emphasis><emphasis>n.</emphasis></para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-o <emphasis>n</emphasis> </para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita o n&#xFA;mero de file descriptors por processo para <emphasis>n. </emphasis>N&#xE3;o tem efeito na maioria dos sistemas operacionais.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-p<emphasis> </emphasis><emphasis>n</emphasis><emphasis> </emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita o n&#xFA;mero de processos por usu&#xE1;rio para <emphasis>n.</emphasis></para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-f <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita o tamanho do arquivo de sa&#xED;da para <emphasis>n </emphasis>bytes.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-c<emphasis> </emphasis><emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita o tamanho de arquivos do tipo <emphasis role="strong">core</emphasis> para <emphasis>n </emphasis>bytes.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-r <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita o RSS para <emphasis>n</emphasis> bytes. Este limite n&#xE3;o &#xE9; for&#xE7;ado a menos que a mem&#xF3;ria f&#xED;sica esteja cheia.</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-t <emphasis>n</emphasis></para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Limita o tempo de CPU em <emphasis>n</emphasis> segundos. Este limite n&#xE3;o &#xE9; for&#xE7;ado a menos que o processo receba um sinal kil do tipo <emphasis role="strong">SIGXCPU</emphasis> ap&#xF3;s <emphasis>n</emphasis> segundos.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
    <section>
      <title>supervise</title>
      <para>
        <command>supervise </command>
        <emphasis>servi&#xE7;o</emphasis>
      </para>
      <para>Inicia e monitora um servi&#xE7;o. Vai para o diret&#xF3;rio <emphasis>servi&#xE7;o</emphasis> e inicia o script <emphasis>.</emphasis><emphasis role="strong">/run</emphasis><emphasis>.</emphasis> </para>
      <para>Caso <emphasis role="strong">./run</emphasis><emphasis> </emphasis>seja finalizado, supervise o inicia novamente. supervise pausa por 1 (hum) segundo ap&#xF3;s iniciar <emphasis role="strong">./run</emphasis>, evitando assim um poss&#xED;vel loop na tentativa de iniciar <emphasis role="strong">./run </emphasis>por v&#xE1;rias vezes seguidas.</para>
      <para>Se o arquivo <emphasis>servi&#xE7;o</emphasis><emphasis role="strong">/down</emphasis> existir, supervise n&#xE3;o inicia <emphasis role="strong">./run</emphasis><emphasis> </emphasis>imediatamente. &#xC9; poss&#xED;vel utilizar <emphasis role="strong">svc</emphasis> para iniciar <emphasis role="strong">./run</emphasis> e tamb&#xE9;m para enviar outros comandos a supervise.</para>
      <para>supervise mant&#xE9;m informa&#xE7;&#xF5;es de status em formato bin&#xE1;rio dentro do arquivo <emphasis>servi&#xE7;o</emphasis><emphasis role="strong">/supervise</emphasis>, o qual supervise precisa ter permiss&#xE3;o de escrita. Esta informa&#xE7;&#xE3;o de status pode ser lida por <emphasis role="strong">svstat</emphasis>.</para>
      <para>supervise &#xE9; finalizado imediatamente ao ser iniciado, se n&#xE3;o encontrar os arquivos de que necessita dentro do diret&#xF3;rio <emphasis>servi&#xE7;o</emphasis><emphasis role="strong"> </emphasis>ou se existir um outro processo supervise rodando no diret&#xF3;rio <emphasis>servi&#xE7;o</emphasis>.</para>
      <para>Uma vez que supervise for iniciado com sucesso, n&#xE3;o finaliza enquanto n&#xE3;o receber um sinal kill ou enquanto n&#xE3;o receber uma solicita&#xE7;&#xE3;o de stop.</para>
      <para>&#xC9; poss&#xED;vel utilizar <emphasis role="strong">svok</emphasis> para checar se supervise est&#xE1; rodando corretamente.</para>
      <para>Utilize <emphasis role="strong">svscan</emphasis> para iniciar v&#xE1;rios processos supervise de forma confi&#xE1;vel.</para>
    </section>
    <section>
      <title>svc</title>
      <para>
        <command>svc [ -udopchaitkx ]</command>
        <emphasis> servi&#xE7;o</emphasis>
      </para>
      <para>Controla servi&#xE7;os monitorados por <emphasis role="strong">supervise</emphasis>.</para>
      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="1.5cm"/>
          <colspec colname="c2" colwidth="15.5cm"/>
          <thead>
            <row>
              <entry align="center">
<?border-top 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Op&#xE7;&#xE3;o</para>
              </entry>
              <entry align="center">
<?border 0.002cm solid #000000?>
                <para>Descri&#xE7;&#xE3;o</para>
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-u</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Inicia o servi&#xE7;o se n&#xE3;o estiver rodando. Reinicia se o servi&#xE7;o parar (Up).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-d</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Se o servi&#xE7;o estiver rodando, envia um sinal <emphasis role="strong">TERM</emphasis> seguido de um sinal <emphasis role="strong">CONT</emphasis>.</para>
                <para>Depois de parado, n&#xE3;o reinicia o servi&#xE7;o (Down).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-o</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Inicia o servi&#xE7;o se n&#xE3;o estiver rodando. N&#xE3;o reinicia se o servi&#xE7;o parar (Once).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-p </para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Envia um sinal de <emphasis role="strong">STOP</emphasis> ao servi&#xE7;o (Pause).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-c</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>
                  <emphasis>Envia um sinal de </emphasis>
                  <emphasis>CONT</emphasis>
                  <emphasis> ao servi&#xE7;o (Continue).</emphasis>
                </para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-h</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Envia um sinal de <emphasis role="strong">HUP</emphasis> ao servi&#xE7;o (Hangup).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-a</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>
                  <emphasis>Envia um sinal de </emphasis>
                  <emphasis>ALRM</emphasis>
                  <emphasis> ao servi&#xE7;o (Alarm).</emphasis>
                </para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-i</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Envia um sinal de <emphasis role="strong">INT</emphasis> ao servi&#xE7;o (Interrupt).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-t</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Envia um sinal de <emphasis role="strong">TERM</emphasis> ao servi&#xE7;o (Terminate).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-k</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>Envia um sinal de <emphasis role="strong">KILL</emphasis> ao servi&#xE7;o (Kill).</para>
              </entry>
            </row>
            <row>
              <entry valign="middle" align="center">
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>-x</para>
              </entry>
              <entry>
<?border-right 0.002cm solid #000000?>
<?border-bottom 0.002cm solid #000000?>
<?border-left 0.002cm solid #000000?>
                <para>supervise ser&#xE1; finalizado assim que o servi&#xE7;o cair. Se voc&#xEA; est&#xE1; usando esta op&#xE7;&#xE3;o em um sistema est&#xE1;vel, est&#xE1; fazendo alguma coisa errada, pois supervise foi projetado para rodar eternamente.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
    <section>
      <title>svok</title>
      <para>
        <command>svok </command>
        <emphasis>servi&#xE7;o</emphasis>
      </para>
      <para>Checa se <emphasis role="strong">supervise</emphasis><emphasis> </emphasis>est&#xE1; rodando corretamente no diret&#xF3;rio <emphasis>servi&#xE7;o</emphasis>.</para>
      <para>Sai com c&#xF3;digo de erro 0 (zero) se <emphasis role="strong">supervise</emphasis> estiver rodando corretamente, caso contr&#xE1;rio sai com c&#xF3;digo de erro 100.</para>
    </section>
    <section>
      <title>svscan</title>
      <para>Inicia e monitora uma s&#xE9;rie de servi&#xE7;os.</para>
      <para>Inicia um processo <emphasis role="strong">supervise</emphasis> para monitorar cada um dos servi&#xE7;os/subdiret&#xF3;rios contidos no diret&#xF3;rio <emphasis role="strong">/service</emphasis>.</para>
      <para>Ignora qualquer subdiret&#xF3;rio que inicie com &#x201C;.&#x201D; (ponto).</para>
      <para><emphasis role="strong">supervise </emphasis>precisa estar no <emphasis role="strong">$PATH</emphasis> de svscan.</para>
      <para>svscan opicionalmente inicia um par de processos <emphasis role="strong">supervise</emphasis>; um para o subdiret&#xF3;rio (Ex: <emphasis>servi&#xE7;o</emphasis>) e outro para <emphasis>servi&#xE7;o</emphasis>/<emphasis role="strong">log</emphasis>, com um pipe entre eles. svscan age desta forma se, <emphasis>servi&#xE7;o</emphasis> n&#xE3;o possuir mais que 255 bytes (255 caracteres) e se <emphasis>servi&#xE7;o</emphasis><emphasis role="strong">/log</emphasis> existir e puder ser lido por svscan (Na vers&#xE3;o 0.70 do daemontools e anteriores, <emphasis>servi&#xE7;o</emphasis> precisa ter sua flag <emphasis role="strong">sticky</emphasis> ligada para que svscan atue desta forma). svscan precisa de 2 (dois) descriptors livres para cada pipe.</para>
      <para>A cada 5 (cinco) segundos, svscan checa os subdiret&#xF3;rios novamente. Se encontrar um novo subdiret&#xF3;rio, inicia um novo processo <emphasis role="strong">supervise</emphasis>. Se encontrar um subdiret&#xF3;rio antigo aonde seu processo <emphasis role="strong">supervise</emphasis> est&#xE1; parado, reinicia este processo <emphasis role="strong">supervise</emphasis>; no caso do subdiret&#xF3;rio <emphasis>servi&#xE7;o</emphasis><emphasis role="strong">/log</emphasis>, reutiliza o mesmo pipe, desta forma nenhum dado &#xE9; perdido.</para>
      <para>svscan foi projetado para rodar eternamente. Se houver problemas na cria&#xE7;&#xE3;o de pipes ou com processos <emphasis role="strong">supervise</emphasis>, escreve uma mensagem de erro em <emphasis role="strong">STDERR</emphasis> e tenta novamente ap&#xF3;s 5 (cinco) segundos. </para>
    </section>
    <section>
      <title>svscanboot</title>
      <para>Inicia o programa <emphasis role="strong">svscan</emphasis><emphasis> </emphasis>no diret&#xF3;rio <emphasis>/</emphasis><emphasis role="strong">service</emphasis> e joga todas as mensagens de sa&#xED;da e de erro para o programa <emphasis role="strong">readproctitle</emphasis><emphasis>.</emphasis></para>
      <para>svscanboot executa &#x201C;<emphasis role="strong">svscan /service 2&gt;&amp;1 | readproctitle service errors: .....</emphasis>&#x201D; seguido de 400 pontos, para tornar poss&#xED;vel a visualiza&#xE7;&#xE3;o dos &#xFA;ltimos 400 bytes de mensagens de erro que ser&#xE3;o vis&#xED;veis pelo comando <emphasis role="strong">ps,</emphasis><emphasis> </emphasis>atrav&#xE9;z de <emphasis role="strong">readproctitle</emphasis><emphasis>.</emphasis></para>
      <para>svscanboot configura a vari&#xE1;vel de ambiente <emphasis role="strong">$PATH</emphasis><emphasis> </emphasis>para</para>
      <para>&#x201C;/command:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&#x201D;</para>
      <para>e limpa todas as outras vari&#xE1;veis de ambiente.</para>
      <para><emphasis role="strong">NOTA:</emphasis> Dispon&#xED;vel somente a partir da vers&#xE3;o 0.75 do pacote daemontools.</para>
    </section>
    <section>
      <title>svstat</title>
      <para>
        <command>svstat </command>
        <emphasis>servi&#xE7;o</emphasis>
      </para>
      <para>Imprime na tela o status do <emphasis>servi&#xE7;o</emphasis> que est&#xE1; sendo monitorado por <emphasis role="strong">supervise</emphasis>.</para>
      <para>Ex:</para>
      <para>
        <command># svstat /service/qmail-smtpd</command>
      </para>
      <para>
        <command>/service/qmail-smtpd: up (pid 1452) 729011 seconds</command>
      </para>
    </section>
    <section>
      <title>tai64n</title>
      <para>Insere um timestamp preciso no in&#xED;cio de cada linha recebida por <emphasis role="strong">STDIN</emphasis> (entrada padr&#xE3;o).</para>
      <para>Para cada linha, imprime</para>
      <orderedlist continuation="restarts">
        <listitem>
          <para>um s&#xED;mbolo @,</para>
        </listitem>
        <listitem>
          <para>um timestamp preciso,</para>
        </listitem>
        <listitem>
          <para>um espa&#xE7;o em branco e</para>
        </listitem>
        <listitem>
          <para>uma c&#xF3;pia da linha recebida</para>
        </listitem>
      </orderedlist>
      <para>em <emphasis role="strong">STDOUT</emphasis>. O timestamp indica o momento que tai64n leu o primeiro caractere da linha de entrada.</para>
      <para>Ex:</para>
      <para>
        <command>$ echo "Processado com sucesso." | tai64n</command>
      </para>
      <para>
        <command>@40000000404b6f9438f692ac Processado com sucesso.</command>
      </para>
      <para>
        <command>$ tai64n &lt; status.log</command>
      </para>
      <para>
        <command>@40000000404b70261d03c5c4 Programa saiu com erro 511.</command>
      </para>
      <para>tai64n sai com c&#xF3;digo de erro 0 (zero) quando encontra o final de <emphasis role="strong">STDIN</emphasis>; sai com c&#xF3;digo de erro 111 se houver problemas na leitura de <emphasis role="strong">STDIN</emphasis> ou escrita em <emphasis role="strong">STDOUT</emphasis>.</para>
      <para>tai64n n&#xE3;o aloca nenhuma mem&#xF3;ria do sistema depois de iniciado.</para>
      <para>O timestamp utilizado por tai64n &#xE9; um r&#xF3;tulo de 12 bytes do tipo <emphasis role="strong">TAI64N</emphasis>, que &#xE9; impresso em 24 caracteres hexadecimais em min&#xFA;sculo.</para>
      <para>Ex:</para>
      <para>
        <command>4000000037c219bf2ef02e94 </command>
      </para>
      <para>Este timestamp refere-se ao nanosegundo come&#xE7;ando exatamente 935467455.787492500 segundos ap&#xF3;s o come&#xE7;o de 1970 TAI; o hexadecimal 37c219bf &#xE9; 935467455 e 2ef02e94 &#xE9; 787492500.</para>
      <para>A implementa&#xE7;&#xE3;o atual de tai64n, conta com a rotina da biblioteca <emphasis role="strong">gettimeofday</emphasis> do UNIX para retornar a hora corrente como o n&#xFA;mero de segundos TAI desde 1970-01-01 00:00:10 TAI. Deve-se tomar cuidado, pois a maioria das implementa&#xE7;&#xF5;es de <emphasis role="strong">gettimeofday</emphasis> n&#xE3;o est&#xE3;o de acordo com <emphasis role="strong">Y2038</emphasis>. Al&#xE9;m do mais, a maioria dos rel&#xF3;gios n&#xE3;o s&#xE3;o acertados corretamente. </para>
      <para>Utilize <emphasis role="strong">tai64nlocal</emphasis> para converter este timestamp em um formato leg&#xED;vel por humanos.</para>
    </section>
    <section>
      <title>tai64nlocal</title>
      <para>Recebe informa&#xE7;&#xF5;es via <emphasis role="strong">STDIN</emphasis> (entrada padr&#xE3;o) e converte entradas de timestamp no formato <emphasis role="strong">TAI64N</emphasis> para um formato leg&#xED;vel por humanos.</para>
      <para>Se a linha recebida n&#xE3;o iniciar com o caractere &#x201C;@&#x201D;, tai64nlocal escreve a linha em <emphasis role="strong">STDOUT</emphasis> sem nenhuma altera&#xE7;&#xE3;o. Se a linha iniciar com o caractere &#x201C;@&#x201D;, tai64nlocal verifica o timestamp logo ap&#xF3;s o &#x201C;@&#x201D; no formato impresso por <emphasis role="strong">tai64n</emphasis>, e escreve em <emphasis role="strong">STDOUT</emphasis> o timestamp convertido para a data local no formato ISO:</para>
      <para>
        <command>YYYY-MM-DD HH:MM:SS.SSSSSSSSS.</command>
      </para>
      <para>Ex:</para>
      <para>
        <command>$ echo "Processado com sucesso." | tai64n | tai64nlocal </command>
      </para>
      <para>
        <command>2004-03-07 16:22:23.190959500 Processado com sucesso.</command>
      </para>
      <para>
        <command>$ tai64nlocal &lt; Status.log</command>
      </para>
      <para>
        <command>2004-03-07 16:23:35.752866500 Programa saiu com erro 511.</command>
      </para>
      <para>A implementa&#xE7;&#xE3;o atual de tai64nlocal, conta com a rotina da biblioteca <emphasis role="strong">localtime</emphasis> do UNIX para encontrar a hora local.</para>
      <para>V&#xE1;rias inplementa&#xE7;&#xF5;es de <emphasis role="strong">localtime</emphasis> utilizam uma escala de tempo incorreta, que n&#xE3;o conta com o &#x201C;pulo dos segundos&#x201D;.</para>
      <para>Deve-se tomar cuidado, pois a maioria das implementa&#xE7;&#xF5;es de <emphasis role="strong">localtime</emphasis> n&#xE3;o est&#xE3;o de acordo com <emphasis role="strong">Y2038</emphasis>.</para>
      <para>tai64nlocal sai com c&#xF3;digo de erro 0 (zero) quando encontra o final de <emphasis role="strong">STDIN;</emphasis> sai com c&#xF3;digo de erro 111 se houver problemas na leitura de <emphasis role="strong">STDIN</emphasis> ou escrita em <emphasis role="strong">STDOUT</emphasis>.</para>
      <para>tai64nlocal n&#xE3;o aloca nenhuma mem&#xF3;ria do sistema depois de iniciado.</para>
    </section>
  </section>
</article>
