Postfix (Español)

Postfix es un agente de transferencia de correo que de acuerdo con su sitio web:

intenta ser rápido, fácil de administrar y seguro, al mismo tiempo que es lo suficientemente compatible con sendmail para no molestar a los usuarios existentes. Por lo tanto, el exterior es parecido a sendmail, pero el interior es completamente diferente.
Esta traducción de Postfix fue revisada el 2020-12-06. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Este artículo se basa en Servidor de correo. El objetivo de este artículo es configurar Postfix y explicar qué hacen los archivos de configuración básicos. Hay instrucciones para configurar la entrega solo para usuarios locales del sistema y un enlace a una guía para la entrega a usuarios virtuales.

Instalación

Instale el paquete postfix.

Configuración

Véase Configuración básica de Postfix. Los archivos de configuración están en /etc/postfix por defecto. Los dos archivos más importantes son:

  • master.cf, define qué servicios de Postfix están habilitados y cómo se conectan los clientes con ellos, véase master(5)
  • , el archivo de configuración principal, véase

Los cambios de configuración necesitan un reinicio de para tener efecto.

Alias

Véase .

Puede especificar los alias (también conocidos como reenviadores) en /etc/postfix/aliases.

Debe asignar todo el correo dirigido a root a otra cuenta, ya que no es una buena idea leer el correo como superusuario.

Descomente la siguiente línea, y cambie a una cuenta real.

root: tú

Una vez que haya terminado de editar /etc/postfix/aliases debe ejecutar la orden postalias:

postalias /etc/postfix/aliases

Para cambios posteriores puedes utilizar:

newaliases

Correo local

Para enviar correo solo a los usuarios locales del sistema (que están en ) actualice para reflejar la siguiente configuración. Descomente, cambie o añada las siguientes líneas:

myhostname = localhost
mydomain = localdomain
mydestination = $myhostname, localhost.$mydomain, localhost
inet_interfaces = $myhostname, localhost
mynetworks_style = host
default_transport = error: outside mail is not deliverable

Todos los demás ajustes pueden permanecer sin cambios. Después de configurar el archivo de configuración anterior, es posible que desee configurar algunos #Alias y luego #Iniciar Postfix.

Correo virtual

El correo virtual es un correo que no se asigna a una cuenta de usuario ().

Véase Virtual user mail system with Postfix, Dovecot and Roundcube para una guía completa de cómo configurarlo.

Comprobar configuración

Ejecute la orden . Debería mostrar cualquier cosa que pueda haber hecho mal en un archivo de configuración.

Para ver todas sus configuraciones, escriba . Para ver en qué se diferencian de los valores por defecto, pruebe .

Iniciar Postfix

Inicie/active .

TLS

Para más información, véase Soporte TLS en Postfix.

SMTP seguro (enviando)

Por defecto, Postfix/sendmailno enviará correo electrónico cifrado a otros servidores SMTP. Para utilizar TLS cuando esté disponible, añada la siguiente línea a :

Para forzar TLS (y fallar cuando el servidor remoto no lo soporte), cambie may a encrypt. Note, sin embargo, que esto viola el RFC:2487 si el servidor SMTP es referenciado públicamente.

SMTP seguro (recibiendo)

Por defecto, Postfix no aceptará el correo seguro.

Necesita obtener un certificado. Apunte Postfix a sus certificados TLS añadiendo las líneas siguientes a :

Hay dos formas de aceptar el correo seguro. STARTTLS sobre SMTP (puerto 587) y SMTPS (puerto 465). Este último fue previamente desaprobado pero fue reintegrado por el RFC:8314.

Para activar STARTTLS sobre SMTP (puerto 587), descomente las siguientes líneas en master.cf:

Las opciones permanecen comentadas porque no están definidas en main.cf por defecto. Si defide configurar alguna , descomente esas líneas también.

Para activar SMTPS (puerto 465), descomente las líneas siguientes en master.cf:

Y en primera línea, reemplace con . (este es el nombre oficial del servicio según IANA; Postfix todavía hace referencia al nombre antiguo)

El razonamiento que rodea a las líneas $smtpd_*_restrictions es el mismo que arriba.

Consejos y trucos

Lista negra de correos electrónicos entrantes

La lista negra de correos electrónicos entrantes por dirección del remitente se puede hacer fácilmente con Postfix.

Cree y abra el fichero /etc/postfix/blacklist_incoming y añada la dirección de correo electrónico del remitente:

usuario@ejemplo.com REJECT

Luego use la orden para crear una base de datos:

# postmap hash:blacklist_incoming

Añada el siguiente código antes de la primera regla permisiva en :

smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/blacklist_incoming

Finalmente reinicie .

Ocultar la IP y el agente de usuario del remitente en el encabezado Received

Este es un problema de privacidad principalmente, si utiliza Thunderbird y envía un correo electrónico. El encabezado Received contendrá su IP LAN y WAN e información sobre el cliente de correo electrónico que utilizó. (Fuente original: AskUbuntu) Lo que queremos hacer es eliminar el encabezado Received de los correos electrónicos salientes.

Para hacer esto, primero añada la siguiente línea a :

smtp_header_checks = regexp:/etc/postfix/smtp_header_checks

Cree con este contenido:

/^Received: .*/     IGNORE
/^User-Agent: .*/   IGNORE

Finalmente, reinicie .

Postfix en una jaula chroot

Postfix no se pone en una jaula chroot por defecto. La documentación de Postfix proporciona detalles sobre cómo llevar a cabo tal enjaulado. Los pasos se describen a continuación y se basan en el script de configuración de chroot que se proporciona en el código fuente de Postfix.

Primero, entre en el archivo master.cf en el directorio /etc/postfix y cambie todas las entradas chroot a 'yes' (y) excepto para los servicios , , , , y

Segundo, cree dos funciones que nos ayudarán más adelante con la copia de archivos en la jaula chroot (véase el último paso)

CP="cp -p"
cond_copy() {
  # find files as per pattern in $1
  # if any, copy to directory $2
  dir=`dirname "$1"`
  pat=`basename "$1"`
  lr=`find "$dir" -maxdepth 1 -name "$pat"`
  if test ! -d "$2" ; then exit 1 ; fi
  if test "x$lr" != "x" ; then $CP $1 "$2" ; fi
}

A continuación, haga los nuevos directorios para la jaula:

set -e
umask 022
POSTFIX_DIR=${POSTFIX_DIR-/var/spool/postfix}
cd ${POSTFIX_DIR}
mkdir -p etc lib usr/lib/zoneinfo
test -d /lib64 && mkdir -p lib64

Encuentra el archivo localtime:

lt=/etc/localtime
if test ! -f $lt ; then lt=/usr/lib/zoneinfo/localtime ; fi
if test ! -f $lt ; then lt=/usr/share/zoneinfo/localtime ; fi
if test ! -f $lt ; then echo "cannot find localtime" ; exit 1 ; fi
rm -f etc/localtime

Copie localtime y algunos archivos de sistema en el directorio etc del chroot:

$CP -f $lt /etc/services /etc/resolv.conf /etc/nsswitch.conf etc
$CP -f /etc/host.conf /etc/hosts /etc/passwd etc
ln -s -f /etc/localtime usr/lib/zoneinfo

Copie las bibliotecas requeridas en el chroot utilizando la función creada previamente cond_copy

cond_copy '/usr/lib/libnss_*.so*' lib
cond_copy '/usr/lib/libresolv.so*' lib
cond_copy '/usr/lib/libdb.so*' lib

Y no olvide recargar Postfix.

Registro de recursos

DANE admite varios tipos de registros, sin embargo, no todos ellos son adecuados en Postfix.

El uso del certificado 0 no es compatible, el 1 se asigna al 3 y 2 es opcional, por lo tanto es recomendable publicar un registro "3". Más en Registros de recursos.

Configuración

DANE oportunista (opportunistic) se configura de esta manera:

Para utilizar políticas por dominio, por ejemplo DANE oportunista para ejemplo.org y DANE obligatorio (mandatory) para ejemplo.com, utilice algo como esto:

transport
ejemplo.com dane
ejemplo.org dane

La documentación completa se encuentra aquí.

Extras

    Postgrey

    Postgrey se puede utilizar para activar listas grises en un servidor de correo Postfix.

    Instalación

    Instale el paquete . Para tenerlo funcionando rápidamente, edite el archivo de configuración de Postfix y añada estas líneas:

    /etc/postfix/main.cf
    smtpd_recipient_restrictions =
      check_policy_service inet:127.0.0.1:10030
    

    Luego inicie/active el servicio . Después, recargue el servicio . Ahora la lista gris debería estar activada.

    Configuración

    La configuración se realiza mediante la edición del archivo . Primero cópielo para editarlo.

    # cp /usr/lib/systemd/system/postgrey.service /etc/systemd/system/

    Lista blanca

    Para añadir listas blancas automáticas (los envíos exitosos entran en la lista blanca y no tienen que esperar nunca más), puede añadir la opción y reemplazar por un número adecuadamente pequeño (o dejarlo en su valor por defecto de 5).

    ...en realidad, el método preferido debería ser la anulación (override):

    cat /etc/systemd/system/postgrey.service.d/override.conf
    [Service]
    ExecStart=
    ExecStart=/usr/bin/postgrey --inet=127.0.0.1:10030 \
           --pidfile=/run/postgrey/postgrey.pid \
           --group=postgrey --user=postgrey \
           --daemonize \
           --greylist-text="Greylisted for %%s seconds" \
           --auto-whitelist-clients

    Para añadir su propia lista de clientes en la lista blanca además de los predeterminados, cree el archivo e introduzca un dominio por línea, luego reinicie para que los cambios surtan efecto.

    Solución de problemas

    Si especifica --unix=/path/to/socket y el archivo de socket no se crea, asegúrese de haber eliminado el valor predeterminado del archivo de servicio.

    Para una documentación completa de las posibles opciones véase perldoc postgrey.

    SpamAssassin

    Esta sección describe cómo integrar SpamAssassin.

    Configuración genérica independiente de SpamAssassin

    Edite y añada el filtro de contenido bajo smtp.

    También añada la siguiente entrada de servicio para SpamAssassin.

    Ahora puede iniciar y activar .

    SpamAssassin combinado con Dovecot LDA / Sieve (Filtrado de correo)

    Configure LDA y Sieve-Plugin como se describe en Dovecot#Sieve. Pero ignore la última línea .

    En su lugar, añada una tubería (pipe) en :

     dovecot   unix  -       n       n       -       -       pipe
           flags=DRhu user=vmail:vmail argv=/usr/bin/vendor_perl/spamc -u spamd -e /usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}

    Y actívelo en :

     virtual_transport = dovecot

    SpamAssassin combinado con Dovecot LMTP / Sieve

    Configure LMTP y Sieve como se describe en Dovecot#Sieve.

    Edite y añada:

     sieve_before = /etc/dovecot/sieve.before.d/
     sieve_extensions = +vnd.dovecot.filter
     sieve_plugins = sieve_extprograms
     sieve_filter_bin_dir = /etc/dovecot/sieve-filter
     sieve_filter_exec_timeout = 120s #this is often needed for the long running spamassassin scans, default is otherwise 10s

    Cree el directorio y coloque spamassassin como un binario que pueda ser ejecutado por dovecot:

     # mkdir /etc/dovecot/sieve-filter
     # ln -s /usr/bin/vendor_perl/spamc /etc/dovecot/sieve-filter/spamc

    Cree un nuevo archivo, que contenga:

     require [ "vnd.dovecot.filter" ];
     filter "spamc" [ "-d", "127.0.0.1", "--no-safe-fallback" ];

    Compile las reglas sieve spamassassin.svbin:

     # cd /etc/dovecot/sieve.before.d
     # sievec spamassassin.sieve

    Finalmente, reinicie .

    Procesamiento de correo basado en reglas

    Con los servicios de políticas se puede ajustar fácilmente el comportamiento de Postfix en la entrega de correos.

    y policyd (policyd-mysqlAUR,  o ) proporcionan servicios para hacerlo.

    Esto le permite, por ejemplo, implementar listas grises y negras de remitentes y receptores, así como el control de políticas SPF.

    Los servicios de políticas son servicios independientes y están conectados a Postfix tal que así: La colocación de los servicios de políticas al final de la cola reduce la carga, ya que solo se procesan los correos legítimos. Asegúrese de colocarlo antes de la primera declaración permisiva para capturar todos los mensajes entrantes.

    Marco de políticas del remitente

    Para utilizar el marco de políticas del remitente con Postfix, puede instale , o .

    Con spf-engine o python-postfix-policyd-spf

    Edite /etc/python-policyd-spf/policyd-spf.conf a sus necesidades. Una versión ampliamente comentada se puede encontrar en . Preste especial atención a la política de verificación HELO, ya que la configuración estándar rechaza estrictamente los fallos HELO.

    En el archivo , añada un tiempo de espera para policyd:

    A continuación, añada un transporte:

    Por último, debe añadir policyd a smtpd_recipient_restrictions. Para minimizar la carga, sitúela al final de las restricciones pero por encima de cualquier línea DNSBL:

    Ahora recargue el servicio .

    Puede comprobar su configuración con lo siguiente:

    Con postfix-policyd-spf-perl

    Realice el mismo proceso con postfix como con python-postfix-policyd-spf, pero con las siguientes diferencias:

    Tiempo de espera para policyd en el archivo :

    Transporte:

    /etc/postfix/master.cf
    policy  unix  -       n       n       -       0       spawn
         user=nobody argv=/usr/lib/postfix/postfix-policyd-spf-perl

    Añada el policyd a smtpd_recipient_restrictions:

    Esquema de reescritura del remitente

    Para utilizar el esquema de reescritura del remitente con Postfix, instale y ajuste la configuración:

    Active e inicie el demonio, asegurándose de que se ejecute también después de reiniciar. A continuación, configure Postfix en consecuencia ajustando las siguientes líneas:

    Reinicie Postfix y comience a reenviar correo.

    Solución de problemas

    Warning: "database /etc/postfix/*.db is older than source file .."

    Si recibe alguna o ambas advertencias con journalctl:

    warning: database /etc/postfix/virtual.db is older than source file /etc/postfix/virtual
    warning: database /etc/postfix/transport.db is older than source file /etc/postfix/transport

    Entonces puede solucionarlo utilizando estas órdenes dependiendo de los mensajes que reciba:

    postmap /etc/postfix/transport
    postmap /etc/postfix/virtual

    Y reiniciar .

    Véase también

    gollark: Clearly we should try to hasten that day by creating and spreading such memes.
    gollark: Ah.
    gollark: Do you actually know... Hebrew, or whatever that is?
    gollark: I feel like I'm missing some sort of cultural context here.
    gollark: Finally my years of German lessons come in slightly useful.
    This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.