Mostrando entradas con la etiqueta postfix. Mostrar todas las entradas
Mostrando entradas con la etiqueta postfix. Mostrar todas las entradas

lunes, 1 de julio de 2013

Postfix masquerading


Dejo unas notas sobre cómo modificar el email del remitente de la cuenta root en una máquina corriendo Postfix.

Problema:

El destinatario recibe el email de la cuenta root@nombremáquina en lugar de una FQDN.

La solución es muy sencilla. Antes de ponerse a trastear, recomiendo encarecidamente leer el "Postfix Address Rewriting" . Al grano.

1.- Crear el fichero smtp_generic_maps con el contenido
root@nombredemimaquina  info@midominiomolon.org
2.- Hashear el fichero:

postmap hash:/etc/postfix/smtp_generic_maps

3.- Incluir la directiva smtp_generic_maps en el fichero main.cf

smtp_generic_maps = hash:/etc/postfix/smtp_generic_maps

4.- Reiniciar postfix

service postfix restart

Configuración testeada en :

SSOO: Ubuntu Server 12.04.1 64 bits
Postfix: 2.9.6-1~12.04.1




lunes, 22 de febrero de 2010

Transport con regexp para Postfix

La semana pasada he configurado un servidor Postfix para enviar vía relay a smtp.gmail.com y a smtp.mundo-r.com. Este post carecía de sentido(por la cantidad de información que hay en la red) si no fuese por que debo discriminar el envío dependiendo del destinatario. Nada mejor que aplicar expresiones regulares en Postfix para lograrlo. A modo de apunte personal, dejo los ficheros de configuración.

Fichero main.cf[incompleto]

#Fichero configuracion Postfix
#Alberto Permuy Leal - alberto.permuy(en) gmail.com
#Febrero 2010
#
#
#Configuracion basica
append_dot_mydomain = yes
command_directory = /usr/sbin
data_directory = /var/lib/postfix
unknown_local_recipient_reject_code = 550
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
setgid_group = postdrop
#
#
#Redes a las que sirve/recibe correo
myorigin = subdominio.dominio.es
mydomain = $myorigin
mynetworks_style = subnet
mynetworks = 127.0.0.0/8, 192.168.0.0/22
#
#
#Un banner por aqui
smtpd_banner = ESMTP $mail_name
#
#
#PATHS
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliasesx
mailq_path = /usr/bin/mailq
#
#
#Manpages y demas
html_directory = no
manpage_directory = /usr/local/man
#
#
#
#Alias
alias_maps = hash:/etc/aliases
#
#
#TRANSPORTE DE CORREO
#
#
transport_maps = regexp:/etc/postfix/transport_regexp
#
#
#Configuracion para smtp-relay autenticado
smtp_use_tls = yes
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_sasl_password_maps = hash:/etc/postfix/smtp_passwords
smtp_sasl_auth_enable = yes
smtp_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
smtp_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtp_sasl_auth_enable = yes
smtp_sasl_security_options=noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

La línea "más importante" es transport_maps = regexp:/etc/postfix/transport_regexp , que como podemos "deducir" apunta al fichero transport_regexp.
Fichero transport_regexp

/dominio.es$/ smtp:smtp.mundo-r.com
/^.*$/ smtp:smtp.gmail.com:587


Este fichero es muy muy sencillo. Todos los correos con destinatario en @dominio.es se envía directamente por smtp.mundo-r.com y el resto por smtp.gmail.com .

Como indicamos en la línea smtp_sasl_password_maps = hash:/etc/postfix/smtp_passwords , el fichero smtp_passwords contiene las credenciales para autenticarse contra los dos servidores de correo.
Fichero smtp_passwords

smtp.dominio.es user@smtp.mundo-r.com:password-delusuario
smtp.gmail.com:587 usergmail@gmail.com:password-gmail

lunes, 3 de agosto de 2009

Reflexiones, DMZs, Postfix y libertad...

Este post es una respuesta a un email que me ha enviado un amigo las semana pasada. Muchas líneas son opiniones personales,otras reflexiones sobre lecturas
recientes, otras...
Reflexiones, DMZs, Postfix y libertad...
Con la poca información que me has dado, me atrevo, ya sabes que la ignorancia tiene la virtud del atrevimiento, a dividir las cuestiones que formulas en dos partes: la primera, a la que denominaré "Eliminar y exponer", y la segunda, “Razones rápidas por las que no implementar Exchange”.

Eliminar y Exponer

Resulta curioso, pero sería yo quien formularía la pregunta ¿Por qué eliminarlos? ¿Rendimiento? ¿Mal o pésimo funcionamiento? ¿Mantenimiento? ¿Coste? Si la única pregunta que en este contexto tiene sentido es la última, tienes un problema; si dudan en alguna de las anteriores, si son personas sensatas, por lo menos vamos a intentarlo.

En primer lugar, y dejando a un lado si el S.O de la máquina que hace relay es GNU/Linux o no, personalmente jamás expondría una maquina corriendo Microsoft Windows a Internet, pudiendo evitarlo. Es más, jamas expondría una máquina a Internet pudiendo evitarlo, en todo caso, para eso se diseñan las DMZs, y máxime si la solución alternativa es una o varias máquinas corriendo algún sabor UNIX y con alguna licencia libre y gratuíta. Los motivos a continuación:
Estabilidad: El diseño de un S.O Unix/Linux dista años luz de un S.O Microsoft. Unix es C, C es robuztez y estabilidad. Unix es un conjunto de aplicaciones pequeñas y simples, que cumplen una sola función y lo hacen bien, por ejemplo iptables o fetchmail. Microsoft Windows, sin embargo está y por lo que se deduce, estará, encadenado a ficheros .exe y actualizaciones dependientes del trabajo de un único grupo de programadores asalariados. Es cierto que con los “Boletines del Segundo Martes” intentan acercarse al ritmo de desarrollo y corrección de bugs de S.O GNU/Linux tipo Debian o Red Hat, o BSD como FreeBSD, todo indica a que su trabajo está orientado a un simple Service Pack cada X meses o años.


Mantenimiento: Una maquina Unix requiere de unos conocimientos mínimos de Administración para que las funciones que realice, las haga bien. Una vez configurada, pueden pasar años hasta que requiera un mantenimiento que se aleje del típico de la actualización de software y parches de seguridad. En multitud de ocasiones, una máquina Unix mal configurada por un/unos Administradores con conocimientos escasos del software con el que están trabajando, puede dar la impresión de necesitar más tareas o tiempo de mantenimiento que una máquina corriendo Microsoft Windows: nada más lejos de la realidad. Visite netcraft.com y o top500.org y podrá comprobar que tienen en común el 88% de los 500 computadores más “potentes” del momento: un S.O Linux. ¿Casualidad? No creo que DELL, NASA se basen en casuísticas para el elegir el S.O de sus Servidores.
Seguridad: Partiendo de la base de que ningún S.O es seguro si está conectado a una red de computadores, me gustaría hacer incapié que el concepto de Seguridad Informática es un proceso continuo y lineal, en contraposición a una series de medidas puntuales, como por ejemplo, añadir una cadena -j DROP a iptables para que “impedir que megano haga pings a fulano”. En palabras de J.Pérez Agudín “La seguridad ha de ser entendida como un equilibrio, la inversión en seguridad ha de estar a la altura de la importancia de la información a proteger”. Volviendo al eterno dilema de por qué Linux es más seguro que Microsoft Windows, me gustaría comentar:
Desarrollo continuo: la comunidad de desarrolladores trabaja a diario publicando parches y liberando nuevas versiones. No hay necesidad de esperar a que una empresa considere oportuno “vender” un nuevo producto para tener software actualizado.
Mejor diseño de S.O de base. Nos referimos en la práctica, a que por ejemplo, ante una vulnerabilidad en Postfix, si un usuario pudiese supuestamente tomar el control de la máquina, sólo lo haría con el usuario con el que se ejecute el proceso, es lo que se conoce como CHROOT o jaulas de usuario. En Microsoft Windows también es posible, pero no se ejecutan por defecto todos los procesos con usuarios diferentes.
Diversidad de Entornos: El núcleo de Windows Server es el mismo para las distintas versiones, por lo que en la práctica resulta muy sencillo aplicar un exploit a dichas versiones. Sin embargo, dada la diversidad de versiones, tanto de BSD como de Linux, un exploit en Fetchmail puede causar distintos daños o nulos dependiendo del entorno, fundamentalmente en versiones del Kernel y del software de las herramientas de seguridad configuradas en la (SELinux o AppArmor de Novell).


Dejando a un lado la disyuntiva Windows vs Unix, me gustaría dedicar unas líneas a comentar el supuesto caso de exponer una máquina a la red Internet. ¿Se puede evitar ? A mi modo de ver, la respuesta es : Sí. Un sí rotundo. En este caso concreto hablamos de una máquina que recibirá el correo directamente desde los servidores SMTP del remitente. Se presupone que el nuevo (re)diseño de la arquitectura de red resultante debe como mínimo superar las prestaciones del anterior, prestando atención, a mi modo de ver, a los siguientes puntos.

Ancho de Banda: En ningún caso, en mi opinión , se debería conectar una maquina que sirva SMTP a una línea convencional, tipo ADSL o Cable, al tratarse de líneas asíncronas no se garantiza en ningún momento un caudal mínimo, que garantice un servicio fiable. Mi recomendación son líneas simétricas de datos , SHDSL o similares.
Direccionamiento: Se presuponen unos requisitos mínimos en la calidad del servicio de la nueva instalación. El direccionamiento Ipv4 de los actuales ISP deja mucho que desear. Compruebe una dirección IP al azar de la red 0.Red-217-127-182.staticIP.rima-tde.net, podrá comprobar como “se mezclan” en el pool de direcciones tanto direcciones públicas para usuarios domésticos como usuarios de perfil empresarial. ¿ Cree realmente que este rango estará totalmente limpio en listas RBL? Mi opinión es que no.

Mantenimiento: Imagine que en un momento dado, su router cabecera, el que envía los paquetes al Firewall para que los procese y los enrute hacia su máquina de correo, recibe del orden de 15.000 correos por minuto. ¿Qué haría en este supuesto? ¿ Dispone de los activos de red necesarios para bloquear automáticamente este tráfico? ¿ Dispone de los recursos humanos necesarios para solucionar esta incidencia? En mi opinión, a no ser que el número de usuarios superase los miles(4.000 usuarios por ejemplo), confiaría la recepción del correo electrónico a un proveedor de Hosting: Arsys, Dinahosting, 1&1...etc. A menudo, estas empresas gestionan sus propios Sistemas Autónomos

“Razones rápidas por las que no implementar Exchange”.
“Exclavitud empresarial”. Si se utilizan aplicaciones liberadas bajo estándares abiertos, las actualizaciones y parches de seguridad las tendrá disponibles de forma libre y gratuíta. Por el contrario si elige Exchange Server, Microsoft Corporation no le garantizará bajo ningún concepto la frecuencia de actualizaciones, ni mucho menos, el código fuente de la aplicación. No sólo para poder modificar el código, sino para poder compilarlo específicamente para su arquitectura y “sacar” el verdadero rendimiento de la aplicación que elija como su software de Servidor SMTP.
Económicas. Impensable pagar por las diferentes versiones de una aplicación. Es más, Postfix por ejemplo, sólo libera una versión de su aplicación; virtud o defecto. Mi opinión es que es una virtud; que combina flexibilidad, al poder adaptarse tanto grandes despliegues, como a pequeños componentes de hardware, tipo routers o access points.

Seguridad. Postfix, por ejemplo, lo ha desarrollado Wietse Venema, autor de herramientas como los TCP Wrappers o el Coroner Toolkit. Es un reputado experto en seguridad informática y eso , como mínimo es una garantía de calidad. Que Red Hat, IBM o Debian GNU/Linux incluyan Posftix en su cojunto de paquetes quiere decir algo, no cree? ¿Conoce algún sistema de Bugtraq? Visite securityfocus y podrá comprobar que Exchange tiene más de 1800 reportes de errores, en contraposición a los 220 de Postfix. Si ha todo esto sumamos que Posftix, o Qmail o Sendmail o Exim corren perfectamente en GNU/Linux, Mac OS X o diversos sabores de *BSD ¿ Duda de Posftix o software similar no es seguro?.
Flexibilidad. Combinar Postfix con Spamassassin o ClamAV es un ejemplo de flexibilidad. Empresas como este o Kaspersky han desarrollado versiones específicas de sus productos.¿Cree realmente que si este producto no tuviese la calidad suficiente, estas empresas habrían desarrollado versiones para GNU/Linux o BSD?
Estándares: Unos de las características fundamentales en el desarrollo de aplicaciones libres es el cumplimiento, estricto en la mayoría de las ocasiones, de estándares de programación y comunicaciones.
Virus. Hablar de correos electrónicos es hablar de virus. Una máquina Unix no se bloqueará por que el virus X se adjunte al correo Y.


Alberto Permuy Leal
Agosto 2009

lunes, 6 de abril de 2009

Alternativas a Postfix: ssmtp

Habitualmente , no necesitamos configurar un servidor de correo en un sistema Linux de escritorio. La mayoría de los clientes de email gráficos(GUI), como por ejemplo Mozilla Thunderbird, soportan configuraciones IMAP y POP3 para cuentas de Gmail.Pero, ¿cómo envías un email por el típico /usr/bin/mail o por un shell script? Aplicaciones como Sendmail,Postfix o Exim pueden ser configurados como relayhost de Gmail, pero requieren un mayor tiempo de configuración.

Podemos usar Gmail como "smart host" para enviar todos los mensajes desde un sistema Linux/Unix de escritorio. Necesitas una aplicación simple llamada ssmtp, que acepta el envio de mensajes desde una entrada estándar a buzones de correo específicos desde la línea de comandos , que redirige el mensaje al MTA configurado como relayhost. Los mensajes fallidos se depositan en el fichero dead.letter, dentro directorio home del usuario que envia el mensaje.
Instalar ssmtp
En sistemas Fedora/RedHat/CentOS

[root@localhost] yum install ssmtp

En sistemas Debian GNU/Linux / Ubuntu

[root@localhost] apt-get update && apt-get install ssmtp

Configurar gmail como relayhost:
Editamos el fichero /etc/ssmtp/ssmtp.conf con el siguiente contenido

AuthUser = usuario@gmail.com
AuthPass = passwordgmail
FromLineOverride = YES
mailhub = smtp.gmail.com:587
UserSTARTTLS = YES

También debemos asegurarnos de deshabilitar Sendmail:
En sistemas Fedora/RedHat/CentOS

[root@localhost] service sendmail stop
[root@localhost] chkconfig sendmail stop
[root@localhost] mkdir /root/.backup
[root@localhost] mv /usr/sbin/sendmail /root/.backup
[root@localhost] ln -s /usr/local/ssmtp/sbin/ssmtp /usr/sbin/sendmail

En sistemas Debian GNU/Linux / Ubuntu

[root@localhost] /etc/init.d/sendmail stop
[root@localhost] update-rc.d -f sendmail remove
[root@localhost] mkdir /root/.backup
[root@localhost] mv /usr/sbin/sendmail /root/.backup
[root@localhost] ln -s /usr/local/ssmtp/sbin/ssmtp /usr/sbin/sendmail

Ahora ya podemos usar el comando mail o mailx para enviar mensajes, y probar la configuración con el siguiente ejemplo:

echo "Email Prueba" | mail -s "Probando 1,2,3" usuario@dominio.com

Nota acerca de ssmtp:
ssmtp funciona perfectamente para equipos de escritorio, pero no es un reemplazo a Sendmail, Postfix o Qmail.
Nota del traductor: Añadida la distinción entre Debian/Fedora a la hora de deshabilitar sendmail.El artículo original lo podéis encontrar aquí , escrito por Vivek Gite.