Copyright (C) 2003 Carlos Herrero Situación: ---------- - El servidor no dispone de un dominio público (.com) - Una empresa externa ofrece servicio de mail, con 3 o 4 cuentas en el dominio público, las cuentas tienen la siguiente forma: user1@dominio.com user2@dominio.com user3@dominio.com generica@dominio.com - El nombre del dominio local para postfix es "dominio.local". - En el servidor local existen los usuarios user1, user2, ... , userN. ¿Qué se quiere hacer? --------------------- - Postfix debe ejercer como servidor de correo de la intranet, en la que hay, unos 20 o 30 usuarios.(gestión del correo local) - Cuando un usuario desde la intranet envía un correo a una cuenta del dominio "dominio.com" el correo se debe entregar localmente, evitando así que salgan a internet datos innecesarios (con el correspondiente retardo y riesgo de seguridad). - Cuando un usuario envía un correo a internet (a una dirección que no es ni @dominio.com ni @dominio.local) Postfix debe: - si el usuario que envía el correo tiene cuenta en dominio.com se reescribirá su dirección de origen de user@dominio.local a user@dominio.com. - si el usuario que envía el correo _NO_ tiene cuenta en dominio.com, su dirección de origen se reescribirá como generica@dominio.com NOTA: notad que estas reescrituras solo deben hacerse cuando el correo va hacia internet, de lo contrario el uso del correo local sería un tanto engorroso para los usuarios (no podrían utilizar el reply). Esta forma de funcionar es la que va a hacer que sean necesarias dos instancias de Postfix funcionando. Procedimiento ------------- No se darán detalles de como configurar un Postfix "normal", porque ya hay montones de documentación disponible, así, suponemos que partimos de un Postfix que funciona y acepta correos para dominio.com y dominio.local. Antes de nada, leerse el siguiente documento, que explica cómo ejecutar dos instancias de Postfix al mismo tiempo: http://www.advosys.ca/papers/postfix-instance.html pues los pasos que expondré a continuación se basan en esa guía. Aclarar, también, que la solución que explico ejecuta la instancia de Postfix en otro puerto y no en una nueva interfaz de red como se explica en el tutorial y que la instalación se ha realizado en una SuSE 8.1 con Postfix 1.11 (la versión el que en rpm viene con la distribución). Así, siguiendo el tutorial nos saltamos el paso 1 (añadir una dirección IP). Los pasos dos y tres los seguimos a rajatabla: Copiamos el directorio de configuración: cp -rp /etc/postfix /etc/postfix-out modificamos el directorio de la cola de correo en el fichero /etc/postfix-out/main.cf añadiendo/modificando el valor del siguiente parámetro: queue_directory = /var/spool/postfix-out Creamos el nuevo directorio de spool, mkdir /var/spool/postfix-out postfix -c /etc/postfix-out check Como en SuSE 8.1 Postfix no se ejecuta con el directorio raíz modificado, el último punto del paso tres nos lo podemos saltar, sino pues se hace, muy fácil. Paso cuatro, modificamos los ficheros de configuración: Editamos /etc/postfix/main.cf y le informamos de la segunda instancia: alternate_config_directories = /etc/postfix-out y hacemos lo mismo en /etc/postfix-out/main.cf: alternate_config_directories = /etc/postfix en este último añadimos/modificamos además el siguiente parámetro: inet_interfaces = localhost de manera que esta instancia solo aceptará correos que le lleguen desde la propia máquina (en nuestro caso no tiene mucha importancia, pues el servidor no está en internet y no hay otros MTAs en la intranet). Editamos el fichero /etc/postfix-out/master.cf y le indicamos que escuche en el puerto 10025 en lugar del 25 (comentamos la primera y añadimos la segunda): # smtp inet n - n - - smtpd localhost:10025 inet n - n - - smtpd Editamos el fichero /etc/postfix/main.cf y añadimos/modificamos: relayhost = 127.0.0.1:10025 para que todos los mails que no sepa entregar localmente, los envíe a la otra instancia. Paso cinco, modificar los scripts de inicio, que cae fuera del abasto de esta guía. Paso seis, configurar los mapas canónicos: - Editamos el fichero /etc/postfix-out/main.cf y añadimos la siguiente línea: sender_canonical_maps = hash:/etc/postfix-out/sender_canonical - Editamos el fichero /etc/postfix-out/sender_canonical y lo ponemos de la siguiente forma: user1@dominio.local user1@dominio.com user2@dominio.local user2@dominio.com ... @dominio.local generica@dominio.com - Ejecutamos postmap: postmap -c /etc/postfix-out /etc/postfix-out/sender_canonical Y ya está, en 10 minutos está hecho. Para arrancar postfix sin los scripts de inicio: postfix -c /etc/postfix-out start postfix -c /etc/postfix reload