Postfix Como en Slackware Instalar cyrus-sasl y postrix desde mis paquetes. Si en el sistema que se instalara y configurara Postfix ya se encuentra instalado Sendmail es recomendable desinstalarlo o moverl los binarios de sendmail para que no haga conflicto con Postfix, el paquete de Sendmail para Slackware tiene esto: # ls -l /usr/bin/sendmail lrwxrwxrwx 1 root root 18 2004-10-01 10:52 /usr/bin/sendmail -> /usr/sbin/sendmail* # ls -l /usr/sbin/sendmail -r-xr-xr-x 1 root bin 663304 2004-10-01 10:48 /usr/sbin/sendmail* # ls -l /usr/lib/sendmail lrwxrwxrwx 1 root root 18 2004-10-01 10:52 /usr/lib/sendmail -> /usr/sbin/sendmail* # Entonces lo recomendable es hacer esto: # mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF Y # cd /usr/sbin/ # ln -s sendmail.postfix sendmail Y comprobarlo asi: # ls -l /usr/bin/sendmail lrwxrwxrwx 1 root root 18 2004-10-01 10:52 /usr/bin/sendmail -> /usr/sbin/sendmail* # ls -l /usr/sbin/sendmail lrwxrwxrwx 1 root root 16 2005-05-04 19:37 /usr/sbin/sendmail -> sendmail.postfix* # ls -l /usr/lib/sendmail lrwxrwxrwx 1 root root 18 2004-10-01 10:52 /usr/lib/sendmail -> /usr/sbin/sendmail* # Como podemos ver el sendmail de /usr/bin/sendmail y /usr/lib/sendmail apuntan /usr/sbin/sendmail Y este ultimo ahora apunta al sendmail de postfix: /usr/sbin/sendmail.postfix Tambien se recomienda hacer lo mismo para newalises y mailq: # mv /usr/bin/newaliases /usr/bin/newaliases.OFF # ln -s /usr/bin/newaliases.postfix /usr/bin/newaliases Y lo comprobamos: # ls -l /usr/bin/newaliases lrwxrwxrwx 1 root root 27 2005-05-04 19:41 /usr/bin/newaliases -> /usr/bin/newaliases.postfix* Como podemos ver ya apunta al newaliases de Postfix. Ahora con mailq: # mv /usr/bin/mailq /usr/bin/mailq.OFF # ln -s /usr/bin/mailq.postfix /usr/bin/mailq Y lo comprobamos: # ls -l /usr/bin/mailq lrwxrwxrwx 1 root root 22 2005-05-04 19:42 /usr/bin/mailq -> /usr/bin/mailq.postfix* El paquete de Postfix guarda todas sus configuraciones en el directorio /etc/postfix/ por lo que ahi es donde empezaremos. El archivo de configuracion principal de Postfix es: /etc/postfix/main.cf Los parametros basicos a configurar son los que se explican a continuacion. 1.- Que nombre de dominio usar en el correo saliente. Esto es especificado con el parametro "myorigin" valor por default es usar el nombre local de la maquina, $myhostname, el cual es el default. myorigin = $myhostname (default: send mail as "user@$myhostname") myorigin = $mydomain (probabli desirable: "user@$mydomain") 2.- Para cuales dominios recibir correos. El parametro "mydestination" especifica que dominios esta maquina recibira localmente, en lugar de redireccionarlo a otra maquina. EL valor predeterminado es recibir mail para la maquina en si. Por ejemplo (default): mydestination = $myhostname localhost.$mydomain localhost Ejemplo 2: domain-wide mail server mydestination = $myhostname localhost.$mydomain localhost $mydomain Ejemplo 3: host con multiples registros DNS A mydestination = $myhostname localhost.$mydomain localhost www.$mydomain ftp.$mydomain 3.- A que clientes permitirles enviar correo (relay) Por default, Postfix redireccionara correos de los clientes en bloques de redes autorizadas a cualquier destino. Las redesautorizadas estan definidas en la configuracion del parametro "mynetworks". El valor predeterminado es autorizar a todos los clientes en las subredes IP en la cual la maquina local esta conectado. IMPORTANTE: Si tu maquina esta conectado a una WAN entonces el valor predeterminado de "mynetworks" pude ser muy amigable para la demas gente. :) Ejemplos: mynetworks_style = subnet (default: authorize subnetworks) mynetworks_style = host (safe: authorize local machine only) mynetworks = 127.0.0.0/8 (safe: authorize local machine only) mynetworks = 127.0.0.0/8 168.100.189.2/32 (authorize local machine) Tu puedes especificar sus valores en el archiv mail.cf o dejar a Postfix que haga el trabajo por ti. El valor predetermiando es dejar a Postfix que haga su trabajo. EL resultado depende de el valor del parametro "mynetworks_style". * Especifica "mynetworks_style = host" cuando Postfix debe de reenviar correo solo para la maquina local. * Especifica "mynetworks_style = subnet" (el predeterminado) cuando Postfix debe de reenviar correo de clientes SMTP en lamisma subred IP que la misma maquina local. En Linux, esto trabaja correcto solo con las interfaces especificadas con el comando "ifconfig". * Especifica "mynetworks_style = class" Cuando Postfix debe reenviar correo de clientes SMTP en la misma clase IP A/B/C que la maquina local. NO hace esto con una maquina conectada por dialup. Podria causar que Postfix "confie" en la toda la de de tu proveedor de red. En lugar, especifica una lista de mynetworks a mano. como se describe abajo. Alternativamente, tu puedes especificar una lista de "mynetworks" a mano, en tal caso POstfix ignorara la configuracion de"mynetworks_style". Para especificar una lista de redes confiables a mano, especifica los bloques de red en notacion CIDR (network/mask). POr ejemplo: mynetworks = 168.100.189.0/27, 127.0.0.0/8 Tambien puedes especificar una ruta absoluta a un archivo de patrones en lugar de listarlos en main.cf. A que destinatarios se permite hacer relay de correo. Por default, Postfix reenviara correo de extraños (clientes fuera de las redes autorizadas) solamente para destinos remotos autorizados. Los destinos remotos autorizados estan definidos en la configuracion del parametro "relay_domains". El valor predeterminado es autorizar a todos los dominios (y subdominios) de los dominios listados en el parametro "mydestination". Ejemplos (solo especificar uno de los siguientes): relay_domains = $mydestination (default) relay_domains = (safe: never forward mail from strangers) relay_domains = $mydomain (formard mail to my domain and subdomains) Que metodo de envio usar : directo o indirecto De manera predeterminada, Postfix intenta enviar correo directamente a el Internet. Dependiendo de tus condiciones locales esto no puede ser posible o deseable, POr ejemplo, el sistema puede ser apagado en horas fuera de oficina, puede estar detras de un firewall, o esta conectado via un proveedor el cual no poermite envio de correo directo a el Internet. En estos casos es necesario configurar Postfix envair el correo de manera indirecta via un relay host. Ejemplos: (solo especificar uno de los siguientes): relayhost = (default: envio directo a internet) relayhost = $mydomain (deliver via local mailhub) relayhost = [mail.$mydomain] (deliver via local mailhub) relayhost = [mail.isp.tld] (deliver via provider mailhub) Que problemas reportar al postmaster Debes de configurar un alias para el postmaster en la tabla aliases(5) que redirija el correo a una persona. La direccion de el postmaster es requerida, ya que de esta manera la gente puede reportar problemas en el envio del correo. Cuando se actualice la tabla aliases(5), asegurate de redirigir el correo de el suerp-usuario (root) a una persona tambien. /etc/aliases: postmaster: tu root: tu Ejecuta el comando "newaliases" despues de cambiar el archivo alises. Puede ser que el archivo /etc/aliases este localizado en algun lugar diferente. puedes usar el comando "postconf alias_maps" para encontrarlo. NOTA: En si teines isntalado tambien Sendmail se recomienda usar mejor el comando: postalias /ruta/al/archivo/alias. Postfix reporta problemas a el alias de postmaster. Puede que no estes interesado en todos los tipos de reportes de problemas, por cual los mecanismos de reportes son configurables. El default es reportear solo problemas serios (resource, software) a el postmaster: Configuracion predeterminada: /etc/postfix/main.cf: notify_classes = resource, software Direccion de red externa cuando se usa Proxy/NAT Algunos servidores de correos estan conectados a el Internet via Network Address Translation (NAT) o un proxy. Esto significa que los sistemas en la Internet se conectan a la direccion de el servidor NAT o proxy, en lugar de conectarse a la direccion de red de el servidor de correos. El NAT o proxy reenvia la conexion a la direccon de red de el servidor de red, pero Postfix no sabe esto. Si corres Postfix atras de un servidor proxy o NAT, es ncesario que configures el parametro "proxy_interfaces" y especificques todas las direcciones de proxy o de NAT en la cual POstefix recibe correo. Puedes especificar hombres de hosts simbolicos en lugar de direcciones de red. IMPORTANTE: Debes de especificar la direccion externa del proxy/NAT si tu sistema es un host de respaldo MX para otros dominios, de otro manera el envio del correo hara "loop" cuando el host MX primario caiga. Ejemplos: host atras de una caja NAT corriendo una host de respaldo MX. /etc/postfix/main.cf: proxy_interfaces = 1.2.3.4 (the proxy/NAT external network address) Lo que necesitas saber acerca de Postfix y los logs. El servicio (daemon) Postfix corre en el fondo, y registra (log) problemas y la actividad normal al servicio (daemon) syslog. el proceso syslogd clasifica los eventos por clases y la severidad, y los agrega a los archivos de registro. Las clases de logs, niveles y el nombre del archivo de reistro usualmente son especificadas en /etc/syslog.conf . POr lo menos tu necesitas algo como: /etc/syslog.conf: mail.err /dev/console mail.debug /var/log/maillog Despues de cambiar (si es que lo modificaste) el archivo syslog.conf, envia una señal "HUP" al el proceso syslogd. IMPORTANTE: algunas implementaciones de syslogd no crearan los archivos. Tu debes de crearlos antes de iniciar o reiniciar syslogd. IMPORTANTE: En Linux debes de poner un caracter "-" antes de la ruta, por ejemplo: -/var/log/maillog, de otra manera el proceso syslogd usara mas recursos del sistema que POstfix. NOrmalmente el numero de problemas son pocos. pero es una buena idea correr cada noche antes de que los archivos de syslog sean rotados: # postfix check # egrep '(reject|warning|error|fatal|panic):' /some/log/file * La primera linea (postfix check) causara que postfix reporte discrepancias en permisos en los archivos. * La segunda linea busca por problemas que reporte el software de correo, y reportea que tan efectivo los bloqueos de "relay" y correo "junk". Esto puede producir mucha salida en pantalla. Es posible que quieras aplicar algunas filtros para eliminar informacion no importante. El documento DEBUG_README describe los significados de las etiquetas "warning", etc. en los registros de POstfix. POstif en una jaula chroot; Pendiente. My nombre de host. El parametro "myhostname" especifica el nombre completo cualificado (FQDN) de la maquina que corre Postfix. $myhostname aparece como valor predeterminado en la configuracion de los parametros de otras configuraciones de Postfix. De manera predeterminada, "myhostname" es puesto con el nombre de la maquina local. Si tu maquina no esta en la forma de un FQDN, o corres Postfix en una interfaz virtual, tendras que especificar el nombre FQDN que el sistema de coreo usara. Alternativamente, puedes especificar "mydomain" in main.cf, entonces Postfix usara este valor para generar el valor predeterminado para el parametro "myhostname". Ejemplos (especifica solo alguno de estos): /etc/postfix/main.cf: myhostname = host.local.domain (machine name is not FQDN) myhostname = host.virtual.domain (virtual interface) myhostname = virtual.domain (virtual interface) MI NOMBRE DE DOMINIO El parametro "mydomain" especifica el dominio padre para $myhostname. De manera predeterminada, es derivado de $myhostname separando la primer parte ( a menos que el resultado sea un dominio de alto nivel (top-level). Ejemplos (especificar solo uno de los siguientes): /etc/postfix/main.cf: mydomain = local.domain mydomain = virtual.domain (virtual interface) MIS DIRECCIONES DE RED El parametro "inet_interfaces" especifica todas las direcciones de red adignadas a las interfaces en las cuales postfix escuchara; direcciones de correo para "usuario@[network address]" seran enviadas localmente, al igual que si es enviado a un dominio listado en $mydestination. El valor predeterminado es escuchar en todas las interfaces. Ejemplo: configuracion predeterminada: /etc/postfix/main.cf: inet_interfaces = all Ejemplo: host corriendo en uno o mas mailsers virtuales. Para cada instancia de Postfix, especifica uno de los sigueinets: /etc/postfix/main.cf: inet_interfaces = virtual.host.tld (virtual Postfix) inet_interfaces = $myhostname localhost... (non-virtual Postfix) Nota debes de parar e iniciar postfix para que los cambios tomen efecto. con: # postix {stop|start}