====== 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 [[egw/wiki/index.php?page=Correo+Anti+Todo&lang=es-es|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 [[egw/wiki/index.php?page=Correo+Anti+Todo&lang=es-es|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 \\
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 "$@"