Tabla de Contenidos

Postfix MTA

Descripción

Configuración general del servidor de Correo Postfix (Nuestro Favorito).

Aqui esta lo general. El hardening (aseguramiento) como el anti-spam y el anti-virus estan en Anti-todo.

Prerequistos

Sistema operativo basico Skina 

Procedimiento

Realmente poner a funcionar postfix, es casi no tocarlo. Los cambios que se hacen son para adaptarlo a ciertas necesidades particulares, pero este funciona casi recien se instala.

1. Para colocar postfix a funcionar, quiza le sea necesario cambiar ciertos valores

- Por si el nombre no es del todo válido, se pone a mano (opcional)

myhostname = sinternet.skina.com.co

mydomain = skina.com.co
myorigin = $mydomain             # Esta es para la enmascar

- para que sirva por todas las interfaces de red incluyendo localhost (suele venir solo para localhost)

inet_interfaces = all

- para que reciba por todos nombres (incluido el dominio)

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost.localdomain

- por defecto hace relay a la subred entonces se define

mynetworks = 168.100.189.0/28, 127.0.0.0/8

- pa que sea discreto y no se anuncie ni que es

smtpd_banner = $myhostname ESMTP


2. Reinicie el servicio

#> service postfix restart


3. Corra pruebas de mails

4. No lo deje asi .. hagale hardening de todos modos que estan en Anti-todo.

 

Configuraciones Adicionales

1. Como montar autenticacion Cyrus SASL

Primero habilite el soporte de sasl en la configuracion de postfix /etc/postfix/main.c

#### SASL
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = smtpd
 

Despues de esto incluya una restriccion

smtpd_recipient_restrictions =  permit_mynetworks,  permit_sasl_authenticated, reject_unauth_destination

Ahora corra el testeo a mano

$ telnet server.example.com 25. . .220 server.example.com ESMTP PostfixEHLO client.example.com250-server.example.com250-PIPELINING250-SIZE 10240000250-ETRN250-AUTH DIGEST-MD5 PLAIN CRAM-MD5250 8BITMIMEAUTH PLAIN AHBhZ2luYXMAcGFzc3dkcm9vdA==235 Authentication successful

Y como saca el encriptado para probar

perl -MMIME::Base64 -e     'print encode_base64(“\\0paginas\\0passwdroot”);'

Eso esta en http://www.postfix.org/SASL_README.html

2. Relay con contraseña entre dos servidores

con

mail.ispserver.com username:password
y corrale postmap .. y luego en el archivo main.cf pongale

# Para poder usar skinatech como relay
relayhost = mail.ipserver.com
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
 

Mas adelante esta la de google

 

3. Personalizar los mensajes de failure, delay, success, verify. 

Por defecto  postfix maneja una plantilla de mensajes para cuatro posibles situaciones: 

- Falla en la entrega del mensaje

- Retrasos en la entrega del mensaje

- Entrega correcta del mensaje

- Estado de la entrega del mensaje

 

Si es necesario modificar los mensajes que postfix presenta por defecto:

Copie el archivo plantilla

cp /etc/postfix/bounce.cf.default /etc/postfix/bounce.cf

Modifiquelo segun sus necesidades, si va a utilizar caracteres acentuados asegurese de utilizar la codificacion correcta (Charset: UTF-8) y pruebe que postfix lo puede desplegar correctamente con el siguiente comando:

postconf -b /etc/postfix/bounce.cf

 

Si muestra el archivo tal cual lo configuro, agreguelo al main.cf:

bounce_template_file=/etc/postfix/bounce.cf

Reinicie servicios…

 

4. Configuracion de disclaimer

Para agregar un mensaje de disclaimer es necesario instalar el paquete altermime en su version mas reciente.

En el directorio /etc/postfix cree los siguientes archivos con el contenido especificado:

====================================
/etc/postfix/footer.sh
======
 
`#!/bin/sh
`# Se define workdir y ejecutable de envío de mensaje
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail.postfix

`# Ruta de el archivo que contiene el nombre de los dominios a los cuales se les debe agregar disclaimer
DISCLAIMER_DOMAIN=/etc/postfix/disclaimer_domain

`# Se definen códigos estándar de salida en caso de error.
`# Exit codes from <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69

`# Limpieza de temporales en caso de presentarse algún error en el envío anterior
trap “rm -f in.$$” 0 1 2 3 15

`# Verificación de existencia del directorio
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit
$EX_TEMPFAIL; }

`# Guardando mail en el archivo temporal in.$$
cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }

`# Extrayendo dominio de origen
from_domain=`grep -m 1 “From:” in.$$ | cut -d “<” -f 2 | cut -d “>” -f 1 | cut -d “@” -f 2`
 
`# SI el dominio de origen coincide con el de la lista, agrega  disclaimer ubicado en
`#/etc/postfix/footer.txt

if [ `grep -wi ^${from_domain}$ ${DISCLAIMER_DOMAIN}` ]; then
  /usr/bin/altermime –input=in.$$ \\
                   –disclaimer=/etc/postfix/footer.txt \\
                   –disclaimer-html=/etc/postfix/footer.txt \\
                   –xheader=“X-Copyrighted-Material: Please visit http://www.company.com/privacy.htm” || \\
                    { echo Message content rejected; exit $EX_UNAVAILABLE; }
fi

`# Reinyecta correo con o sin modificaciones
`# Se agrega opcion -oi para evitar problemas con correos que contengan formato no estandar.
$SENDMAIL -oi “$@” <in.$$`

**==========================================
**

====================================
/etc/postfix/footer.txt
======
 
`###### Algun texto de disclaimer, puede agregarse formateo html para visualizacion mas agradable en clientes de correo.#####


==========================================


====================================
/etc/postfix/disclaimer-domains
======
 
  `### Dominios de origen a los cuales se les agrega el disclaimer (separados por salto de linea) ###
 
skinatech.com

==========================================

Modifique el archivo /etc/postfix/master.cf

`#=========================================================================
`# service       type  private unpriv  chroot  wakeup  maxproc command + args
`#               (yes)   (yes)   (yes)   (never) (100)
`#=========================================================================
`# by skina, no se agrega disclaimer a los correos de la maquina
127.0.0.1:25     inet      n       -       n       -       -       smtpd
`# by skina, se agrega disclaimer a loq ue se reciba por la interfaz con esa IP
172.24.0.5:25    inet      n       -       n       -       -       smtpd
`# by skina, se agrega filtro de contenido llamado dfilt
   -o content_filter=dfilt:

Agregue al final del archivo

`# by skina, se define la instancia dfilt y sus caracteristicas
dfilt           unix      -        n      n       -        -      pipe
  flags=Rq user=filter argv=/etc/postfix/footer.sh -f ${sender} – ${recipient}

`# Descripción:
`# dfilt es un servicio tipo unix que corre mediante un pipe con el usuario filter y ejecuta el script
`# /etc/postfix/footer.sh y envía como parámetros: el que envía y hacia quien va el mensaje.


Reinicie postfix …
 

5. Como montar SASL con Dovecot

– http://www.postfix.org/SASL_README.html#server_sasl_enable
 

6. Relay con google

Mas importante de todo .. en el sistema de seguridad de la cuenta en gmail tiene que prender “allow less secure apps”

https://myaccount.google.com/security#connectedapps


relayhost = smtp.gmail.com:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

https://www.howtoforge.com/tutorial/configure-postfix-to-use-gmail-as-a-mail-relay/
 

7. Integracion con Amazon SES


https://docs.aws.amazon.com/ses/latest/dg/postfix.html
 

8. Usando Relay con OAuth2


https://mmogilvi.users.sourceforge.net/software/oauthbearer.html
 

Operaciones prácticas

1. Eliminar la cola de correos

Para eliminar toda la cola de correos digite el siguiente comando

  postsuper -d ALL

Problemas

1. Cambio el nombre de la maquina o lo pasa a otra y postfix ta muerto

A veces postfix no anda en la migrada. Es usualmente porque no coge el nombre de la maquina. Entonces es necesario desinstalar, borrar todo y volverlo a instalar. Sobretodo borre el /var/spool/postfix

OJO.. saque backup de /etc/postfix porque esto le sirve. 

2. Mucho Trafico y se quedan en colas

“For high volume sites a key tuning parameter is the number of “smtp” delivery agents allocated to the “smtp” and “relay” transports. High volume sites tend to send to many different destinations, many of which may be down or slow, so a good fraction of the available delivery agents will be blocked waiting for slow sites. Also mail destined across the globe will incur large SMTP command-response latencies, so high message throughput can only be achieved with more concurrent delivery agents.”

En Publicar: Aumentamos la capacidad de todas las colas en master.cf

smtp, relay y 127.0.0.1:10025 a 200 (de un default de 100) y smtp-amavis a 10 (de un default de 2).

3. no puede enviar correo a muchas direcciones incluyendo unas malas

fallback_transport = lmtp

Referencias

- Pagina web de postfix tiene la configuración básica de Postfix y  La descripcion de los parametros completos del main.cf

- Otra buena que incluye algo de antispam en flakshack.  –

- Esta es mejor que la nuestra http://www.servitux.org/view.php/page/postfix

- Con configuraciones especiales http://linux.cudeso.be/linuxdoc/postfix.php  –

- La referencia total http://www.postfix.org/postconf.5.html

- Afinamiento desde mailman http://wiki.list.org/display/DOC/MTA+Performance+Tuning+Tips+for+Postfix –

FIN

15-Marzo-2006 J.E.Gomez v1.0 Primera version
04-Mayo-2007 J.F.Saganome v1.1 Segunda version

28-Enero-2010 J. C. Pineros v1.2 Personalizar los mensajes de failure, delay, success, verify. 

04-Octubre-2012 J. C. Pineros v1.3 Agregar disclaimer a correos salientes.

 


Advertencia

Este documento es privado y es de uso exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal.