<!--
     The FreeBSD Documentation Project

     $FreeBSD$
     $FreeBSDes: doc/es_ES.ISO8859-1/books/handbook/mail/chapter.sgml,v 1.2 2004/07/29 15:31:44 carvay Exp $
-->

<chapter id="mail">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Bill</firstname>
	<surname>Lloyd</surname>
	<contrib>Escrito por </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<firstname>Jim</firstname>
	<surname>Mock</surname>
	<contrib>Reescrito por </contrib>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Correo Electr&oacute;nico</title>

  <sect1 id="mail-synopsis">
    <title>Sin&oacute;psis</title>
    <indexterm><primary>email</primary></indexterm>
    <indexterm><primary>correo elect&oacute;nico</primary></indexterm>

    <para>El <quote>Correo Electr&oacute;nico</quote>, o <quote>email</quote>, 
      es una de las formas de comunicaci&oacute;n m&aacute;s usadas hoy en 
      dia.    
      Este cap&iacute;tulo es una introducci&oacute;n b&aacute;sica de 
      c&oacute;mo poner en marcha un servidor de correo en FreeBSD, aunque 
      no es una gu&iacute;a completa y se han omitido muchos conceptos 
      importantes. Si se necesita informaci&oacute;n exhaustiva sobre el 
      tema puede recurrirse a los libros listados en <xref
      linkend="bibliography">.</para> 

    <para>Despu&eacute;s de leer este cap&iacute;tulo usted sabr&aacute;:</para>

    <itemizedlist>
      <listitem>
	<para>Qu&eacute; software est&aacute; involucrado en el env&iacute;o y 
          recepci&oacute;n de correo electr&oacute;nico.</para>
      </listitem>

      <listitem>
	<para>D&oacute;nde se encuentran en FreeBSD los ficheros 
          b&aacute;sicos de configuraci&oacute;n de  
	  <application>sendmail</application>.</para>
      </listitem>

      <listitem>
	<para>C&oacute;mo bloquear a los <quote>spammers</quote> y evitar 
          el uso no autorizado de su servidor de correo.</para> 
      </listitem>

      <listitem>
	<para>C&oacute;mo instalar y configurar agentes de transferencia de 
          correo (MTA) en su sistema, para reemplazar 
          <application>sendmail</application>.</para>
      </listitem>

      <listitem>
	<para>C&oacute;mo resolver problemas comunes en servidores de 
          correo.</para>
      </listitem>

      <listitem>
	<para>C&oacute;mo usar SMTP con UUCP.</para>
      </listitem>

      <listitem>
	<para>C&oacute;mo usar correo con una conexi&oacute;n dialup.</para>
      </listitem>

      <listitem>
	<para>C&oacute;mo configurar SMTP con autentificaci&oacute;n para 
          m&aacute;s seguridad.</para>
      </listitem>
    </itemizedlist>

    <para>Antes de leer este cap&iacute;tulo deber&iacute;a usted:</para>

    <itemizedlist>
      <listitem>
	<para>Configurar apropiadamente su conexi&oacute;n de red
	  (<xref linkend="advanced-networking">).</para>
      </listitem>

      <listitem>
	<para>Configurar apropiadamente la informaci&oacute;n de DNS de su
	  servidor de correo (<xref linkend="advanced-networking">).</para>
      </listitem>

      <listitem>
	<para>Saber como instalar software adicional (<xref linkend="ports">).</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="mail-using">
    <title>Utilizaci&oacute;n del correo electr&oacute;nico</title>
    <indexterm><primary>POP</primary></indexterm>
    <indexterm><primary>IMAP</primary></indexterm>
    <indexterm><primary>DNS</primary></indexterm>

    <para>Existen varios elementos relacionados con el intercambio de correo 
      electr&oacute;nico. A saber:
      <link linkend="mail-mua">El agente de usuario (Mail User Agent o 
       MUA)</link>, 
      <link linkend="mail-mta">El agente de transporte de correo (Mail 
       Transport Agent o MTA)</link>, 
      <link linkend="mail-dns">El DNS</link>, 
      <link linkend="mail-receive">Las carpetas de correo (Mailboxes)</link>, 
       y por supuesto, 
      <link linkend="mail-host">la m&aacute;quina servidora de correo (mail 
        host)</link>.</para>

    <sect2 id="mail-mua">
      <title>El Agente de Usuario</title>

      <para>Entre las opciones m&aacute;s conocidas tenemos:
	<application>mutt</application>,
	<application>pine</application>, <application>elm</application>,
	y <command>mail</command>, junto con programas con interfaz 
        gr&aacute;fica del estilo de <application>balsa</application> o 
	<application>xfmail</application> por nombrar unos pocos.  
        Tambi&eacute;n existen lectores de correo basados en navegadores web. 
        Los programas de correo basados en navegadores web 
        act&uacute;an de pasarela para las transacciones de correo 
        electr&oacute;nico, entregando dichas transacciones al 
        <link linkend="mail-host"><quote>servidor de correo</quote></link> 
        local, llamando a uno de los <link linkend="mail-mta">agentes
        de transporte de correo</link> disponibles en la m&aacute;quina local, 
        o entregando dichas transacciones a un agente de transporte 
        remoto utilizando el protocolo <acronym>TCP</acronym>.
    </sect2>

    <sect2 id="mail-mta">
      <title>Agente de Transporte de Correo</title>
      <indexterm>
        <primary>transporte</primary>
        <secondary><application>sendmail</application></secondary>
      </indexterm>
      <indexterm>
        <primary>transporte</primary>
        <secondary><application>postfix</application></secondary>
      </indexterm>
      <indexterm>
        <primary>transporte</primary>
        <secondary><application>qmail</application></secondary>
      </indexterm>
      <indexterm>
        <primary>transporte</primary>
        <secondary><application>exim</application></secondary>
      </indexterm>

      <para>&os; viene con <application>sendmail</application> por defecto, 
        pero tambi&eacute;n se soportan otros d&aelig;mones, entre los cuales 
        se encuentran:
      <itemizedlist>
	<listitem>
	  <para><application>exim</application>;</para>
	</listitem>

	<listitem>
	  <para><application>postfix</application>;</para>
	</listitem>

	<listitem>
	  <para><application>qmail</application>.</para>
	</listitem>
      </itemizedlist>

      <para>El agente de transporte de correo normalmente posee dos 
        funcionalidades, por un lado se responsabiliza de la recepci&oacute;n 
        y por otro se encarga de entregar el correo de salida.  
        <emphasis>No</emphasis> es responsable de la recolecci&oacute;n 
        autom&aacute;tica de correo mediante la utilizaci&oacute;n de 
        protocolos como <acronym>POP</acronym> o <acronym>IMAP</acronym>, 
        ni se utiliza para que el usuario pueda acceder a las
        carpetas de correo locales.  Para realizar estas otras tareas, 
        se necesitan <link linkend="mail-receive">d&aelig;mons</link> 
        adicionales.</para>

      <warning>
	<para> Versiones antiguas de <application>sendmail</application>
          poseen varios problemas de seguridad que pueden facilitar a un 
          atacante el acceso local o remoto a la m&aacute;quina 
          que ejecuta <application>sendmail</application>.  
          Para evitar dichos problemas de seguridad se recomienda 
          utilizar una versi&oacute;n actualizada de <application>
          sendmail</application>.  
          Tiene m&aacute;s opciones a la hora de elegir <acronym>
          MTA</acronym> en los <link linkend="ports">Ports de 
          &os;</link>.</para>
      </warning>
    </sect2>

    <sect2 id="mail-dns">
      <title>Correo electr&oacute;nico y DNS</title>

      <para>El Sistema de Nombres de Dominio (en ingl&eacute;s DNS) y su 
        correspondiente d&aelig;mon (llamado <command>named</command>)  
        constituyen una parte fundamental del procedimiento
        de entrega de correo electr&oacute;nico.  Para entregar el correo 
        electr&oacute;nico al destinatario adecuado el d&aelig;mon 
        servidor de correo busca el sitio remoto dentro del sistema de 
        DNS.</para>
      <indexterm>
	<primary>registro MX</primary>
      </indexterm>

      <para>El <acronym>DNS</acronym> es la entidad responsable de asociar 
        nombres con direcciones IP, pero adem&aacute;s se encarga de 
        almacenar informaci&oacute;n espec&iacute;fica relacionada con la 
        entrega de correo mediante registros de tipo MX. Los registros MX 
        (Mail eXchanger) especifican qu&eacute; m&aacute;quina o 
        m&aacute;quinas est&aacute;n encargadas de recibir correo 
        electr&oacute;nico para un determinado nombre de dominio.  En caso
        de no existir ning&uacute;n registro MX para el dominio del 
        destinatario, se busca informaci&oacute;n almacenada
        en registros de tipo A para enviar el correo al destino final.</para>

      <para>Se pueden consultar los registros MX para cualquier dominio 
        utilizando el comando &man.host.1;, como se puede observar en el 
        siguiente ejemplo:</para>

      <screen>&prompt.user; <userinput>host -t mx FreeBSD.org</userinput>
        FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org</screen>
    </sect2>

    <sect2 id="mail-receive">
      <title>Recepci&oacute;n de correo</title>
      <indexterm>
        <primary>correo</primary>
        <secondary>recepci&oacute;n</secondary>
      </indexterm>

      <para>La recepci&oacute;n de correo electr&oacute;nico para su dominio 
        se realiza mediante lo que se conoce como la m&aacute;quina de 
        correo (mail host). &Eacute;sta m&aacute;quina recoge todo el correo 
        dirigido a su dominio y lo almacena en <filename>mbox</filename> 
        (el m&eacute;todo por defecto para el almacenamiento de correo) o en 
        formato Maildir, dependiendo de la configuraci&oacute;n de la 
        m&aacute;quina.  Una vez que el correo ha sido almacenado 
        con &eacute;xito se puede leer en local utilizando aplicaciones como 
        &man.mail.1; o como <application>mutt</application>, o de forma remota 
        mediante un conjunto de protocolos tales como 
        <acronym>POP</acronym> o <acronym>IMAP</acronym>.  Esto significa que 
        si usted va a leer el correo de forma local no necesita instalar 
        ning&uacute;n servidor de <acronym>POP</acronym> o 
        <acronym>IMAP</acronym>.</para>

      <sect3 id="pop-and-imap">
        <title>Acceso a carpetas de correo remotas mediante 
          <acronym>POP</acronym> e <acronym>IMAP</acronym></title>

        <indexterm><primary>POP</primary></indexterm>
        <indexterm><primary>IMAP</primary></indexterm>
         <para>Para poder acceder a carpetas de correo de forma remota se 
          necesita tener acceso a un servidor de <acronym>POP</acronym> o 
          <acronym>IMAP</acronym>.  &Eacute;stos protocolos permiten a los 
          usuarios conectarse a sus carpetas de correo desde ubicaciones 
          remotas de una forma sencilla.  Aunque ambos, <acronym>POP</acronym>
          y <acronym>IMAP</acronym>, permiten este acceso remoto 
          <acronym>IMAP</acronym> ofrece algunas ventajas a&ntilde;adidas, 
          algunas de las cuales son:</para>

        <itemizedlist>
          <listitem>
	    <para>El acceso mediante <acronym>IMAP</acronym> permite almacenar 
              los correos en el servidor remoto sin necesidad de extraerlos 
              extraerlos y tener que almacenarlos en local.<para>
          </listitem>

          <listitem>
	    <para><acronym>IMAP</acronym> soporta actualizaciones concurrentes.</para>
          </listitem>

          <listitem>
	    <para><acronym>IMAP</acronym> resulta ser extremadamente 
              &uacute;til bajo enlaces de baja velocidad puesto que permite 
              a los usuarios recuperar la estructura de los mensajes sin 
              necesidad de bajarse todo el contenido.  Adem&aacute;s puede 
              realizar tareas tales como b&uacute;squedas directas en el 
              servidor con el fin de minimizar la utilizaci&oacute;n
              de la red.</para>
          </listitem>

        </itemizedlist>

        <para>Para instalar un servidor de <acronym>POP</acronym> o de 
	  <acronym>IMAP</acronym> se deben dar los siguientes pasos:</para>

        <procedure>
	  <step>
	    <para>Seleccionar el servidor <acronym>IMAP</acronym> o 
	      <acronym>POP</acronym> que mejor cumpla a sus necesidades.  
	      Los siguientes servidores <acronym>POP</acronym> e  
	      <acronym>IMAP</acronym> son bien conocidos y son firmes 
              candidatos para ello:</para>

	      <itemizedlist>
	        <listitem>
		  <para><application>qpopper</application>;</para>
	        </listitem>

	        <listitem>
		  <para><application>teapop</application>;</para>
	        </listitem>

	        <listitem>
		  <para><application>imap-uw</application>;</para>
	        </listitem>

	        <listitem>
		  <para><application>courier-imap</application>;</para>
	        </listitem>
	      </itemizedlist>

	  </step>

          <step>
	    <para>Instalar el d&aelig;mon <acronym>POP</acronym> o  
	      <acronym>IMAP</acronym> de su elecci&oacute;n desde 
              el &aacute;rbol de <quote>ports</quote>.</para>
	  </step>

	  <step>
	    <para>Modifique donde sea necesario <filename>
              /etc/inetd.conf</filename> para que el servidor 
	      <acronym>POP</acronym> o <acronym>IMAP</acronym>  
	      se ejecute autom&aacute;ticamente.</para>
	  </step>
        </procedure>

	<warning>
	  <para> Tenga en cuenta que tanto <acronym>POP</acronym> 
            como  <acronym>IMAP</acronym> transmiten informaci&oacute;n, 
            en especial el usuario y la contrase&ntilde;a, en texto plano.   
            Eso significa que si se desea seguridad en la transmisi&oacute;n 
            de la informaci&oacute;n a trav&eacute;s de la red se deben 
            considerar mecanismos adicionales como por ejemplo el 
            encapsulado de la sesi&oacute;n mediante &man.ssh.1;.  
            El encapsulado de sesiones se explica en  
            <xref linkend="security-ssh-tunneling">.</para>
        </warning>
      </sect3>

      <sect3 id="local">
        <title>Acceso a carpetas de correo locales</title>

	<para>Las carpetas de correo pueden abrirse de forma local utilizando 
          un agente de correo de usuario <acronym>(MUA)</acronym> 
	  en el servidor donde reside la carpeta.  Se suelen usar los 
          programas <application>mutt</application> or &man.mail.1;.</para>
      </sect3>
    </sect2>

    <sect2 id="mail-host">
      <title>El Servidor de Correo (Mail Host)</title>
      <indexterm><primary>servidor de correo</primary></indexterm>

      <para>El servidor de correo es el nombre que se usa para identificar a 
        la m&aacute;quina responsable de la entrega y
        recepci&oacute;n de correo electr&oacute;nico dentro de una 
        organizaci&oacute;n.  &Eacute;sta m&aacute;quina puede recibir correo 
        de varios usuarios dentro de su dominio.</para>
    </sect2>
  </sect1>

  <sect1 id="sendmail">
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Christopher</firstname>
          <surname>Shumway</surname>
          <contrib>Contribuido por </contrib>
        </author>
      </authorgroup>
    </sect1info>
    <title>Configuraci&oacute;n de <application>sendmail</application></title>

    <indexterm>
      <primary><application>sendmail</application></primary>
    </indexterm>

    <para>&man.sendmail.8; es el agente de transporte de correo (MTA) por 
      defecto de FreeBSD.  
      La responsabilidad de <application>sendmail</application> consiste en 
      aceptar correo de agentes de correo de usuario (<acronym>MUA</acronym>) 
      y en entregar dichos correos al agente de transporte de correo 
      apropiado, seg&uacute;n se especifique en su archivo de 
      configuraci&oacute;n.  <application>Sendmail</application> 
      tambi&eacute;n acepta conexiones de red provinientes de otros agentes 
      de transporte y puede depositar el correo recibido en carpetas locales o 
      o entregarlo a otros programas.</para>

    <para><application>sendmail</application> utiliza los siguientes ficheros 
      de configuraci&oacute;n:</para>

    <indexterm>
      <primary><filename>/etc/mail/access</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/aliases</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/local-host-names</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/mailer.conf</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/mailertable</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/sendmail.cf</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/virtusertable</filename></primary>
    </indexterm>
    <informaltable>
      <tgroup cols="2">
	<thead>
	  <row>
	    <entry>Filename</entry>
	    <entry>Function</entry>
	  </row>
	</thead>
	<tbody>
	  <row>
	    <entry>
	      <filename>/etc/mail/access</filename>
	    </entry>
	    <entry>Base de datos de accesos de <application>sendmail</application></entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/aliases</filename>
	    </entry>
	    <entry>Carpeta de alias</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/local-host-names</filename>
	    </entry>
	    <entry>Listados de m&aacute;quinas para las que 
              <application>sendmail</application>acepta correo</entry>
    </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/mailer.conf</filename>
	    </entry>
	    <entry>Configuraci&oacute;n del programa de correo</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/mailertable</filename>
	    </entry>
	    <entry>Tabla de entregas de correo</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/sendmail.cf</filename>
	    </entry>
	    <entry>Archivo de configuraci&oacute;n principal de 
              <application>sendmail</application></entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/virtusertable</filename>
	    </entry>
	    <entry>Usuarios virtuales y tablas de dominio</entry>
	  </row>
	</tbody>
      </tgroup>
    </informaltable>

  <sect2>
    <title><filename>/etc/mail/access</filename></title>

    <para>La base de datos de accesos define qu&eacute; m&aacute;quinas o 
      direcciones IP  pueden acceder al servidor de correo y qu&eacute;e clase 
      de acceso tienen permitido. Las m&aacute;quinas se listan junto con  
      las opciones <option>OK</option>, <option>REJECT</option>, 
      <option>RELAY</option> o simplemente junto con un mensaje de error 
      que se entrega a la rutina de gesti&oacute;n de excepciones de 
      <application>sendmail</application>.  
      Las m&aacute;quinas que se listan junto con la opci&oacute;n 
      <option>OK</option>, que es el valor por defecto, tienen permiso  
      para enviar correo a la m&aacute;quina servidora siempre y cuando la 
      direcci&oacute;n de correo de destino sea la m&aacute;quina servidora 
      de correo.  Las m&aacute;quinas listadas junto con la opci&oacute;n 
      <option>REJECT</option> tienen el acceso prohibido a  
      conexiones de correo electr&oacute;nico con el servidor.  Por 
      &uacute;ltimo las m&aacute;quinas que poseen la etiqueta
      <option>RELAY</option> para sus nombres tienen permitido enviar correo 
      para cualquier destino a trav&eacute;s de la m&aacute;quina
      servidora de correo.</para>

      <example>
	<title>Configuraci&oacute;n de la base de datos de acceso de <application>sendmail</application>
        </title>

    <programlisting>cyberspammer.com                550 We don't accept mail from spammers
FUENTE.DE.CORREO.INDISCRIMINADO@ 550 We don't accept mail from spammers
otra.fuente.de.spam             REJECT
okay.cyberspammer.com           OK
128.32                          RELAY</programlisting>
      </example>

   <para>En el ejemplo se pueden observar cinco entradas.  Los generadores de 
     correo que coinciden con la parte izquierda de la tabla se ven afectados 
     por la parte acci&oacute;n especificada en la parte derecha.  
     Los primeros dos ejemplos emiten un c&oacute;digo de error para la 
     rutina de excepciones de <application>sendmail</application>.      
     El mensaje de error se transmite a la m&aacute;quina remota cuando
     se recibe un correo que coincide con la parte izquierda de la tabla. 
     La siguiente entrada rechaza correo de una determinada m&aacute;quina  
     de internet, <hostid>otra.fuente.de.spam</hostid>.  
     La siguiente entrada acepta conexiones de correo de la m&aacute;quina 
     <hostid role="fqdn">okay.cyberspammer.com</hostid>, lo cual es 
     m&aacute;s exacto que la l&iacute;nea de arriba de 
     <hostid role="domainname">cyberspammer.com</hostid>.  Las coincidencias 
     m&aacute;s completas tienen precedencia sobre las menos 
     espec&iacute;ficas.  La &uacute;ltima entrada permite actuar como 
     <quote>relay</quote> o pasarela de correo electr&oacute;nico para aquellas 
     m&aacute;quinas que posean una direcci&oacute;n IP que comience por 
     <hostid>128.32</hostid>.  &Eacute;stas m&aacute;quinas podr&iacute;an 
     enviar correo destinado a otros servidores de correo utilizando el 
     nuestro.</para>

   <para>Cuando se actualiza este fichero se debe ejecutar 
     <command>make</command> dentro de <filename>/etc/mail/</filename> 
     para que se actualice la base de datos.</para>

   </sect2>
   <sect2>
    <title><filename>/etc/mail/aliases</filename></title>

    <para>La base de datos de alias contiene una lista de directorios virtuales 
      que son traducidas a otros usuarios, ficheros, programas o incluso otros 
      alias.  
      A continuaci&oacute;n se muestran unos pocos ejemplos de la 
      sint&aacute;xis que se puede utilizar
      dentro del fichero <filename>/etc/mail/aliases</filename>:</para>

      <example>
	<title>Mail Aliases</title>
    <programlisting>root: usuariolocal
ftp-bugs: joe,eric,paul
bit.bucket:  /dev/null
procmail: "|/usr/local/bin/procmail"</programlisting>
      </example>

      <para>El formato del fichero es sencillo; el nombre de la carpeta de 
        correo que aparece a la izquierda
        de los dos puntos se traduce al/los destinos de la derecha. 
        El primer ejemplo simplemente traduce la carpeta 
        <username>root</username>
        a la carpeta <username>usuariolocal</username>, la cual se examina de 
        nuevo utilizando la misma base de datos de alias, y si no existe 
        ninguna otra coincidencia el mensaje se entrega 
        al usuario local <username>usuariolocal</username>.  
        En el ejemplo siguiente se muestra una lista de correo.  
        Todo correo que se env&iacute;a a la carpeta <username>ftp-bugs</username> se traduce en un env&iacute;o para
	tres carpetas locales diferentes: <username>joe</username>,
	<username>eric</username> y <username>paul</username>.  
        Es importante se&ntilde;alar que 
        tambi&eacute;n se pueden especificar carpetas remotas mediante la forma 
        <literal>usuario@ejemplo.com</literal>.  El siguiente ejemplo muestra 
        la escritura del correo a un fichero, en este caso en <filename>
        /dev/null</filename>.  El &uacute;ltimo ejemplo muestra el 
        envi&oacute; de correo a un programa; en este caso el mensaje de 
        correo se escribe en la entrada est&aacute;ndar del programa 
        <filename>/usr/local/bin/procmail</filename> utilizando una 
        tuber&iacute;a (o <quote> pipe</quote>)  de &unix;.</para>

   <para>Cuando se actualiza este fichero se debe ejecutar 
     <command>make</command> dentro de <filename>/etc/mail/</filename> 
     para actualizar la base de datos.</para>
  </sect2>
  <sect2>
    <title><filename>/etc/mail/local-host-names</filename></title>

    <para>Este archivo es una lista de nombres de m&aacute;quinas que 
      &man.sendmail.8; acepta como nombres locales.  
      Se suele utilizar para escribir aquellos dominios o m&aacute;quinas 
      de los cuales <application>sendmail</application> va a recibir correo. 
      Por ejemplo, si nuestro servidor de correo
      va a aceptar correo proveniente del dominio <hostid 
      role="domainname">ejemplo.com</hostid> y tambi&eacute;n de la 
      m&aacute;quina <hostid role="fqdn">mail.ejemplo.com</hostid> nuestro 
      <filename>local-host-names</filename> 
      deber&iacute;a ser algo as&iacute;:</para>

    <programlisting>ejemplo.com
mail.ejemplo.com</programlisting>

    <para>Cuando se actualiza este fichero &man.sendmail.8; necesita ser 
      reiniciado para que tenga en cuenta los cambios.</para>

  </sect2>

  <sect2>
    <title><filename>/etc/mail/sendmail.cf</filename></title>

    <para>Archivo de configuraci&oacute;n principal de <application>
      sendmail</application>, controla el comportamiento global de 
      <application>sendmail</application>, incluyendo cualquier tarea 
      desde la reescritura de direcciones de correo electr&oacute;nico 
      hasta la devoluci&oacute;n de mensajes de error a los servidores 
      de correo remotos.  Es evidente que con un abanico tan diverso el 
      fichero de configuraci&oacute;n
      acaba por ser bastante complejo y sus detalles quedan fuera de los 
      objetivos de esta secci&oacute;n. Afortunadamente este
      fichero raras veces necesita ser modificado, al menos en lo que 
      respecta a servidores de correo est&aacute;ndar. 
     </para>

    <para>El fichero de configuraci&oacute;n principal de <application>
      sendmail</application> se puede construir a partir de 
      &man.m4.1;, es decir,  macros que se utilizan para definir 
      caracter&iacute;sticas y comportamientos espec&iacute;ficos 
      de <application>sendmail</application>.  Se ruega al lector consultar 
      <filename>/usr/src/contrib/sendmail/cf/README</filename> para obtener 
      m&aacute;s detalles acerca de las distintas macros que
      se pueden utilizar.</para>

    <para>Cuando se realizan cambios a este fichero 
      <application>sendmail</application> debe ser reiniciado para que los 
      cambios surtan efecto.</para> 

  </sect2>
  <sect2>
    <title><filename>/etc/mail/virtusertable</filename></title>

    <para>El fichero <filename>virtusertable</filename> asocia direcciones de 
      correo pertenecientes a dominios y carpetas virtuales con carpetas 
      reales. Estas carpetas pueden ser locales, remotas, alias
      definidos en <filename>/etc/mail/aliases</filename> o incluso ficheros.</para>

    <example>
	<title>Ejemplo de asociaci&oacute;n de correo de dominio virtual</title>

    <programlisting>root@ejemplo.com                root
postmaster@ejemplo.com          postmaster@noc.ejemplo.net
@ejemplo.com                    joe</programlisting>
      </example>

    <para>En el ejemplo superior se observa una asociaci&oacute;n para el 
      dominio <hostid role="domainname">ejemplo.com</hostid>.  
      Este fichero se procesa de arriba a abajo buscando la primera
      coincidencia. La primera entrada asocia <literal>
      root@ejemplo.com</literal> con la carpeta de correo local denominada
      <username>root</username>.  La siguiente entrada asocia
      <literal>postmaster@ejemplo.com</literal> con la carpeta 
      <username>postmaster</username> situada en la m&aacute;quina 
      <hostid role="fqdn">noc.ejemplo.net</hostid>.  Por &uacute;ltimo, si 
      no se ha encontrado ninguna coincidencia para 
      <hostid role="domainname">ejemplo.com</hostid> se le asigna la 
      &uacute;ltima asociaci&oacute;n, la cual asocia cualquier mensaje
      de correo proveniente de <hostid role="domainname">
      ejemplo.com</hostid> con la carpeta de 
      correo local denominada <username>joe</username>.</para>

  </sect2>
  </sect1>

  <sect1 id="mail-changingmta">
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Andrew</firstname>
          <surname>Boothman</surname>
          <contrib>Escrito por </contrib>
        </author>
      </authorgroup>
      <authorgroup>
        <author>
          <firstname>Gregory</firstname>
          <surname>Neil Shapiro</surname>
          <contrib>Informaci&oacute;n obtenida de correos escritos por </contrib>
        </author>
      </authorgroup>
    </sect1info>
    <title>Sustituci&oacute;n del Agente de Transferencia de Correo</title>
    <indexterm>
      <primary>email</primary>
      <secondary>cambio de mta</secondary>
    </indexterm>

    <para>Como ya se ha comentado FreeBSD viene con <application>
      sendmail</application> ya instalado como agente de transferencia de 
      correo por defecto.  De esta forma <application>sendmail</application> 
      se encarga de gestionar el correo entrante y saliente.</para>

    <para>No obstante, debido a distintas razones algunos administradores de 
      sistemas prefieren utilizar otro MTA.  
      Estas razones var&iacute;an desde simplemente querer probar otros 
      programas de transferencia de correo, hasta la necesidad
      de utilizar un determinado programa que hace uso de una funci&oacute;n 
      espec&iacute;fica de un agente determinado.  Por suerte  
      cualesquiera que sean estas razones FreeBSD posee un sencillo 
      procedimiento para sustituir a 
      <application>sendmail</application>.</para>

    <sect2>
      <title>Instalaci&oacute;n de un nuevo MTA</title>

      <para>Existen una amplia gama de MTA alternativos a <application>
        sendmail</application>. Un buen punto de partida es el <link  
        linkend="ports">Sistema de Ports de FreeBSD</link>,  
        donde se pueden localizar varios.  Por supuesto el usuario tiene 
        libertad para utilizar cualquier MTA, siempre y cuando se pueda 
        ejecutar en FreeBSD sin problemas.</para>

      <para>Lo primero es instalar el nuevo MTA.  Una vez que est&aacute; 
        instalado normalmente se tiene la oportunidad para decidir si 
        realmente cubre las necesidades y tambi&eacute;n se tiene la 
        oportunidad de configurar el nuevo software antes de sustituir a 
        <application>sendmail</application>.  El usuario debe tener en cuenta
        que el nuevo MTA puede sobreescribir algunos binarios del sistema como 
        por ejemplo <filename>/usr/bin/sendmail</filename>.  
	En cualquier caso el nuevo software de correo 
        suele entrar en funcionamiento con una configuraci&oacute;n 
        por defecto.</para>

      <para>Por favor, recuerde que se recomienda leer la documentaci&oacute;n 
        del MTA seleccionado para obtener m&aacute;s  
        informaci&oacute;n.</para>

    </sect2>

    <sect2>
      <title>Desactivaci&oacute;n de la aplicaci&oacute;n <application>
        sendmail</application></title>

      <para>El procedimiento utilizado para ejecutar 
	<application>sendmail</application> cambi&oacute; significativamente 
        entre las releases 4.5-RELEASE y 4.6-RELEASE.  
        De esta forma el procedimiento utilizado para la desactivaci&oacute;n 
        hoy en d&iacute;a es
        sut&iacute;lmente distinto al utilizado en dichas distribuciones.</para>

      <sect3>
	<title>FreeBSD 4.5-STABLE antes de 2002/4/4 y anteriores
	  (Incluyendo 4.5-RELEASE y anteriores)</title>

	<para>Introducir:</para>

	  <programlisting>sendmail_enable="NO"</programlisting>

	  <para>dentro de <filename>/etc/rc.conf</filename>.  Esta variable 
          desactiva el servicio de recepci&oacute;n de correo de 
	  <application>sendmail</application>,
	  pero salvo que se modifique (ver m&aacute;s adelante) el 
          fichero <filename>/etc/mail/mailer.conf</filename> 
	  <application>sendmail</application> todav&iacute;a ser&aacute; 
          la aplicaci&oacute;n elegida para enviar correo 
          electr&oacute;nico.</para>	 
      </sect3>

      <sect3>
	<title>FreeBSD 4.5-STABLE desde de 2002/4/4
	  (Incluyendo 4.6-RELEASE y posteriores)</title>

	<para>Para poder desactivar completamente
	  <application>sendmail</application> haga lo siguiente:</para>

	  <programlisting>sendmail_enable="NONE"</programlisting>

	  <para>dentro del fichero <filename>/etc/rc.conf.</filename></para>

	<warning>
	  <para> Se desactiva el servicio de correo de salida de 
            <application>sendmail</application>.  
	    Es importanque que se reemplace con un sistema de entrega de 
            correo alternativo que sea totalmente funcional.  
            En caso contrario funciones del sistema FreeBSD tales como 
	    &man.periodic.8; no podr&aacute;n entregar sus resultados por 
            correo eletr&oacute;nico tal y como normalmente hacen.  
            Varias partes del sistema FreeBSD esperan disponer de un sistema 
            de correo funcional compatible con
            sendmail.  Si las aplicaciones contin&uacute;an utilizando los 
            binarios de <application>sendmail</application> 
	    para realizar env&iacute;os de correo despu&eacute;s de su 
            desactivaci&oacute;n el correo podr&iacute;a ser almacenado en una 
            cola inactiva de <application>sendmail</application>, en cuyo caso 
            nunca se entregar&iacute;a.</para>
	</warning>

	<para>Si s&oacute;lo se quiere desactivar el servicio de correo de 
          entrada de <application>sendmail</application>, basta con establecer 
	  la variable:</para>

	  <programlisting>sendmail_enable="NO"</programlisting>

	<para>dentro de <filename>/etc/rc.conf</filename>.  
          En &man.rc.sendmail.8; tiene m&aacute;s informaci&oacute;n sobre 
          las opciones de arranque de <application>
          sendmail</application>.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>Ejecuci&oacute;n del nuevo MTA en el arranque</title>

      <para>Existen dos m&eacute;todos alternativos para ejecutar el nuevo 
        MTA en el arranque, dependiendo
        de la versi&oacute;n de FreeBSD que se est&eacute; ejecutando.</para>

      <sect3>
	<title>FreeBSD 4.5-STABLE antes de 2002/4/11
	  (Incluyendo 4.5-RELEASE y anteriores)</title>

	<para>Se debe a&ntilde;adir un script en 
	  <filename>/usr/local/etc/rc.d/</filename> cuyo nombre termine en
	  <filename>.sh</filename> y que sea ejecutable por
	  <username>root</username>.  El script debe aceptar los 
          par&aacute;metros <literal>start</literal> y 
	  <literal>stop</literal>.  Cuando el sistema &os; se est&aacute; 
          inicializando, los scripts de arranque 
          ejecutar&aacute;n el siguiente comando:</para>

	<programlisting>/usr/local/etc/rc.d/supermailer.sh start</programlisting>

	<para>La misma orden se puede utilizar tambi&eacute;n para ejecutar 
          el servidor de forma manual.  
          Cuando el sistema se est&aacute; reiniciando los scripts del sistema 
          ejecutan los ficheros ubicados en 
          <filename>/usr/local/etc/rc.d/</filename> utilizando la opci&oacute;n
	  <literal>stop</literal>, en nuestro caso:</para>

	<programlisting>/usr/local/etc/rc.d/supermailer.sh stop</programlisting>

	<para>Dicho comando tamb&iacute;en se puede utilizar para detener el 
          servidor de correo de forma manual cuando el
          sistema FreeBSD se ejecuta con normalidad.</para>

      </sect3>

      <sect3>
	<title>FreeBSD 4.5-STABLE despu&eacute;s de 2002/4/11
	  (Incluyendo 4.6-RELEASE y posteriores)</title>

	<para>Con las &uacute;ltimas versiones de FreeBSD se puede utilizar el 
          m&eacute;todo anterior pero tambi&eacute;n se puede
          especificar</para>

	<programlisting>mta_start_script="nombre_de_fichero"</programlisting>

	<para>dentro de <filename>/etc/rc.conf</filename>, donde 
	  <replaceable>nombre_de_fichero</replaceable> es el nombre de 
          alg&uacute;n script que se ejecuta en tiempo de arranque
          para inicializar el nuevo MTA.</para>
      </sect3>

    </sect2>

    <sect2>
      <title>Sustituci&oacute;n de <application>sendmail</application> como el 
        agente de transporte de correo predeterminado.</title>

      <para>El programa <application>sendmail</application> es tan 
        imprescindible y es utilizado por tal multitud de programas en  
        los sistemas &unix; que algunos programas simplemente asumen que 
        <application>sendmail</application> se encuentra instalado y 
        configurado dentro del sistema.  
	Por esta raz&oacute;n varios MTAs alternativos proporcionan su propia 
        implementaci&oacute;n de la interfaz de l&iacute;nea de comandos que 
        pos&eacute;e <application>sendmail</application>; esto facilita que se 
        puedan utilizar como sustitutos de <application>sendmail</application> 
        sin mayores dificultades.</para>

      <para>Por lo tanto si desea utilizar un agente de transporte de correo 
        alternativo debe asegurarse de que todo software que intente ejecutar 
	binario de <application>sendmail</application> est&aacute;ndar, 
        <filename>/usr/bin/sendmail</filename>, realmente ejecute el nuevo MTA 
        en su lugar. Por fortuna FreeBSD proporciona un sistema llamado 
        &man.mailwrapper.8; que realiza precisamente esta tarea.</para>

      <para>Cuando <application>sendmail</application> est&aacute; funcionando 
        se debe localizar algo como lo siguiente dentro del fichero 
        <filename>/etc/mail/mailer.conf</filename>:</para>

<programlisting>sendmail	 /usr/libexec/sendmail/sendmail
send-mail	/usr/libexec/sendmail/sendmail
mailq		/usr/libexec/sendmail/sendmail
newaliases	/usr/libexec/sendmail/sendmail
hoststat	/usr/libexec/sendmail/sendmail
purgestat	/usr/libexec/sendmail/sendmail</programlisting>

      <para>Esto significa que cuando cualquiera de estos comandos 
	(por ejemplo <filename>sendmail</filename> m&iacute;smamente) 
        se ejecutan el sistema ejecutar&aacute; en su lugar una copia del 
        el sistema ejecuta en su lugar una copia del <quote>
        mailwrapper</quote> denominada <filename>sendmail</filename>
        que chequea el fichero <filename>mailer.conf</filename> y ejecuta 
        <filename>/usr/libexec/sendmail/sendmail</filename>.  
        Este sistema permite cambiar de una forma sencilla los binarios que 
        se ejecutan realmente cuando se invocan las funciones de 
        <filename>sendmail</filename>.</para>

      <para>Si se quiere que ejecutar 
        <filename>/usr/local/supermailer/bin/sendmail-compat</filename>
	en lugar de <application>sendmail</application> se puede cambiar el 
	fichero <filename>/etc/mail/mailer.conf</filename> para que contenga 
        lo siguiente:</para>

<programlisting>sendmail	 /usr/local/supermailer/bin/sendmail-compat
send-mail	/usr/local/supermailer/bin/sendmail-compat
mailq		/usr/local/supermailer/bin/mailq-compat
newaliases	/usr/local/supermailer/bin/newaliases-compat
hoststat	/usr/local/supermailer/bin/hoststat-compat
purgestat	/usr/local/supermailer/bin/purgestat-compat</programlisting>

	</sect2>

	<sect2>
	  <title>&Uacute;ltimos Pasos</title>

	<para>Una vez que todo est&aacute;configurado a su gusto  
          hay que matar los procesos de <application>sendmail</application> 
          que ya no se necesitan y ejecutar los procesos pertenecientes al 
          nuevo software de MTA, o utilizar la opci&oacute;n m&aacute;s 
          sencilla: reiniciar la m&aacute;quina.  Reinicar la m&aacute;quina 
          nos brinda la oportunidad de comprobar que se ha configurado 
          correctamente el arranque del sistema para que ejecute de forma 
          autom&aacute;tica el nuevo MTA.</para>
      </sect2>
    </sect1>

  <sect1 id="mail-trouble">
    <title>Depuraci&oacute;n de Problemas</title>
    <indexterm>
      <primary>email</primary>
      <secondary>Depuraci&oacute;n de problemas</secondary>
    </indexterm>

    <qandaset>
      <qandaentry>
        <question>
	<para>&iquest;Por qu&eacute; tengo que utilizar el FQDN para las 
          m&aacute;quinas de mi organizaci&oacute;n?</para>
	</question>

	<answer>
	<para>Probablemente se deba a que la m&aacute;quina de correo se 
          encuentra en un dominio diferente; si por ejemplo la 
          m&aacute;quina de correo se encuentra en <hostid 
          role="fqdn">foo.bar.edu</hostid> 
          y se desea alcanzar una m&aacute;quina llamada 
          <hostid>mumble</hostid> en el dominio 
          <hostid role="domainname">bar.edu</hostid> se tiene que referir a 
          ella mediante un nombre de dominio completo 
          (<quote>fully-quailified domain name</quote> o FQDN), en &eacute;ste 
          caso <hostid role="fqdn">mumble.bar.edu</hostid> en lugar de 
          referirse a ella simplemente como <hostid>mumble</hostid>.</para>

	<indexterm><primary>BIND</primary></indexterm>
	<para>Tradicionalmente, la referencia incompleta era posible 
          utilizando <quote>resolvers</quote> de BSD BIND. 
	  No obstante la versi&oacute;n de <application>BIND</application>
          que en la actualidad se ofrece con FreeBSD ya no permite por defecto 
          el uso de dichas abreviaturas salvo para aquellas m&aacute;quinas 
          que pertenecen al dominio al que su sistema pertenezca.  
          Una m&aacute;quina como <hostid>mumble</hostid> ser&aacute; buscada 
          como <hostid role="fqdn">mumble.foo.bar.edu</hostid> o la 
          b&uacute;squeda ser&aacute; redireccionada al servidor de dominio 
          ra&iacute;z del DNS.</para>

        <para>Esto es distinto a lo que ocurr&iacute;a en versiones anteriores 
          de BIND, donde la b&uacute;squeda se produc&iacute;a a trav&eacute;s 
          de <hostid role="domainname">mumble.bar.edu</hostid> y de 
          <hostid role="domainname">mumble.edu</hostid>.  Se recomienda 
          consultar a la RFC 1535 para conocer el motivo que se considerara 
          una pr&aacute;ctica err&oacute;nea o incluso un agujero de 
          seguridad.</para>

        <para>Una buena soluci&oacute;n a este problema puede ser 
         inclu&iacute;r la siguiente l&iacute;nea 

          <programlisting>search foo.bar.edu bar.edu</programlisting>

          en lugar de 

          <programlisting>domain foo.bar.edu</programlisting>

          dentro del fichero <filename>/etc/resolv.conf</filename>.  
          No obstante se debe asegurar de que el orden de 
	  b&uacute;squeda no se expande m&aacute;s all&aacute; del 
	  <quote>l&iacute;mite entre la administraci&oacute;n local y la administraci&oacute;n p&uacute;blica</quote>,
	  tal y como se le denomina en la RFC 1535.</para>
	</answer>
      </qandaentry>

      <indexterm>
	<primary>MX record</primary>
      </indexterm>

      <qandaentry>
	<question>
	<para><application>sendmail</application> dice <errorname>mail
	  loops back to myself</errorname> (el correo vuelve a mis manos)</para>
	</question>

	<answer>
	<para>Esta pregunta se responde en las FAQ de
	<application>sendmail</application> de la siguiente forma:</para>

        <programlisting>Estoy obteniendo los siguientes mensajes de error:

553 MX list for domain.net points back to relay.domain.net
554 &lt;user@domain.net&gt;... Local configuration error

¿Cómo puedo solucionar esto?

Usted ha especificado que el correo para el dominio (por ejemplo,
para el dominio dominio.net) sea reenviado a una m&aacute;quina determinada 
(en este caso relay.dominio.net), para lo que se utiliza un registro
de DNS de tipo MX, pero la m&aacute;quina que act&uacute;a de relay no se 
reconoce a s&iacute; misma como perteneciente al dominio dominio.net.  
Se debe a&ntilde;adir dominio.net al fichero /etc/mail/local-host-names, 
que recibe el nombre de /etc/sendmail.cw en versiones de sendmail previas 
a la 8.10.  Se puede utilizar la macro FEATURE(use_cw_file) para indicar 
d&oacute;nde se encuentra el fichero local-host-names; tambi&eacute;n se 
puede a&ntilde;adir <quote>Cw dominio.net</quote> directamente 
al fichero <filename>/etc/mail/sendmail.cf</filename>
         </programlisting>

        <para>Las FAQ de <application>sendmail</application> se pueden 
          encontrar en <ulink 
	  url="http://www.sendmail.org/faq/"></ulink> y son de lectura 
          obligada si se quiere depurar el comportamiento y la 
	  configuraci&oacute;n de <application>sendmail</application>.
	</para>
	</answer>
      </qandaentry>

      <indexterm><primary>PPP</primary></indexterm>
      <qandaentry>
        <question>
	<para>&iquest;C&oacute;mo puedo ejecutar un servidor de correo 
          utilizando una m&aacute;quina que se conecta a internet 
              mediante modem anal&oacute;gico (dial-up) ?</para>
	</question>

	<answer>
	<para>Se quiere conectar una m&aacute;quina FreeBSD dentro de una LAN a
	  Internet.  La m&aacute;quina FreeBSD ser&aacute; una pasarela de 
          correo para dicha LAN.  La conexi&oacute;n mediante PPP no es 
	  dedicada.</para>

	<indexterm><primary>UUCP</primary></indexterm>
	<indexterm>
	  <primary>MX record</primary>
	</indexterm>

	<para>Existen al menos dos formas distintas de hacerlo.  Una de ellas 
          consiste en utilizar UUCP.</para>

	<para>Otra forma consiste en hacerse con un servidor de internet a 
          tiempo completo para proporcionar servicios de agente de transporte 
          secundario para nuestro dominio.  Si por ejemplo el dominio de 
          nuestra compa&ntilde;&iacute;a es <hostid 
          role="domainname">ejemplo.com</hostid>, nuestro proveedor de acceso 
          a internet puede instalar lo siguiente en el DNS:</para>

	<programlisting>ejemplo.com.          MX        10      ejemplo.com.
                      MX        20      ejemplo.net.</programlisting>

	<para>N&oacute;tese que el agente de correo primario es nuestro 
           dominio, ejemplo.com, y adem&aacute;s se encuentra configurado 
           un agente de transporte secundario en la m&aacute;quina 
           ejemplo.net.  En este caso s&oacute;lamente se debe especificar 
           una m&aacute;quina como receptor final de correo 
           (a&ntilde;adiendo <literal>Cw ejemplo.com</literal>) al fichero 
           <filename>/etc/mail/sendmail.cf</filename> de la m&aacute;quina 
           <hostid role="domainname">example.com</hostid>)</para>

	<para>Cuando el <command>sendmail</command> que est&aacute; enviando 
          el correo trata de entregar dicho correo primero intentar&aacute; 
          conectarse con nosotros (<hostid 
          role="domainname">ejemplo.com</hostid>) utilizando el enlace de 
          modem.  Lo m&aacute;s probable es que la operaci&oacute;n termine 
          despu&eacute;s de un tiempo de espera debido a que el enlace modem 
          est&eacute; ca&iacute;do.  
          La aplicaci&oacute;n <application>sendmail</application> 
          autom&aacute;ticamente entregar&aacute; el correo al servidor 
          especificado como agente de transporte de correo secundario 
          (segundo registro MX), es decir, entregar&aacute; el correo a 
          nuestro proveedor de servicios de internet (<hostid 
          role="domainname">ejemplo.net</hostid>).  El sitio MX secundario 
          tratar&aacute; de conectarse con nuestra m&aacute;quina de una forma 
          peri&oacute;dica con el objeto de entregar el correo a la 
          m&aacute;quina que act&uacute;a como agente servidor de correo 
          primario (<hostid role="domainname">ejemplo.com</hostid>).</para>

	<para>Puede ser de mucha utilidad un script de <quote>login</quote> 
          como el que se muestra a continuaci&oacute;n:</para>

	<programlisting>#!/bin/sh
# Ponme en /usr/local/bin/pppmiconexion
( sleep 60 ; /usr/sbin/sendmail -q ) &amp;
/usr/sbin/ppp -direct pppmiconexion</programlisting>

	<para>Si vamos a crear un script de <quote>login</quote> separado para 
          un usuario determinado se puede utilizar 
	  <command>sendmail -qRejemplo.com</command> en lugar del script 
          anterior.  Esto obliga a que se procesen 
          de forma inmediata todos los correos que se encuentren en la cola de 
          <hostid role="domainname">ejemplo.com</hostid>.</para>

	<para>Vamos a dar una vuelta m&aacute;s de tuerca a la 
          situaci&oacute;n:</para>

	<para>Mensaje robado a la &a.isp;.</para>

	<programlisting>
&gt; Nosotros proporcionamos servicio de MX secundario a un cliente nuestro. 
&gt; El cliente se conecta a nuestro servidor varias veces al d&iacute;a 
&gt; de  forma autom&aacute;tica para recoger sus correos para almacenarlos en 
&gt; su servidor MX primario (nosotros no llamamos a su organizaci&oacute;n 
&gt; justo cuando nos llega un correo suyo).
&gt; Nuestro sendmail env&iacute;a la cola de correos cada 30 minutos. En 
&gt; estos momentos nuestro cliente tiene que estar al menos 30 minutos 
&gt; conectado para asegurarnos de que todo su correo ha sido enviado al 
&gt; servidor MX primario.
&gt;
&gt; &iquest;Existe alg&uacute;n comando que permita indicar a sendmail que 
&gt; env&iacute;e todos los correos de la cola cuando quiera el cliente?
&gt; El cliente no tiene permisos de superusuario en la m&aacute;quina que 
&gt; alberga nuestro agente de transporte, por supuesto.

En la secci&oacute;n de <quote>privacy flags</quote> del fichero sendmail.cf 
existe una definici&oacute;n como &eacute;sta:
Opgoaway,restrictqrun

Basta con eliminar restrictqrun para permitir que usuarios sin permisos de 
superusuario arranquen el procesamiento de la cola.
Ser&iacute;a conveniente adem&aacute;s que reordenaran los registros MX. 
Nosotros somos el primer MX para nuestros clientes.
Adem&aacute;s de esto hay que especificar:

# Si somos el mejor MX para una determinada m&aacute;quina, intenta 
# utilizarnos directamente en vez de generar un error de 
# configuraci&oacute;n local.
OwTrue

en el archivo de configuraci&oacute;n de <application>sendmail</application>. 
Mediante la configuraci&oacute;n anterior, 
una organizaci&oacute;n remota entregar&aacute; sus correos directamente a 
usted, sin necesidad de intentar conectarse primero a trav&eacute;s de 
la conexi&oacute;n del cliente.  La etiqueta "OwTrue" se necesita para evitar 
que <application>sendmail</application> genere un mensaje de error.  
A continuaci&oacute;n ustedes se encargan de entregar el 
correo a su(s) respectivo(s) cliente(s) tal como vienen haciendo. 

Esta configuraci&oacute;n s&oacute;lo funciona para 
<quote>m&aacute;quinas individuales</quote>, 
de tal forma que se necesita que el cliente especifique su servidor de correo 
mediante entradas de tipo A en el DNS.  En concreto se necesita una entrada de 
tipo A en el DNS para el dominio del cliente (<quote>cliente.com</quote>).
</programlisting>
        </answer>
      </qandaentry>

      <qandaentry>
        <question>
	  <para>&iquest;Por qu&eacute; me siguen saliendo mensajes de error 
            del tipo <errorname>Relaying Denied</errorname> cuando se trata 
	    de enviar correo proveniente de otras m&aacute;quinas?</para>
	</question>

	<answer>
	  <para>En las instalaciones del sistema FreeBSD por defecto 
 	    <application>sendmail</application> se configura para enviar 
            correo s&oacute;lamente desde la m&aacute;quina en la cual 
            se est&aacute; ejecutando.  Por ejemplo si un servidor 
            <acronym>POP</acronym> est&aacute; disponible los usuarios 
            ser&aacute;n capaces de consultar su correo desde la universidad, 
            el trabajo u otras localizaciones remotas, pero dichos usuarios 
            podr&aacute;n enviar correo desde dichas ubicaciones.  
            Es habitual que unos instantes despu&eacute;s del env&iacute;o 
            del correo dichos usuarios reciban un mensaje proveniente del 
	    <application>MAILER-DAEMON</application> con un error como 
	    <errorname>5.7 Relaying Denied</errorname>.</para>

	  <para>Existen varias formas de solventar este problema.  La 
            m&aacute;s sencilla consiste en escribir la direcci&oacute;n 
            IP de su proveedor de servicios dentro del fichero 
 	    <filename>/etc/mail/relay-domains</filename>.  Una forma 
            r&aacute;pida de hacerlo ser&iacute;a:
 	  </para>

	  <screen>&prompt.root; <userinput>echo "un.isp.ficticio.com" &gt; /etc/mail/relay-domains</userinput></screen>

	  <para>Despu&eacute;s de crear o editar dicho fichero se debe 
            reiniciar <application>sendmail</application>.  Esto funciona 
  	    perfectamente si usted es el administrador del servidor y no 
            desea enviar correo localmente o si prefiere utilizar un cliente 
            de correo o cualquier otro sistema en otra m&aacute;quina distinta 
            a la que alberga el servidor de correo.  Es muy &uacute;til sobre 
            todo cuando s&oacute;lamente se tienen una o dos direcciones de 
            correo eletr&oacute;nico.  Si hay en liza un gran n&uacute;mero de 
            direcciones de correo, edite el fichero anterior con su editor de 
            texto favorito y a&ntilde;ada uno a uno los correspondientes 
            dominios.</para>

	  <programlisting>un.isp.ficticio.com
otro.isp.ficticio.net
y.otro.isp.ficticio.org
www.ejemplo.org</programlisting>

	  <para>Ahora, cualquier correo enviado a trav&eacute;s de su sistema 
            por cualquier m&aacute;quina que se encuentre en este fichero 
            (siempre y cuando el usuario tenga una cuenta en nuestro sistema) 
            podr&aacute; ser enviado con &eacute;xito.  
	    Es una manera elegante de permitir a los usuarios enviar 
            correo eletr&oacute;nico desde nuestro servidor de correo sin 
            permitir al resto del mundo que haga lo mismo (lo que se conoce 
            como SPAM).</para>
	</answer>
      </qandaentry>
    </qandaset>
  </sect1>

  <sect1 id="mail-advanced">
    <title>Conceptos Avanzados</title>

    <para>La siguiente secci&oacute;n trata conceptos m&aacute;s 
      espec&iacute;ficos relacionados con la configuraci&oacute;n del correo 
      y la implantaci&oacute;n del servicio de correo en una 
      organizaci&oacute;n.</para>

    <sect2 id="mail-config">
      <title>Configuraci&oacute;n B&aacute;sica</title>
      <indexterm>
        <primary>email</primary>
        <secondary>configuration</secondary>
      </indexterm>

      <para>Por defecto debemos ser capaces de enviar correo a m&aacute;quinas 
        externas, siempre y cuando tengamos nuestro <filename>
	/etc/resolv.conf</filename> bien configurado o ejecutemos nuestro 
        propio servidor de nombres.  Si queremos que el correo para nuestra 
        m&aacute;quina se nos entregue en nuestra propia m&aacute;quina, 
        es decir, a nuestro propio <application>sendmail</application>, 
        en lugar de tener que ir a recogerlo al servidor de correo de 
        nuestra organizaci&oacute;n, podemos usar dos m&eacute;todos:</para>

      <itemizedlist>
        <listitem>
          <para>Ejecutar nuestro propio servidor de nombres y comprar nuestro 
            propio dominio.  Por ejemplo <hostid 
	    role="domainname">FreeBSD.org</hostid></para>
        </listitem>

        <listitem>
          <para>Conseguir la entrega de correo directa hacia nuestra 
            m&aacute;quina.  Esto se logra entregando el correo a la 
            direcci&oacute;n IP que se asocia al nombre de DNS de nuestra 
            m&aacute;quina.  Por ejemplo <hostid
	    role="fqdn">ejemplo.FreeBSD.org</hostid>.</para>
        </listitem>
      </itemizedlist>

      <indexterm><primary>SMTP</primary></indexterm>
      <para>Independientemente de la opci&oacute;n elegida para tener entrega 
        directa en nuestra m&aacute;quina debemos poseer una direcci&oacute;n 
        IP est&aacute;tica (a diferencia de las direcciones din&aacute;micas, 
        que son utilizadas en configuraciones donde se utiliza el protocolo 
        PPP).  Si nos encontramos detr&aacute;s de un cortafuegos se debe 
        permitir el tr&aacute;fico SMTP (puerto 25) hacia nuestra 
        m&aacute;quina. Si adem&aacute;s queremos recibir correo directamente 
        en nuestra m&aacute;quina se deben cumplir los siguientes 
       requisitos:</para>

      <itemizedlist>
        <indexterm><primary>MX record</primary></indexterm>
        <listitem>
          <para>Asegurar que el registro MX de menor numeraci&oacute;n de 
            nuestro DNS apunta a la direcci&oacute;n IP de nuestra 
            m&aacute;quina.</para>
        </listitem>

        <listitem>
          <para>Asegurar que no existe ninguna entrada MX en nuestro DNS para 
           nuestra m&aacute;quina.  Es decir, mientras que el registro MX del 
           punto anterior hace referencia al dominio administrativo que 
           gestionamos con nuestro servidor de nombres, en este apartado se 
           quiere destacar que no debe existir ning&uacute;n registro MX 
           espec&iacute;fico para el nombre concreto de nuestra 
           m&aacute;quina.</para>
        </listitem>
      </itemizedlist>

      <para>Cumpliendo las dos puntualizaciones anteriores podemos recibir 
        correo electr&oacute;nico mediante entrega directa en nuestra 
        m&aacute;quina.</para>

      <para>Por ejemplo:</para>

      <screen>&prompt.root; <userinput>hostname</userinput>
ejemplo.FreeBSD.org
&prompt.root; <userinput>host ejemplo.FreeBSD.org</userinput>
ejemplo.FreeBSD.org has address 204.216.27.XX</screen>

      <para>Si se observa esta configuraci&oacute;n la entrega directa de 
        correo para <email>su_login@ejemplo.FreeBSD.org</email> deber&iacute;a 
        funcionar sin problemas (suponiendo que <application>
        sendmail</application> se est&aacute; ejecutando correctamente en 
        <hostid role="fqdn">ejemplo.FreeBSD.org</hostid>).</para>

      <para>Si en lugar de lo anterior ve algo como esto:</para>

      <screen>&prompt.root; <userinput>host ejemplo.FreeBSD.org</userinput>
ejemplo.FreeBSD.org has address 204.216.27.XX
ejemplo.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org</screen>

      <para>Todos los correos enviados a nuestro host (<hostid
        role="fqdn">ejemplo.FreeBSD.org</hostid>) ser&aacute;n recogidos por 
	<hostid>hub</hostid> bajo el mismo nombre de usuario en lugar de ser 
        enviados directamente a nuestra m&aacute;quina.</para>

      <para>La informaci&oacute;n anterior se gestiona utilizando el servidor 
        de DNS. El registro de DNS que transporta la informaci&oacute;n 
        de encaminamiento de correo eletr&oacute;nico es el 
        registro <emphasis>M</emphasis>ail e<emphasis>X</emphasis>change.  
        Si no existe ning&uacute;n registro MX el correo se entregar&aacute; 
        a la direcci&oacute;n IP que se obtenga de resolver el nombre 
        de dominio que se encuentre a continuaci&oacute;n del nombre de 
        usuario en la direcci&oacute;n de correo de destino (esto es, 
        (despu&eacute;s de la @).</para>

      <para>En un cierto momento la entrada MX para <hostid 
        role="fqdn">freefall.FreeBSD.org</hostid> ten&iacute;a este 
        aspecto:</para>

      <programlisting>freefall		MX	30	mail.crl.net
freefall		MX	40	agora.rdrop.com
freefall		MX	10	freefall.FreeBSD.org
freefall		MX	20	who.cdrom.com</programlisting>

      <para>Como se puede observar, <hostid>freefall</hostid> ten&iacute;a 
        varias entradas MX.  El n&uacute;mero de MX m&aacute;s bajo es la 
        m&aacute;quina que recibe correo directamente si se encuentra 
        disponible; si dicha m&aacute;quina no est&aacute; accesible por 
        alg&uacute;n motivo las otras m&aacute;quinas (llamadas tambi&eacute;n 
        <quote>MXs de backup</quote>) aceptar&aacute;n los mensajes 
        temporalmente, y los transmitir&aacute;n de nuevo cuando alguna 
        m&aacute;quina perteneciente a alguna entrada MX de numeraci&oacute;n 
        m&aacute;s baja se encuentre disponible y el proceso se 
        repetir&aacute; hasta que se alcance la m&aacute;quina que tenga 
        el registro MX m&aacute;s bajo.</para>

      <para>Las organizaciones donde residen los servidores (MX) de backup 
        deber&iacute;an poseer acceso a internet de una forma independiente 
        para minimizar el riesgo de p&eacute;rdida de conectividad.  Nuestro 
        ISP o cualquier otra organizaci&oacute;n independiente deber&iacute;a 
        poder proporcionarnos este servicio sin problemas.</para>
    </sect2>

    <sect2 id="mail-domain">
      <title>Correo para Nuestro Dominio</title>

      <para>Para establecer un <quote>mailhost</quote> (servidor de correo) 
        en nuestra organizaci&oacute;n debemos ser capaces de redirigir el 
        correo destinado a cualquier m&aacute;quina de nuestra 
        organizaci&oacute;n hacia nuestro servidor de correo.  
        B&aacute;sicamente queremos <quote>reclamar</quote> como nuestro 
        cualquier correo destinado a cualquier m&aacute;quina de nuestro 
        dominio (en este caso <hostid 
        role="fqdn">*.FreeBSD.org</hostid>) y desviarlo a nuestro servidor 
        de tal forma que los usuario lean su correo 
        utilizando nuestra m&aacute;quina servidora.</para>

      <indexterm><primary>DNS</primary></indexterm>
      <para>Para hacer las cosas lo m&aacute;s sencillas posible se debe crear 
        una cuenta de usuario (con el mismo <emphasis>
        nombre de usuario</emphasis>) tanto en el servidor de correo como en 
        la m&aacute;quina del usuario o destinatario final del correo.  
	&man.adduser.8; puede usarse para ello.</para>

      <para>El servidor de correo debe funcionar como el agente de transporte 
        predeterminado para todas las m&aacute;quinas de nuestra 
        organizaci&oacute;n.  Esto se realiza mediante la siguiente 
        configuraci&oacute;n del DNS:</para>

      <programlisting>ejemplo.FreeBSD.org	A	204.216.27.XX		; Workstation
			MX	10 hub.FreeBSD.org	; Mailhost</programlisting>

      <para>Esta configuraci&oacute;n redirigir&aacute; el correo para 
        cualquier estaci&oacute;n de trabajo hacia nuestro servidor de correo 
        sin que tengan importancia las direcciones IP asignadas mediante 
        el registro de tipo A.  Recordemos que el correo siempre 
        se encamina utilizando primero los registros de tipo MX.</para>
 
      <para>Normalmente no podremos realizar esta configuraci&oacute;n salvo 
        que estemos ejecutando nuestro propio servidor de DNS 
        para nuestro dominio.  Si no es el caso y no es posible ejecutar 
        nuestro propio servidor de DNS debemos comunicarnos con nuestro 
        proveedor de servicios o con quien pueda proporcionarnos servicio de 
        DNS y solicitarle una modificaci&oacute;n como la anterior.</para>

      <para>Si adem&aacute;s ofrecemos servicios de alojamiento virtual de 
        correo la siguiente informaci&oacute;n puede resultar &uacute;til.  
        Asumiremos que tenemos un cliente con su propio dominio, por ejemplo 
        <hostid role="domainname">cliente1.org</hostid> y queremos que todo el 
        correo enviado a <hostid 
	role="domainname">cliente1.org</hostid> sea redirigido hasta nuestro 
        servidor de correo, <hostid 
	role="fqdn">mail.nuestroservidor.com</hostid>.  La entrada necesaria 
        en el DNS deber&iacute;a ser la siguiente:</para>

      <programlisting>cliente1.org		MX	10	mail.nuestroservidor.com</programlisting>

      <para>No necesitamos <emphasis>ning&uacute;n</emphasis> registro de tipo 
        A para <hostid 
        role="domainname">cliente1.org</hostid> si s&oacute;lamente queremos 
        gestionar el correo para ese dominio.
      </para>

      <note>
	<para>Tenga en cuenta que un ping a <hostid
	  role="domainname">cliente1.org</hostid> no funcionar&aacute; a menos 
          que exista un registro de tipo A para dicha m&aacute;quina.
        </para>
      </note>

      <para>La &uacute;ltima cosa que debemos realizar en nuestro servidor de 
        correo es comunicar a <application>sendmail</application> para 
        qu&eacute; dominios y/o m&aacute;quinas debe aceptar correo.  Existen 
        varias formas en las que se puede realizar esta tarea.  
        Cualquiera de las siguiente funcionar&aacute;:</para>

      <itemizedlist>
        <listitem>
	  <para>A&ntilde;adir las m&aacute;quinas deseadas al fichero 
	  <filename>/etc/mail/local-host-names</filename> si se est&aacute; 
          utlizando la macro 
	  <literal>FEATURE(use_cw_file)</literal>.  Si se est&aacute; 
          utilizando una versi&oacute;n de <application>
          sendmail</application> anterior a la 8.10 el fichero que se debe 
	  utilizar es <filename>/etc/sendmail.cw</filename>.</para>
	</listitem>

	<listitem>
	  <para>A&ntilde;adir la l&iacute;nea <literal>
            Cwsu.servidor.com</literal> al fichero 
	    <filename>/etc/sendmail.cf</filename> o 
	    <filename>/etc/mail/sendmail.cf</filename> si se est&aacute; 
            utilizando una versi&oacute;n de <application>
            sendmail</application> posterior a la versi&oacute;n 8.10.</para>
	</listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 id="SMTP-UUCP">
  <title>SMTP con UUCP</title>

    <para>La configuraci&oacute;n de <application>sendmail</application> que 
      se proporciona con la distribuci&oacute;n de FreeBSD est&aacute; 
      dise&ntilde;ada para organizaciones que se conectan directamente a 
      internet.  Las organizaciones que dese&eacute;n enviar y recibir 
      sus correos utilizando UUCP deben instalar otro fichero de 
      configuraci&oacute;n para <application>
      sendmail</application>.</para>

    <para>El ajuste de forma manual del archivo <filename>
      /etc/mail/sendmail.cf</filename> es un tema para expertos.  
      La versi&oacute;n 8 de <application>sendmail</application> genera 
      ficheros de configuraci&oacute;n mediante el preprocesador 
      &man.m4.1;, gracias al que las opciones de configuraci&oacute;n se 
      pueden escribir utilizando un nivel de abstracci&oacute;n mayor.  
      Los archivos de configuraci&oacute;n de &man.m4.1; se pueden encontrar 
      en <filename>/usr/src/usr.sbin/sendmail/cf</filename>.</para>

    <para>Si no se instal&oacute; el sistema base con todas las fuentes el 
      conjunto de ficheros de configuraci&oacute;n de <application>
      sendmail</application> se puede obtener a partir de un paquete de 
       fuentes determinado.  Suponiendo que tengamos el CDROM con el 
       c&oacute;digo fuente de FreeBSD montado se puede ejecutar:</para>

    <screen>&prompt.root; <userinput>cd /cdrom/src</userinput>
&prompt.root; <userinput>cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail</userinput></screen>

    <para>Este comando extrae s&oacute;lamente unos pocos cientos de 
      kilobytes. El fichero <filename>README</filename> que hay en 
      el directorio <filename>cf</filename> puede servirle como 
      una introducci&oacute;n b&aacute;sica a la configuraci&oacute;n 
      mediante &man.m4.1;.</para>

    <para>La mejor forma de soportar la entrega de correo mediante UUCP es 
      utilizando la caracter&iacute;stica <literal>mailertable</literal>.  
      Esta caracter&iacute;stica crea una base de datos que 
      <application>sendmail</application> utiliza para tomar decisiones de 
      encaminamiento.</para>

    <para>En primer lugar creamon el fichero <filename>.mc</filename>.  
      El directorio <filename>/usr/src/usr.sbin/sendmail/cf/cf</filename> 
      alberga varios ejemplos del mismo.  Suponiendo que nuestro fichero 
      configuraci&oacute;n se llama 
      <filename>foo.mc</filename> para convertir dicho archivo en un fichero 
      <filename>sendmail.cf</filename> v&aacute;lido basta con ejecutar lo 
      siguiente:</para>

    <screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/sendmail/cf/cf</userinput>
&prompt.root; <userinput>make foo.cf</userinput>
&prompt.root; <userinput>cp foo.cf /etc/mail/sendmail.cf</userinput></screen>

    <para>Un fichero <filename>.mc</filename> suele tener este aspecto:</para>

    <programlisting>VERSIONID(`<replaceable>Su n&uacute;mero de versi&oacute;n</replaceable>') OSTYPE(bsd4.4)

FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')

define(`UUCP_RELAY', <replaceable>su.relay.uucp</replaceable>)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')

MAILER(local)
MAILER(smtp)
MAILER(uucp)

Cw    <replaceable>alias.de.su.servidor</replaceable>
Cw    <replaceable>nombredesunodouucp.UUCP</replaceable></programlisting>

    <para>Las l&iacute;neas que contienen
      <literal>accept_unresolvable_domains</literal>,
      <literal>nocanonify</literal>, y
      <literal>confDONT_PROBE_INTERFACES</literal> proh&iacute;ben la 
      utilizaci&oacute;n del DNS durante la entrega de correo.  
      La cl&aacute;usula  <literal>UUCP_RELAY</literal> es necesaria 
      para soportar entrega mediante UUCP.  Lo &uacute;nico que hay que hacer 
      es escribir un nombre de m&aacute;quina en ese punto. 
      Dicha m&aacute;quina debe ser capaz de gestionar las direcciones del 
      pseudo-dominio .UUCP; en la mayor&iacute;a de los casos se escribe en 
      este punto el nombre de la m&aacute;quina perteneciente al proveedor de 
      servicios que hace de relay.</para>

    <para>Una vez que tenemos esto configurado se necesita un fichero 
      <filename>/etc/mail/mailertable</filename>.  Si solamente tenemos un 
      enlace con el exterior, que usamos para todos nuestro correos, 
      basta una configuraci&oacute;n como la que se muestra a 
      continuaci&oacute;n:</para>
  
    <programlisting>#
# makemap hash /etc/mail/mailertable.db &lt; /etc/mail/mailertable
.                             uucp-dom:<replaceable>su.relay.uucp</replaceable></programlisting>

    <para>Un ejemplo m&aacute;s complejo puede parecerse al siguiente:</para>

    <programlisting>#
# makemap hash /etc/mail/mailertable.db &lt; /etc/mail/mailertable
#
horus.interface-business.de   uucp-dom:horus
.interface-business.de        uucp-dom:if-bus
interface-business.de         uucp-dom:if-bus
.heep.sax.de                  smtp8:%1
horus.UUCP                    uucp-dom:horus
if-bus.UUCP                   uucp-dom:if-bus
.                             uucp-dom:</programlisting>


    <para>Las primeras tres l&iacute;neas se encargan de manejar casos 
      especiales en los que el correo dirigido directamente al dominio no se 
      env&iacute;a a la ruta por defecto sino a alg&uacute;n vecino UUCP para 
      acortar el n&uacute;mero de saltos involucrados en la entrega de dichos 
      correos.  
      La siguiente l&iacute;nea gestiona el correo para el dominio ethernet 
      local, el cual puede ser entregado utilizando SMTP.  Finalmente los 
      vecinos UUCP se mencionan en la notaci&oacute;n de pseudo-dominio 
      .UUCP para permitir que un  
      <literal><replaceable>vecino UUCP receptor</replaceable></literal> 
      de correo pueda sobreescribir las reglas por defecto.  La &uacute;ltima 
      l&iacute;nea siempre es un punto; se asocia con cualquier otra cosa que 
      no ha sido tratada en reglas anteriores y donde se realiza entrega UUCP  
      a un vecino UUCP que sirve como pasarela de correo universal para todo 
      el mundo.  Todos los nombres de m&aacute;quinas bajo la clave 
      <literal>uucp-dom:</literal> deben ser vecinos UUCP v&aacute;lidos, lo 
      cual se puede verificar utilizando el comando <literal>
      uuname</literal>.</para>

    <para>Recuerde que este fichero debe convertirse en una base de datos DBM 
      antes de que usarse.  El comando que se utiliza para realizar esta tarea 
      se suele especificar como un comentario al principio del fichero 
      <filename>mailertable</filename>.  Cada vez que se modifique el fichero 
      <filename>mailertable</filename> se debe ejecutar dicho comando.</para>

    <para>Un consejo final:  si dudamos sobre una determinada ruta de 
      encaminamiento de correo se puede ejecutar <application>
      sendmail</application> con el par&aacute;metro <option>-bt</option>. 
      Este par&aacute;metro ejecuta <application>sendmail</application> 
      en <emphasis>modo prueba de direcciones</emphasis>;  
      simplemente basta con escribir <literal>3,0</literal> seguido por la 
      direcci&oacute;n de correo de la que queremos comprobar su correcto 
      encaminamiento.  La &uacute;ltima l&iacute;nea nos dice el agente de 
      correo interno que se utiliza, la m&aacute;quina de destino con que el 
      agente ser&aacute; invocado y la direcci&oacute;n (posiblemente 
      traducida) de correo.  Se puede abandonar este modo de funcionamiento 
      escribiendo <keycombo action="simul"><keycap>Ctrl</keycap><keycap>D</keycap></keycombo>.</para>

    <screen>&prompt.user; <userinput>sendmail -bt</userinput>
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter &lt;ruleset&gt; &lt;address&gt;
<prompt>&gt;</prompt> <userinput>3,0 prueba@ejemplo.com</userinput>
canonify           input: foo @ example . com
...
parse            returns: $# uucp-dom $@ <replaceable>su.relay.uucp</replaceable> $: prueba &lt; @ ejemplo . com . &gt;
<prompt>&gt;</prompt> <userinput>^D</userinput></screen>
  </sect1>

  <sect1 id="outgoing-only">
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Bill</firstname>
          <surname>Moran</surname>
          <contrib>Escrito por </contrib>
        </author>
      </authorgroup>
    </sect1info>

    <title>Configuraci&oacute;n para s&oacute;lamente enviar correo</title>

    <para>Existen multitud de casos en los que  puede bastarnos con enviar 
      nuestro correo a trav&eacute;s de una pasarela o relay.  He aqu&iacute; 
      algunos de ellos:</para>

    <itemizedlist>
      <listitem>
	<para>Nuestra computadora es una m&aacute;quina de escritorio, pero 
          queremos ser capaces de utilizar programas como &man.send-pr.1;.  
          Para ello se deber&iacute;a utilizar el relay de nuestro ISP.</para>
      </listitem>

      <listitem>
	<para>Nuestra computadora es un servidor que no gestiona correo de 
          forma local, si no que necesita pasar todos los correos recibidos 
          una pasarela que se encarga de su procesamiento y entrega 
          final.</para>
      </listitem>
    </itemizedlist>

    <para>Casi cualquier <acronym>MTA</acronym> es capaz de actuar como 
      pasarela o relay.  Por desgracia configurar un MTA para que s&oacute;lo 
      gestione correo saliente puede ser muy complicado.  Programas del estilo 
      de <application>sendmail</application> y <application>
      postfix</application> son demasiado pesados para realizar 
      s&oacute;lamente esta tarea.</para>

    <para>Si adem&aacute;s estamos utilizando un servicio de acceso a internet 
      t&iacute;pico nuestro contrato puede prohibir expl&iacute;citamente 
      la ejecuci&oacute;n de un servidor de correo (o los puertos pueden estar 
      filtrados).</para>

    <para>La forma m&aacute;s sencilla de utilizar un servicio de pasarela es 
     mediante la instalaci&oacute;n del port
     <filename role="package">mail/ssmtp</filename>.  Basta con ejecutar el 
     siguiente comando como <username>root</username>:</para>

    <screen>&prompt.root; <userinput>cd /usr/ports/mail/ssmtp</userinput>
&prompt.root; <userinput>make install replace clean</userinput></screen>

    <para>Una vez que ha sido instalado <filename 
      role="package">mail/ssmtp</filename> podemos configurarlo 
      mediante un fichero de s&oacute;lo cuatro l&iacute;neas ubicado en 
      <filename>/usr/local/etc/ssmtp/ssmtp.conf</filename>:</para>

    <programlisting>root=sudireccionrealdecorreo@ejemplo.com
mailhub=mail.ejemplo.com
rewriteDomain=ejemplo.com
hostname=_HOSTNAME_</programlisting>

    <para>Debemos asegurarnos de que se utiliza una direcci&oacute;n de correo 
      real para <username>root</username>.  Se debe introducir nuestra 
      pasarela de correo en lugar de <hostid role="fqdn">
      mail.ejemplo.com</hostid> (algunos ISP llaman a la pasarela 
      <quote>servidor de correo saliente</quote>  o simplemente 
      <quote>servidor SMTP</quote>).</para>

    <para>Debemos asegurarnos de que se desactiva 
      <application>sendmail</application> mediante 
      <literal>sendmail_enable="NONE"</literal>
      en <filename>/etc/rc.conf</filename>.</para>

    <para><filename role="package">mail/ssmtp</filename> acepta algunas otras 
      opciones.  Consulte el fichero de ejemplo que encontrar&aacute; en 
      <filename>/usr/local/etc/ssmtp</filename>; consulte tambi&eacute;n 
      la p&aacute;gina de manual de <application>ssmtp</application>, 
      en la que hay m&aacute;s ejemplos e informaci&oacute;n al respecto.
      </para>

    <para>Ejecutar <application>ssmtp</application> de esta forma permite que 
      cualquier software de nuestra computadora que necesite enviar correo 
      funcione sin problemas y a la vez poder cumplir con las normas 
      estipuladas en el contrato con nuestro ISP. Al mismo tiempo evitamos el 
      uso de nuestro servidor de correo por parte de <quote>
      spammers</quote>.</para>
  </sect1>

  <sect1 id="SMTP-dialup">
    <title>Utilizaci&oacute;n del correo con una conexi&oacute;n mediante m&oacute;dem anal&oacute;gico (dial-up)</title>

    <para>Si se dispone de una direcci&oacute;n IP privada no es necesario 
      realizar ning&uacute;n ajuste a partir de la configuraci&oacute;n por 
      defecto.  Basta con asignar como nombre de nuestra m&aacute;quina el 
      nombre que tenemos registrado en el DNS y <application>
      sendmail</application> se encargar&aacute; del resto.</para>

    <para>Por otra parte si utilizamos una conexi&oacute;n temporal a internet 
      mediante PPP y se nos asigna una direcci&oacute;n IP 
      de forma din&aacute;mica, lo m&aacute;s normal es tener nuestras 
      carpetas de correo alojadas en el servidor de correo de 
      nuestro proveedor de servicios.  Supongamos que el dominio de nuestro 
      ISP es <hostid 
      role="domainname">ejemplo.net</hostid> y que nuestro nombre de usuario 
      es <username>usuario</username>; adem&aacute;s hemos llamado a nuestra 
      <username>user</username>, adem&aacute;s, hemos llamado a nuestra 
      m&aacute;quina <hostid 
      role="fqdn">bsd.home</hostid>, y nuestro ISP nos ha comunicado que 
      debemos utilizar como pasarela la m&aacute;quina <hostid 
      role="fqdn">relay.ejemplo.net</hostid>.</para>

    <para>Para recuperar correo de nuestra carpeta de correo se debe instalar 
      un agente de recuperaci&oacute;n autom&aacute;tica de correo.  
      <application>fetchmail</application> es una buena elecci&oacute;n puesto 
      que permite utilizar varios protocolos.  Este programa est&aacute; 
      disponible como un paquete y tambi&eacute;n desde la colecci&oacute;n de 
      ports  (<filename 
      role="package">mail/fetchmail</filename>).  Normalmente nuestro 
      <acronym>ISP</acronym> proporciona <acronym>POP</acronym> 
      <acronym>POP</acronym>.  Si utilizamos <acronym>ppp</acronym> a nivel de 
      usuario se puede recuperar autom&aacute;ticamente el correo cuando se 
      establece la conexi&oacute;n <acronym>ppp</acronym> utilizando 
      el fichero <filename>/etc/ppp/ppp.linkup</filename>:</para>

    <programlisting>MYADDR:
!bg su user -c fetchmail</programlisting>

    <para>Si utilizamos <application>sendmail</application> (como se muestra 
      m&aacute;s adelante) para entregar correo a cuentas remotas 
      probablemente queramos que <application>sendmail</application> 
      procese nuestras colas de correo tan pronto como nuestra conexi&oacute;n 
      de internet se establezca.  Para ello escriba el siguiente comando tras 
      el comando de <command>fetchmail</command> que hemos escrito antes en 
      el fichero  <filename>/etc/ppp/ppp.linkup</filename>:</para>

    <programlisting>  !bg su user -c "sendmail -q"</programlisting>

    <para>Asumiendo que tenemos una cuenta para el usuario
      <username>usuario</username> en <hostid
      role="fqdn">bsd.home</hostid>.  En el directorio <quote>home</quote> 
       del usuario <username>usuario</username> en la m&aacute;quina 
      <hostid role="fqdn">bsd.home</hostid> debemos crear un fichero 
      <filename>.fetchmailrc</filename> con el siguiente contenido:</para>

    <programlisting>poll ejemplo.net protocol pop3 fetchall pass Secr3To</programlisting>

    <para>Este fichero debe tener permisos de lectura s&oacute;lo para el 
      propio due&ntilde;o  ya que contiene la contrase&ntilde;a de acceso 
      a nuestra cuenta de POP en nuestro ISP (<literal>
      Secr3To</literal>).</para>

    <para>Para poder enviar correo con la cabecera <literal>from:</literal> 
      correcta, debemos decir a 
      <application>sendmail</application> que utilice 
      <literal>usuario@ejemplo.net</literal> en vez de 
      <literal>usuario@bsd.home</literal>.  Siguiendo con nuestro ejemplo 
      es necesario decirle a <application>sendmail</application> que 
      env&iacute;e todo el correo a trav&eacute;s de la pasarela 
      <hostid role="fqdn">relay.ejemplo.net</hostid>.</para>

    <para>El siguiente fichero de configuraci&oacute;n 
      <filename>.mc</filename> debe ser suficiente para cumplir 
      con las anteriores tareas:</para>

    <programlisting>VERSIONID(`bsd.home.mc version 1.0')
OSTYPE(bsd4.4)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Cwlocalhost
Cwbsd.home
MASQUERADE_AS(`ejemplo.net')dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(nocanonify)dnl
FEATURE(nodns)dnl
define(`SMART_HOST', `relay.ejemplo.net')
Dmbsd.home
define(`confDOMAIN_NAME',`bsd.home')dnl
define(`confDELIVERY_MODE',`deferred')dnl</programlisting>

    <para>En la secci&oacute;n anterior se explica c&oacute;mo convertir este 
      fichero <filename>.mc</filename>  en un fichero de 
      configuraci&oacute;n para <application>sendmail</application>, 
      <filename>sendmail.cf</filename>. No debemos olvidar 
      reiniciar <application>sendmail</application> 
      despu&eacute;s de mofidificar el fichero <filename>
      sendmail.cf</filename>.</para>
  </sect1>

  <sect1 id="SMTP-Auth">
    <sect1info>
    <authorgroup>
      <author>
        <firstname>James</firstname>
        <surname>Gorham</surname>
        <contrib>Escrito por </contrib>
      </author>
    </authorgroup>
    </sect1info>

    <title>Autentificaci&oacute;n utilizando SMTP</title>

    <para>La autentificaci&oacute;n mediante SMTP puede proporcionarnos 
      diversas ventajas.  A&ntilde;ade una capa adicional de seguridad a   
      a <application>sendmail</application> y adem&aacute;s proporciona a los 
      usuarios m&oacute;viles (usuarios que cambian de m&aacute;quina) 
      la posibilidad de mantener el mismo servidor de correo sin necesidad de 
      reconfigurar sus agentes de usuario de correo cada vez que se 
      trasladan.</para>

    <procedure>
      <step>
	<para>Instalar <filename role="package">security/cyrus-sasl</filename>
	  desde los ports.  Se puede encontrar dicho port en 
	  <filename role="package">security/cyrus-sasl</filename>.  
	  <filename role="package">security/cyrus-sasl</filename> pos&eacute;e 
          varias opciones en tiempo de compilaci&oacute;n pero para el 
          m&eacute;todo en particular  que se va a explicar en esta 
          secci&oacute;n basta con asegurarse de seleccionar 
          la opci&oacute;n <option>pwcheck</option>.</para>
      </step>


      <step>
	<para>Despu&eacute;s de instalar <filename 
          role="package">security/cyrus-sasl</filename>, 
	  edite <filename>/usr/local/lib/sasl/Sendmail.conf</filename> 
	  (o cr&eacute;elo si no existe) y a&ntilde;ada la siguiente 
          l&iacute;nea:</para>

	<programlisting>pwcheck_method: passwd</programlisting>

	<para>Este m&eacute;todo activa la autentificaci&oacute;n de 
          <application>sendmail</application> contra nuestra base de 
	  datos de FreeBSD, <filename>passwd</filename>.  
          Esto nos evita el problema de tener que crear un nuevo conjunto de 
          usuarios y contrase&ntilde;as  para cada usuario que necesite 
          validarse mediante SMTP y adem&aacute;s nos permite mantener el 
          mismo <quote>login</quote> y contrase&ntilde;a que los usuarios 
          utilizan para acceder a sus cuentas para el acceso al correo 
          electr&oacute;nico.</para>
      </step>

      <step>
	<para>Editar<filename>/etc/make.conf</filename> y a&ntilde;adir las 
          siguientes l&iacute;neas:</para>

	<programlisting>SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl</programlisting>

	<para>Estas l&iacute;neas proporcionan a <application>
        sendmail</application> las opciones de configuraci&oacute;n necesarias 
	para enlazar con <filename role="package">cyrus-sasl</filename> en 
        tiempo de compilaci&oacute;n.  Debemos asegurarnos de que <filename 
	role="package">cyrus-sasl</filename> ha sido instalado correctamente 
	recompilar <application>sendmail</application>.</para>
      </step>

      <step>
	<para>Recompile <application>sendmail</application> utilizando el 
          siguiente comando:</para>

	<screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/sendmail</userinput>
&prompt.root; <userinput>make cleandir</userinput>
&prompt.root; <userinput>make obj</userinput>
&prompt.root; <userinput>make</userinput>
&prompt.root; <userinput>make install</userinput></screen>

	<para>La compilaci&oacute;n de <application>sendmail</application> no 
          deber&iacute;a dar problemas siempre y cuando 
	  <filename>/usr/src</filename> no haya cambiado sustancialmente y 
          siempre y cuando las bibliotecas compartidas 
          necesarias se encuentren disponibles.</para>
      </step>

      <step>
	<para>Una vez que <application>sendmail</application> se ha compilado 
          y reinstalado con correctamente debemos editar el fichero 
	  <filename>/etc/mail/freebsd.mc</filename> (o el fichero que se 
	  utilice como <filename>.mc</filename> de referencia.  Hay 
          administradores que  escogen utilizar la salida de &man.hostname.1; 
          como el nombre del fichero <filename>.mc</filename> que se utiliza 
          para la configuraci&oacute;n de sendmail por motivos de 
          uniformidad ).  A&ntilde;ada las siguientes l&iacute;neas a dicho 
          fichero:</para>

	<programlisting>dnl set SASL options
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl</programlisting>

	<para>Estas opciones configuran los distintos m&eacute;todos 
        de que dispone <application>sendmail</application> para validar a 
        los usuarios de correo.  Si se desea utilizar otro m&eacute;todo
        distinto a <application>pwcheck</application> por favor consulte 
        la documentaci&oacute;n.</para> 
      </step>

      <step>
	<para>Para terminar ejecutamos &man.make.1; mientras nos encontramos 
          dentro de <filename>/etc/mail</filename>. 
	  Este comando trata el fichero <filename>.mc</filename> y crea el 
          fichero <filename>.cf</filename> correspondiente 
          (con el mismo nombre que el anterior pero terminado en .cf).  
          A continuaci&oacute;n se utiliza el comando <command>
          make install restart</command>, el cual copia el fichero .cf 
          reci&eacute;n generado al fichero <filename>
          sendmail.cf</filename> y a continuaci&oacute;n reinicia 
          <application>sendmail</application>.  
	  Para m&aacute;s informaci&oacute;n sobre este proceso puede 
          consultarse el contenido de 
          <filename>/etc/mail/Makefile</filename>.</para>
      </step>
    </procedure>

    <para>Si todo lo anteriormente comentado ha funcionado correctamente 
       deber&iacute;amos ser capaces de introducir la informaci&oacute;n de 
      nuestro <quote>login</quote> en nuestro cliente de correo y enviar un 
      mensaje de prueba.  Para investigar m&aacute;s a fondo estos temas se 
      puede habilitar la opci&oacute;n <option>LogLevel</option> de 
      <application>sendmail</application> al valor 13 y observar detenidamente 
      el archivo <filename>/var/log/maillog</filename> en busca de posibles 
      mensajes de error.</para>

    <para>Puede ser necesario a&ntilde;adir las siguientes l&iacute;neas al 
      fichero <filename>/etc/rc.conf</filename> de modo que el servicio 
      explicado en esta secci&oacute;n se encuentre disponible 
      autom&aacute;ticamente desde el arranque:</para>

    <programlisting>sasl_pwcheck_enable="YES"
sasl_pwcheck_program="/usr/local/sbin/pwcheck"</programlisting>

    <para>Esto permite que la inicializaci&oacute;n de <acronym>SMTP_AUTH</acronym> se produzca durante el arranque del sistema.</para>

    <para>Para m&aacute;s informaci&oacute;n por favor visite la p&aacute;gina 
      <ulink url="http://www.sendmail.org/~ca/email/auth.html">
      autentificaci&oacute;n <acronym>SMTP</acronym></ulink> 
       de <application>sendmail</application>·</para>

  </sect1>

  <sect1 id="mail-agents">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Marc</firstname>
	  <surname>Silver</surname>
	  <contrib>Escrito por </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Agente de Correo de Usuario</title>

    <indexterm>
      <primary>Agentes de Correo de Usuario</primary>
    </indexterm>

    <para>Un agente de correo de usuario (<acronym>MUA</acronym> en 
      ingl&eacute;s Mail User Agent) es una aplicaci&oacute;n 
      que se utiliza para enviar y recibir correo.  Coomo el correo 
      electr&oacute;nico est&aacute; en constante evoluci&oacute;n 
      y cada vez se vuelve m&aacute;s complejo y con m&aacute;s opciones, 
      los MUAs son cada vez m&aacute;s complejos y potentes.  
      Esto permite a los usuarios disponer de mayor flexibilidad y 
      funcionalidad.  &os; admite para much&iacute;simos 
      agentes de correo de usuario, todos los cuales pueden instalarse 
      desde los 
      <link linkend="ports">Ports</link>.  Los usuarios pueden elegir entre 
       lientes de correo con interfaz gr&aacute;fica como 
      <application>evolution</application> o <application>balsa</application> 
      o entre clientes basados en consola como 
      <application>mutt</application>, <application>pine</application> 
      o <command>mail</command>, e incluso utilizar interfaces web.</para>

    <sect2 id="mail-command">
      <title>mail</title>

      <para>&man.mail.1; es el agente de correo de usuario 
	(<acronym>MUA</acronym>) que viene por defecto con &os;.  Es un MUA de 
	consola que ofrece toda la funcionalidad b&aacute;sica 
        necesaria para enviar y recibir correos, aunque resulta limitado 
        limitado en su capacidad para manejar adjuntos y s&oacute;lamente 
	soporta carpetas de correo locales.</para>

      <para>Aunque <command>mail</command> no soporta de forma nativa la 
        interacci&oacute;n con servidores de correo mediante 
	<acronym>POP</acronym> o 
	<acronym>IMAP</acronym> estas carpetas de correo remotas pueden 
	descargarse a un fichero 
        <filename>mbox</filename> local utilizando una aplicaci&oacute;n de 
	descarga como <application>fetchmail</application>, que se describe 
        en este mismo cap&iacute;tulo en (<xref 
	linkend="mail-fetchmail">).</para>

      <para>Para enviar y recibir correo eletr&oacute;nico basta con 
        ejecutar el comando 
	<command>mail</command>. Veamos un ejemplo:</para>

      <screen>&prompt.user; <userinput>mail</userinput></screen>

      <para>El contenido de la carpeta de usuario en el directorio 
	<filename role="directory">/var/mail</filename> se leen 
	autom&aacute;ticamente. 
	Si la carpeta se encuentra vac&iacute;a la aplicaci&oacute;n termina 
	su ejecuci&oacute;n con un mensaje que indica que no ha podido 
        encontrar correo.  Una vez que la carpeta ha sido
        le&iacute;da la interfaz de la aplicaci&oacute;n entra en 
	funcionamiento y se muestra por pantalla un listado de los 
        mensajes recuperados.  Los mensajes se numeran 
	autom&aacute;ticamente y pueden leerse como se observa en el 
        siguiente ejemplo:</para>

      <screen>Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/marcs": 3 messages 3 new
>N  1 root@localhost        Mon Mar  8 14:05  14/510   "test"
 N  2 root@localhost        Mon Mar  8 14:05  14/509   "user account"
 N  3 root@localhost        Mon Mar  8 14:05  14/509   "sample"</screen>

      <para>Los mensajes se pueden leer utilizando el comando <keycap>
      t</keycap> de <command>mail</command> escribiendo a continuaci&oacute;n 
	el n&uacute;mero del mensaje que queremos leer.  
        En este ejemplo vamos a leer el primer correo:</para>

      <screen>& <userinput>t 1</userinput>
Message 1:
From root@localhost  Mon Mar  8 14:05:52 2004
X-Original-To: marcs@localhost
Delivered-To: marcs@localhost
To: marcs@localhost
Subject: test
Date: Mon,  8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)

This is a test message, please reply if you receive it.</screen>

      <para>Como podemos observar en el ejemplo anterior el comando 
        <keycap>t</keycap> muestra el contenido del correo 
	eletr&oacute;nico con todas sus cabeceras.  Para mostrar el 
        listado con todos los correos de nuevo, se debe utilizar la tecla 
        <keycap>h</keycap>.</para>

      <para>Si el correo eletr&oacute;nico requiere una contestaci&oacute;n 
         se puede utilizar la aplicaci&oacute;n 
	<command>mail</command> para responder utilizando la tecla
	<keycap>R</keycap> o <keycap>r</keycap>.   La tecla 
	<keycap>R</keycap> indica a 
	<command>mail</command> que conteste s&oacute;lo al origen (remitente) 
	del correo, mientras que la tecla <keycap>r</keycap> tanto  
        al remitente a los otros usuarios receptores del mensaje original.  
        Adem&aacute;s ambos comandos se pueden ejecutar escribiendo a 
	continuaci&oacute;n el n&uacute;mero que identifica al mensaje que 
        se quiere responder.  Tras esto la respuesta puede redactarse 
        , y se debe indicar el final del mensaje mediante un punto 
        (<keycap>.</keycap>) a continuaci&oacute;n de un salto de 
	l&iacute;nea.  Veamos un ejemplo:</para>

      <screen>& <userinput>R 1</userinput>
To: root@localhost
Subject: Re: test

<userinput>Thank you, I did get your email.
.</userinput>
EOT</screen>

      <para>Para enviar nuevos correos eletr&oacute;nicos se debe utilizar 
        la tecla <keycap>m</keycap> seguida de la direcci&oacute;n de 
	de correo del destinatario.  Se pueden especificar varios 
	destinatarios de correo separando cada direcci&oacute;n de correo 
        con una coma ( <keycap>,</keycap> ).  
        El asunto del mensaje de correo se puede escribir a 
	continuaci&oacute;n seguido por el cuerpo del mensaje.  El final del 
        mensaje se especifica como en el caso anterior, utilizando un 
	<keycap>.</keycap> tras un saldo de l&iacute;nea y pulsando la 
	tecla <quote>enter</quote>.</para>

      <screen>& <userinput>mail root@localhost</userinput>
Subject: <userinput>I mastered mail

Now I can send and receive email using mail ... :)
.</userinput>
EOT</screen>

      <para>Mientras nos encontremos dentro de la <command>mail</command> 
        el comando <keycap>?</keycap> puede utilizarse para mostrar la 
	ayuda en l&iacute;nea aunque la principal fuente de informaci&oacute;n 
        detallda sobre esta aplicaci&oacute;n es la p&aacute;gina man 
	&man.mail.1;.</para>

      <note>
        <para>Tal y como se ha dicho ya la aplicaci&oacute;n &man.mail.1; 
	no fue dise&ntilde;ada originalmente para gestionar adjuntos, por 
          lo que su forma de gestionarlos resulta ser extremadamente mala.  
          <acronym>MUA</acronym> m&aacute;s modernos como <application>
	  mutt</application> gestionan los adjuntos de correo 
          de una forma mucho m&aacute;s inteligente.  Si se desea utilizar el 
	  comando <command>mail</command> el port <filename 
          role="package">converters/mpack</filename> le puede resultar 
	  bastante &uacute;til.</para>
      </note>
    </sect2>

    <sect2 id="mutt-command">
      <title>mutt</title>

      <para><application>mutt</application> es un agente de correo de usuario 
         peque&ntilde;o pero muy potente, funcional y con excelentes 
         caracter&iacute;sticas; veamos algunas:</para>

      <itemizedlist>
        <listitem>
	  <para>La habilidad de agrupar mensajes en hilos.</para>
        </listitem>

        <listitem>
	  <para>Soporte de PGP para cifradon y firma digital de correos 
	    eletr&oacute;nicos.</para>
        </listitem>

        <listitem>
	  <para>Soporte de tipos MIME.</para>
        </listitem>

        <listitem>
	  <para>Soporte de gesti&oacute;n de correo en formato Maildir.</para>
        </listitem>

        <listitem>
	  <para>Altamente configurable por el usuario.</para>
        </listitem>
      </itemizedlist>

      <para>Toda estas caracter&iacute;sticas hacen de 
	<application>mutt</application> uno de los agentes de correo 
	m&aacute;s avanzados del momento.  
	Consulte <ulink url="http://www.mutt.org"></ulink> para m&aacute;s 
	informaci&oacute;n sobre <application>mutt</application>.</para>

      <para>La versi&oacute;n estable de <application>mutt</application> se 
        puede instalar usando el port <filename 
        role="package">mail/mutt</filename> mientras que la versi&oacute;n de 
	desarrollo est&aacute; en <filename 
	role="package">mail/mutt-devel</filename>.  Una vez que se ha 
	instalado el port, <application>mutt</application> puede ejecutarse 
	mediante el siguiente comando:</para>	

      <screen>&prompt.user; <userinput>mutt</userinput></screen>

      <para><application>mutt</application> lee autom&aacute;ticamente el 
        contenido de la carpeta de correo del usuario dentro del directorio 
	<filename role="directory">/var/mail</filename> y muestra por pantalla 
	su contenido.  Si el directorio est&aacute; vac&iacute;o   
        <application>mutt</application>  
        quedar&aacute; a la espera de los comandos que pueda pasarle el 
	usuario.  En el ejemplo que se muestra a continuaci&oacute;n 
        puede verse c&oacute;mo <application>mutt</application> facilita 
	la lista de mensajes al usuario:</para>


      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/mutt1" format="PNG">
	</imageobject>
      </mediaobject>

      <para>Para leer un correo basta con seleccionarlo usando las teclas de cursor, y
        presionando la tecla <keycap>Enter</keycap>.  Veamos c&oacute;mo 
	muestra <application>mutt</application> un correo 
	electr&oacute;nico:</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/mutt2" format="PNG">
	</imageobject>
      </mediaobject>

      <para>Al igual que ocurre con &man.mail.1; 
	<application>mutt</application> permite que los usuarios contesten al 
	remitente de cualquier mensaje as&iacute; como a los dem&aacute;s 
        receptores.  Para responder s&oacute;lo al remitente se puede utilizar 
        la tecla <keycap>r</keycap>.  Para responder a un grupo, es decir a 
	todos los receptores y al remitente del correo 
        eletr&oacute;nico pulse <keycap>g</keycap>.</para>

      <note>
	<para><application>mutt</application> tiene &man.vi.1; 
	  como editor por defecto para crear y responder a los mensajes de 
	  correo eletr&oacute;nico.  Si prefiere emplear otro editor 
	  modifique el valor de la variable <literal>editor</literal> en 
	  <filename>.muttrc</filename>.</para>
      </note>

      <para>Para escribir un mensaje de correo presione la tecla 
	<keycap>m</keycap>.  Despu&eacute;s de escribir el asunto 
	<application>mutt</application> ejecuta &man.vi.1; y el cuerpo del 
        mensaje puede escribirse. Una vez escrito el correo  
        salga de  <command>vi</command> y <application>mutt</application> se 
	ejecutar&aacute; de nuevo mostrando por pantalla un resumen del
	correo que est&aacute; a punto de ser enviado.  Para enviar ese  
	correo hay que pulsar <keycap>y</keycap>.  Este es un ejemplo de 
	uno de esos res&uacute;menes:</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/mutt3" format="PNG">
	</imageobject>
      </mediaobject>

      <para><application>mutt</application> tambi&eacute;n contiene una amplia 
        ayuda a la que se accede desde la mayor&iacute;a de los 
        men&uacute;s pulsando la tecla <keycap>?</keycap>.  La primera 
	l&iacute;na de la pantalla tambi&eacute;n muestra las teclas de 
        m&eacute;todo abreviado cuando es posible utilizarlas.</para>      
    </sect2>

    <sect2 id="pine-command">
      <title>pine</title>

      <para><application>pine</application> es una aplicaci&oacute;n de correo 
        enfocada a los usuarios principiantes o inexpertos pero 
        tambi&eacute;n incluye algunas caracter&iacute;sticas avanzadas.</para>      

      <warning>
	<para>Se han descubierto en <application>pine</application> varias 
	  vulnerabilidades que pueden explotarse de forma remota.  
          Esas vulnerabilidades permiten que atacantes remotos puedan ejecutar 
	  c&oacute;digo como si fueran usuarios locales del sistema 
          mediante el env&iacute;o de correos con un formato determinado.  
	  Todos los problemas <emphasis>conocidos</emphasis> se han 
	  resuelto pero el c&oacute;digo de <application>
	  pine</application> est&aacute; escrito de una forma insegura y el 
	  <quote>Security Officer</quote> de &os; opina que es probable que 
          existan todav&iacute;a vulnerabilidades sin descubrir. Si decide 
	  instalar <application>pine</application> 
          debe asumir los riesgos que ello puede implicar.</para>
      </warning>

      <para>La versi&oacute;n actual de <application>pine</application> se 
        puede instalar utilizando el port <filename 
	role="package">mail/pine4</filename>.  Una vez que se ha instalado 
        <application>pine</application> se puede ejecutar mediante el siguiente comando:</para>	

      <screen>&prompt.user; <userinput>pine</userinput></screen>

      <para>La primera vez que se ejecuta <application>pine</application> se 
        muestra un mensaje de bienvenida con una peque&ntilde;a 
        introducci&oacute;n a la herramienta junto con una petici&oacute;n del 
        equipo de desarrollo de <application>pine</application> en la que se 
	solicita que se env&iacute;e un correo de forma an&oacute;nima 
        un correo de forma an&oacute;nima para que puedan hacerse una idea s 
	de cu&aacute;ntos usuarios est&aacute;n utilizando 
        la herramienta. Para enviar dicho correo hay que presionar la tecla 
	<keycap>Enter</keycap>, o bien puede pulsar  
        la tecla <keycap>E</keycap> para salir de la ventana de bienvenida 
        sin enviar dicho correo.  A continuaci&oacute;n se muestra un ejemplo 
	de la p&aacute;gina de bienvenida:</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine1" format="PNG">
	</imageobject>
      </mediaobject>

      <para>Los usuarios disponen de un men&uacute; principal, que puede 
        navegarse utilizando las flechas.  Este men&uacute; proporciona 
        atajos para la composici&oacute;n de nuevos correos, para navegar a 
	trav&eacute;s de las carpetas de correo, e incluso para 
        la administraci&oacute;n de la libreta de direcciones. Justo debajo 
	del men&uacute; principal, se muestran las teclas de m&eacute;todo 
        abreviado (atajos) que pueden utilizarse en cada momento.</para>      

      <para>El directorio por defecto que <application>pine</application> 
        intenta abrir es <filename 
	role="directory">inbox</filename>.  Para ver el &iacute;ndice de 
	todos los mensajes recibidos pulse la tecla 
        <keycap>I</keycap> o seleccione la opci&oacute;n de men&uacute; 
	denominada 
        <guimenuitem>MESSAGE INDEX</guimenuitem> como se muestra a 
	continuaci&oacute;n:</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine2" format="PNG">
	</imageobject>
      </mediaobject>

      <para>El &iacute;ndice muestra los mensajes en el directorio actual y 
        puede navegarse en &eacute;l utilizando las teclas 
        del cursor.  El mensaje seleccionado se puede leer presionando la 
	tecla <keycap>Enter</keycap>.</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine3" format="PNG">
	</imageobject>
      </mediaobject>

      <para>En la captura de pantalla que se muestra a continuaci&oacute;n se 
        muestra un mensaje de ejemplo.  Las teclas de atajo se muestran 
        como referencia en la parte baja de la pantalla.  Un ejemplo de dichas 
        teclas de m&eacute;todo abreviado es la tecla <keycap>r</keycap> que 
	permite responder al mensaje que se muestra en dicho momento.</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine4" format="PNG">
	</imageobject>
      </mediaobject>

      <para>La contestaci&oacute;n a un mensaje de correo eletr&oacute;nico 
        en <application>pine</application> se realiza mediante el editor 
	<application>pico</application>, que se instala por defecto junto con 
        <application>pine</application>.  <application>pico</application> 
	permite navegar de forma sencilla por los distintos mensajes de 
        correo y es ligeramente m&aacute;s sencilla de manejar 
        que &man.vi.1;, sobre todo para los usuarios noveles.  Una vez que se 
	ha escrito la r&eacute;plica al correo se env&iacute;a pulsando 
        la tecla 
	<keycombo action="simul"><keycap>Ctrl</keycap><keycap>X</keycap>
	</keycombo>.  <application>pine</application> pedir&aacute; 
	confirmaci&oacute;n antes de enviarlo.</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine5" format="PNG">
	</imageobject>
      </mediaobject>

      <para><application>pine</application> puede configurarse utilizando la 
	entrada <guimenuitem>SETUP</guimenuitem> del men&uacute; principal.  
	Se ruega consultar <ulink 
	url="http://www.washington.edu/pine/"></ulink> 
	para obtener m&aacute;s informaci&oacute;n.</para>

    </sect2>
  </sect1>

  <sect1 id="mail-fetchmail">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Marc</firstname>
	  <surname>Silver</surname>
	  <contrib>Escrito por </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Manejo de fetchmail</title>

    <indexterm>
      <primary>Uso de fetchmail</primary>
    </indexterm>

    <para><application>fetchmail</application> es un cliente de 
      <acronym>IMAP</acronym> y <acronym>POP</acronym> que permite a 
      los usuarios descargar autom&aacute;ticamente el correo de cuentas 
      remotas en servidores 
      <acronym>IMAP</acronym> y <acronym>POP</acronym> y almacenarlos
      en carpetas de correo locales; una vez en local, se puede acceder a los 
      correos de una forma m&aacute;s sencilla y utilizando multitud de 
      programas cliente. 
      <application>fetchmail</application> se puede instalar a partir del port 
      <filename role="package">mail/fetchmail</filename>.  Veamos algunas de  
      sus caracter&iacute;sticas m&aacute;s &uacute;tiles:</para>

    <itemizedlist>
      <listitem>
	<para>Suporte de <acronym>POP3</acronym>, 
	  <acronym>APOP</acronym>, <acronym>KPOP</acronym>, 
	  <acronym>IMAP</acronym>, <acronym>ETRN</acronym> y 
	  <acronym>ODMR</acronym>.</para>
      </listitem>

      <listitem>
	<para>Puede reenviar correo utilizando <acronym>SMTP</acronym> lo que
	  permite que las reglas de filtrado, reenv&iacute;o y 
	  <quote>aliasing</quote> funcionen correctamente.</para>
      </listitem>

      <listitem>
	<para>Se puede ejecutar en modo d&aelig;mon comprobar 
	  peri&oacute;dicamente el correo entrante.</para>
      </listitem>

      <listitem>
	<para>Puede recuperar correo de m&uacute;ltiples carpetas y reenviarlos, en funci&oacute;n de la configuraci&oacute;n establecida,
          a varios usuarios locales.</para>
      </listitem>
    </itemizedlist>

    <para>Queda fuera del objetivo de este documento explicar todas las 
      caracter&iacute;sticas de 
      <application>fetchmail</application> pero algunas de ellas se exponen a 
      ontinuaci&oacute;n.  
      <application>fetchmail</application> usa un fichero de 
      configuraci&oacute;n denominado 
      <filename>.fetchmailrc</filename>.  Este fichero incluye 
      informaci&oacute;n sobre el servidor de correo remoto y los datos 
      necesarios para poder hacer login en &eacute;l.  Debido a la naturaleza 
      sensible de la informaci&oacute;n que se almacena en dicho fichero 
      se recomienda modificar los permisos para que sea de s&oacute;lo 
      sea legible por su propietario.  Lo conseguir&aacute; mediante el 
      siguiente comando:</para>

    <screen>&prompt.user; <userinput>chmod 600 .fetchmailrc</userinput></screen>

    <para>El siguiente ejemplo muestra un fichero de configuraci&oacute;n 
      <filename>.fetchmailrc</filename>.  
      Este ejemplo sirve para automatizar la descarga del correo de un 
      determinado usuario mediante <acronym>POP</acronym>.  El fichero de 
      configuraci&oacute;n hace que 
      <application>fetchmail</application> se conecte a <hostid 
      role="fqdn">ejemplo.com</hostid> utilizando como nombre de usuario  
      <username>joesoap</username> y como contrase&ntilde;a  
      <literal>XXX</literal>.  En el ejemplo se asume que el usuario 
      <username>joesoap</username> tambi&eacute;n es un usuario v&aacute;lido 
      en el sistema local.</para>

    <programlisting>poll ejemplo.com protocol pop3 username "joesoap" password "XXX"</programlisting>

    <para>El siguiente ejemplo permite a <application>fetchmail</application> 
      conectarse a m&uacute;ltiples servidores  
      <acronym>POP</acronym> e <acronym>IMAP</acronym> y redirige los correos 
      a diferentes usuarios locales en funci&oacute;n 
      de la configuraci&oacute;n establecida:</para>

    <programlisting>poll ejemplo.com proto pop3:
user "joesoap", with password "XXX", is "jsoap" here;
user "andrea", with password "XXXX";
poll ejemplo.net proto imap:
user "john", with password "XXXXX", is "myth" here;</programlisting>

    <para><application>fetchmail</application> se puede ejecutar en modo 
      d&aelig;mon mediante el par&aacute;metro <option>-d</option> seguido 
      seguido por un intervalo de tiempo (expresado en segundos)  
      que indica cada cu&aacute;nto tiempo debe 
      <application>fetchmail</application> interrogar a los distintos 
      servidores listados en <filename>.fetchmailrc</filename>.  
      El siguiente ejemplo hace que 
      <application>fetchmail</application> interroge cada 60 segundos:</para>      

    <screen>&prompt.user; <userinput>fetchmail -d 60</userinput></screen>

    <para>Se puede encontrar m&aacute;s informaci&oacute;n sobre 
      <application>fetchmail</application> en <ulink 
      url="http://www.catb.org/~esr/fetchmail/"></ulink>.</para>
  </sect1>

  <sect1 id="mail-procmail">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Marc</firstname>
	  <surname>Silver</surname>
	  <contrib>Escrito por </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Uso de procmail</title>

    <indexterm>
      <primary>Uso de procmail</primary>
    </indexterm>

    <para><application>procmail</application> es una aplicaci&oacute;n 
      incre&iacute;blemente potente que se utiliza para filtrar el correo de 
      entrada.  
      Permite a los usuarios definir <quote>reglas</quote> que se asocian 
      con correos entrantes y que realizan funciones concretas, como 
      reencaminar el correo a carpetas o direciones alternativas.
      <application>procmail</application> se puede instalar utilizando el port 
      <filename role="package">mail/procmail</filename>.  Una vez instalado, 
      se puede integrar directamente en la mayor&iacute;a de los 
      <acronym>MTA</acronym>s; por favor, consulte 
      la documentaci&oacute;n del <acronym>MTA</acronym> que utilice para 
      saber m&aacute;s sobre la integraci&oacute;n entre ambos.  
      Por otro lado <application>procmail</application> se puede integrar 
      con el <acronym>MTA</acronym> que prefiera de una forma sencilla 
      a&ntilde;adiendo la siguiente l&iacute;nea al 
      fichero <filename>.forward</filename> dentro del directorio home del 
      usuario que des&eacute;e usar <application>
      procmail</application>:</para>

    <programlisting>"|exec /usr/local/bin/procmail || exit 75"</programlisting>

    <para>La siguiente secci&oacute;n muestra algunas reglas b&aacute;sicas de 
      <application>procmail</application>, junto con una breve 
      descripci&oacute;n de las acciones que realizan.  
      Estas reglas, y muchas otras se deben insertar dentro del fichero 
      <filename>.procmailrc</filename> ubicado en el directorio home del 
      usuario.</para>
     

    <para>En la p&aacute;gina man de <quote>procmailex</quote> se explica 
      la mayor&iacute;a de estas reglas.</para>

    <para>Reenv&iacute;o de todo el correo proveniente de 
      <literal>usuario@ejemplo.com</literal> hacia la 
      direcci&oacute;n externa <literal>correodefiar@ejemplo.com</literal>:</para>

    <programlisting>:0
* ^From.*usuario@ejemplo.com
! correodefiar@ejemplo.com</programlisting>

    <para>Reenv&iacute;o de todos los correos que ocupen menos de 1000 bytes 
      a la direcci&oacute;n <literal>corredefiar@ejemplo2.com</literal>:</para>

    <programlisting>:0
* < 1000
! correodefiar@ejemplo2.com</programlisting>

    <para>Env&iacute;o de todos los correos dirigidos a 
      <literal>opcional@ejemplo.com</literal>
      hacia una carpeta de correo llamada <filename>opcional</filename>:</para>

    <programlisting>:0
* ^TOopcional@ejemplo.com
opcional</programlisting>

    <para>Env&iacute;o de todos los correos con un asunto que contenga la 
      palabra <quote>Spam</quote> al 
      dispositivo <filename>/dev/null</filename>:</para>

    <programlisting>:0
^Subject:.*Spam
/dev/null</programlisting>

    <para>Una &uacute;til receta para examinar mensajes de correo provenientes 
      de listas de distribuci&oacute;n de 
      <hostid role="domainname">&os;.org</hostid> y poner cada mensaje en 
      el directorio apropiado en funci&oacute;n del origen del mensaje:</para>

    <programlisting>:0
* ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
{
	LISTNAME=${MATCH}
	:0
	* LISTNAME??^\/[^@]+
	FreeBSD-${MATCH}
}</programlisting>
  </sect1>

</chapter>

<!--    
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter") 
     End: 
-->
