Globedia.com

×

Error de autenticación

Ha habido un problema a la hora de conectarse a la red social. Por favor intentalo de nuevo

Si el problema persiste, nos lo puedes decir AQUÍ

×
×
Recibir alertas

¿Quieres recibir una notificación por email cada vez que Skizzo escriba una noticia?

Como configurar PostFix, segunda y ùltima parte

26/05/2010 18:05 0 Comentarios Lectura: ( palabras)

Postfix ya asume que ciertas direcciones tienen que ser entregadas a máquinas remotas

Enviar correo al exterior

Postfix ya asume que ciertas direcciones tienen que ser entregadas a máquinas remotas. Sin embargo, hay diferentes formas de hacer eso (e incluso de no hacerlo), y las que nos interesan han de tener en cuenta las siguientes circunstancias:

La máquina no está constantemente conectada a Internet, así que hay que decirle a Postfix que no debe intentar procesar los correos que van fuera de la máquina inmediatamente, sino cuando se le indique.

Lo ideal sería que Postfix le pasara el marrón de distribuir el correo al servidor de vuestro proveedor de Internet. Así, vuestra máquina no tiene que estar buscando a cada servidor, sino que le pasa todos los correos pendientes al servidor de vuestro proveedor y éste se busca la vida. Desafortunadamente, la mayoría de los servidores requieren autenticación para cosas así, y Postfix (en la versión examinada aquí, la 19991231) no tiene mecanismos para suministrar el nombre de usuario y contraseña correctos, así que lo más probable es que haya que dejar que Postfix haga el trabajo sucio.

Si tu proveedor es Atranquis, Tierra, o EresMenos, tu dirección será, por ejemplo, luisito@eresmenos.com, y es posible que la cuenta de Luisito en Linux sea, precisamente, luisito. Si envías un correo desde root@milinux.midominio a luisito@eresmenos.com, al final llegaría a luisito@milinux.midominio, así que ¿para qué hacer que el correo esté subiendo y bajando por el módem innecesariamente?

Muy bien, vayamos por partes, como diría Jack el Destripador. Si la máquina no está conectada constantemente a Internet, los correos enviados por SMTP (el protocolo que utilizan los MTAs como Postfix para pasarse los correos a través de Internet), hay que dejarlos en cola hasta que conectemos.

La primera parte, dejarlos en espera, se consigue con el parámetro siguiente en /etc/postfix/main.cf:

defer_transports = smtp

Al hacer esto, los mensajes al exterior se quedan en cola (puedes comprobar qué mensajes están en

cola ejecutando el comando mailq).

La segunda parte, que los envíe cuando estemos conectados, se hace con el comando /usr/sbin/sendmail -q. Ojo, porque este comando sólo lo puede ejecutar root. En el apartado Otros explicaré por encima cómo conseguir que no sea necesario abrir una sesión de root para ejecutar este comando. Observad también que sólo se envían los mensajes que están pendientes en el momento de ejecutar ese comando: si mientras Postfix distribuye esos correos te da tiempo a escribir uno y ponerlo en cola, no saldrá a menos que vuelvas a ejecutar /usr/sbin/sendmail -q.

Ataquemos ahora el segundo punto. Es improbable, pero puede suceder que el servidor de correo de tu

proveedor de Internet no necesite nombre de usuario y contraseña. Si fuera así, es mejor que Postfix le

pase los mensajes a él para que los distribuya. Para hacerlo, tienes que escribir lo siguiente en /etc/postfix/main.cf:

relayhost = smtp.eresmenos.com

Obviamente, tienes que cambiar el nombre del servidor al correcto. Si no sabes si el servidor de correo de tu proveedor lo va a permitir o no, haz una prueba sencilla. Pon este parámetro, envía un correo de prueba a un amigo (no a tu propia cuenta), y si no recibes un mensaje de vuelta diciendo que Postfix no ha podido entregar el mensaje, es que el servidor de tu proveedor traga. En caso contrario, quita la línea y ya está.

Vayamos con el tercer punto. Aquí confieso no estar aún totalmente seguro de si todo lo que voy a poner es necesario, pero sin duda con todo ello mi sistema funciona. :-)

Para empezar, haremos que un mensaje enviado a luisito se convierta en enviado a luisito@eresmenos.com. La mayoría de los MUAs utilizados tienen opciones para añadir esto automáticamente, pero si no lo hacen ellos, lo hará Postfix. En /etc/postfix/main.cf hay que poner lo siguiente:

myorigin = eresmenos.com

o bien

masquerade_domains = eresmenos.com

La diferencia importante entre usar myorigin o masquerade_domains es que, con myorigin, si envías un mensaje a root@eresmenos.com, el mensaje se repartirá localmente, porque Postfix asume que el dominio de la máquina es "eresmenos.com" y, por tanto, interna. Si tu MUA hace como el mío (Mozilla), que cuando escribes un nombre en el campo To: te propone "autocompletarlo" con el dominio en el que está tu cuenta, y prevés enviarte mensajes localmente, te puede convenir más usar myorigin.

En cambio, si usas masquerade_domains, la suposición de que la máquina tiene como dominio "eresmenos.com" no se realiza, de modo que un mensaje enviado a root@eresmenos.com sería, efectivamente, entregado a la cuenta root del dominio eresmenos en Internet.

¿Y el resto de las cuentas? ¿Qué pasa, por ejemplo, si yo tengo una cuenta local llamada jose que usa

como cuenta de Internet pepe@eresmenos.com, y un día tengo que enviar un mensaje a alguien cuya

cuenta es jose@eresmenos.com? Pues, en mis pruebas al menos, no ha habido ninguna diferencia entre usar myorigin y masquerade_domains: en ambos casos, Postfix procesa el correo hacia el exterior de modo correcto.

Lo siguiente es hacer que los mensajes enviados por luisito@milinux.midominio al exterior se envíen en realidad como luisito@eresmenos.com. Esto se consigue creando un archivo llamado

/etc/postfix/sender_canonical, creando el correspondiente /etc/postfix/sender_canonical.db, e

indicando su uso en /etc/postfix/main.cf. Por orden:

Crear el archivo sender_canonical

El archivo tiene el formato siguiente:

luisito@milinux.midominio luisito@eresmenos.com

pepito@milinux.midominio pepe@eresmenos.com

Como puede verse, el nombre de usuario externo no tiene que ser exactamente igual al interno. En este caso, la cuenta de Luis se llama "luisito" tanto en la máquina Linux como en el proveedor deInternet, pero la cuenta de José se llama "pepito" en Linux y "pepe" en el proveedor de Internet.

Crear el archivo sender_canonical.db

Para crear el archivo db hay que escribir lo siguiente en la línea de comandos (#) estando ubicados en

/etc/postfix:

[/etc/posftix]# postalias hash:sender_canonical

Hay que hacerlo como root (de ahí que en lugar del prompt $ haya puesto #), salvo que tengáis una

política de permisos en el sistema de archivos muy relajada.

Indicar su uso en Postfix

En /etc/postfix/main.cf hay que añadir la siguiente línea:

sender_canonical_maps = hash:/etc/postfix/sender_canonical

Para que los cambios surtan efecto inmediatamente hay que teclear postfix reload como root.

Aunque no sea estrictamente necesario, yo particularmente tengo exactamente lo mismo para recipient_canonical, con la salvedad de que las parejas de nombres están intercambiadas:

luisito@eresmenos.com luisito@milinux.midominio

pepito@eresmenos.com pepe@milinux.midominio

El efecto de recipient_canonical es que, al recibir un mensaje, no importa si viene del exterior o del interior de la máquina; siempre lo recibes como pepe@milinux.midominio. Es más una cuestión de apariencia que otra cosa. Por supuesto, también hay que hacer lo mismo que con sender, es decir, añadir el parámetro correspondiente en main.cf (recipient_canonical_maps), y ejecutar postalias para crear el archivo .db.

Y con esto ya está. Haced algunas pruebas para verificar que todo funciona, que los correos dirigidos

a root los recibe quien hayáis designado en /etc/postfix/aliases, que podéis enviar al exterior y llega,

y que podéis enviaros internamente.

Otros

Ya tenemos (espero) Postfix funcionando, ya no tenemos más que escribir como root

/usr/sbin/sendmail -q cuando conectamos con Internet para que nuestros correos lleguen a su destino...

Ahora, un par de dudas que surgen al poco tiempo.

¿Cómo hacemos para no estar siempre haciendo lo mismo con sendmail -q?

Echad un ojo a sudo. sudo es un utilidad que permite definir combinaciones de comandos-privilegios-usuarios, de modo que esos usuarios pueden ejecutar los comandos con los privilegios asignados. No voy a entrar en más detalles, excepto que necesitaréis utilizar vi para crear el archivo de configuración, y que aunque la página del manual es un poco larga, los ejemplos que aparecen al final son muy ilustrativos y deberían guiaros sin problemas para poner en marcha el invento.


Sobre esta noticia

Autor:
Skizzo (470 noticias)
Visitas:
7551
Tipo:
Tutorial
Licencia:
Distribución gratuita
¿Problemas con esta noticia?
×
Denunciar esta noticia por

Denunciar

Etiquetas

Comentarios

Aún no hay comentarios en esta noticia.