[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Instalando el MTA de Postfix

Esta página es complementaria al artículo principal: Creando un servidor de correo virtual con Postfix, Dovecot y MySQL

Postfix es un agente de transporte de correo popular y seguro, o MTA.

Construiremos e instalaremos Postfix usando el script de compilación de SlackBuilds.org o SBo. Los pasos que se muestran aquí utilizan versiones actuales a partir de este escrito, pero debe usar la última versión aplicable a su versión de Slackware en el momento en que la construya.

Por defecto, el script postfix SBo se compila con dovecot para SASL, lo que necesitamos, pero sin la base de datos también necesitamos. Es posible que desee comprobar la secuencia de comandos de SlackBuild en el momento de crear cambios u otras opciones.

Asumiremos que usted está familiarizado con SlackBuilds y que le proporcionaremos solo los pasos esenciales para crear Postfix aquí. Para obtener información más detallada, visite la SBo How-To page.

Si se está construyendo para un VPS de Linode.com, deberá instalar el paquete kernel-headers o, preferiblemente, construir en una máquina local y luego transferir el paquete a la plataforma del VPS. También deberá instalar el paquete db48 que falta en Linode.com Slackware.

Los pasos esenciales para construir postfix con el soporte de base de datos requerido son (como root):

cd /tmp
wget http://slackbuilds.org/slackbuilds/14.1/network/postfix.tar.gz
tar -xvzf postfix.tar.gz
cd postfix
cat postfix.info
...
DOWNLOAD="http://postfix.cs.utah.edu/source/official/postfix-2.11.3.tar.gz"
MD5SUM="c3f0f51d8865559b40e9350eb3816011"
...

# Fetch archive from URL in DOWNLOAD line #
wget http://postfix.cs.utah.edu/source/official/postfix-2.11.3.tar.gz

# Verify integrity of archive - compare to MD5SUM line #
md5sum postfix-2.11.3.tar.gz
c3f0f51d8865559b40e9350eb3816011

# Now build with database support #
chmod +x postfix.SlackBuild
DATABASE=mysql ./postfix.SlackBuild

El paquete resultante se encontrará en /tmp/postfix-2.11.3-x86_64-1_SBo.tgz (o similar para la versión de 32 bits).

Copie el archivo del paquete a la plataforma de destino si es necesario e instale:

installpkg {path-to/}postfix-2.11.3-x86_64-1_SBo.tgz

Configurando el MTA de Postfix

Debe familiarizarse con la postfix documentation para configurar y administrar adecuadamente su servidor de correo. Además, se instala un conjunto completo de documentación en línea para su versión desde el paquete a /usr/doc/postfix-2.11.3/html/, conozca qué hay allí.

¡Usted debe familiarizarse con las herramientas disponibles para poder administrar y mantener de manera segura su servidor de correo! Tómese el tiempo necesario para leer las páginas man - man postfix, man postconf, man master como mínimo. Y familiarícese con los recursos disponibles en la sección man postfix: SEE ALSO , antes ¡de iniciar su servidor de correo!

Lo que sigue es una configuración mínima para operar de manera segura un servidor de correo electrónico virtual en Internet, pero seguramente querrá adaptarlo a sus necesidades específicas.

Postfix tiene dos archivos de configuración principales:

  • /etc/postfix/master.cf
  • /etc/postfix/main.cf

El archivo master.cf gobierna la operación del demonio maestro que escucha los eventos de correo y administra los muchos procesos de utilidad de postfix.

Queremos escuchar las solicitudes de SMTP, SMTPS y SUBMISIÓN, así que…

vi /etc/postfix/master.cf

# Uncomment the following lines #
smtp      inet  n       -       n       -       -       smtpd
submission inet n       -       n       -       -       smtpd
smtps     inet  n       -       n       -       -       smtpd

A continuación, queremos configurar el entorno de red básico para nuestro MTA postfix en /etc/postfix/main.cf. Sin embargo, el main.cf predeterminado es un archivo muy grande con muchos comentarios detallados y puede ser propenso a errores de configuración y administración. Por lo tanto, le recomendamos que guarde una copia del original y escriba la versión de producción desde cero, realmente no es muy larga.

mv /etc/postfix/main.cf /etc/postfix/main.cf.original
vi /etc/postfix/main.cf

# Enter the following lines #

mynetworks_style = host
myorigin = $mydomain

# Change my-domain.com to the actual domain name of your server #
mydomain = my-domain.com

# mydestination must be localhost only to allow postfix to deliver non-virtual system mail #
mydestination = localhost

#IMPORTANT - relay_domains should be empty to prevent your server from becoming a spam relay!
#If you actually need to relay to other domains READ THE DOCUMENTATION CAREFULLY!
relay_domains =

# We have no local users, so no local notifications #
biff = no

Now we need to configure the secure aspects of our mail server, again in main.cf:

vi /etc/postfix/main.cf

# Enter the following lines #

# SSL certificates will be created at these locations when we configure dovecot #
smtpd_tls_cert_file = /etc/ssl/localcerts/dove.pem
smtpd_tls_key_file = /etc/ssl/private/dove.key

#Accept only secure smtp connections
smtpd_use_tls = yes
smtpd_tls_auth_only = yes

#Tell postfix to use dovecot for SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

#Allow ONLY authenticated users to send email
#Do not accept incoming email for other than local mail boxes (i.e. virtual users)
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

Finalmente, debemos configurar postfix para usar la base de datos para identificar los dominios permitidos y autenticar las solicitudes de smtp en los buzones de correo virtual. De nuevo, en main.cf …

vi /etc/postfix/main.cf

# Enter the following lines #

#Tell postfix to use dovecot lmtp for virtual mail delivery
virtual_transport = lmtp:unix:private/dovecot-lmtp

#Set file paths to mysql handlers for domains, mail boxes and aliases
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

#Set localhost aliases path
alias_maps = hash:/etc/aliases

Los últimos cuatro archivos aún no existen en el sistema y, por lo tanto, deben crearse. Los archivos con el prefijo “virtual” indican a postfix cómo interactuar con la base de datos mysql. El archivo alias_maps final le dice al proceso de postfix dónde enviar mensajes operativos.

Primero debemos decirle a Postfix cómo identificar los dominios virtuales para los que maneja el correo proporcionando una consulta adecuada de la base de datos virtual. Esta consulta debe devolver verdadero si el dominio está en la base de datos:

vi /etc/postfix/mysql-virtual-mailbox-domains.cf

# Enter the following lines #
user= mailuser
password = {your mailuser password}
hosts = localhost
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'

Puede probar la conexión de la base de datos y consultar con la utilidad de mapa posterior …

postmap -q my-domain.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

Esto devolverá verdadero (1) si se encuentra el dominio, NULL si no se encuentra, y un mensaje de error si la consulta o la conexión no están configuradas correctamente.

También tenga en cuenta que otras opciones de conexión a la base de datos están disponibles, por ejemplo, si se está conectando a un servidor de base de datos remoto o varios servidores. Consulte la página del manual de mysql_table del paquete postfix para obtener información completa sobre los parámetros de conexión.

A continuación, debemos indicar a Postfix cómo identificar a los usuarios de buzones virtuales válidos. Esta consulta también debe devolver verdadero si el buzón de correo existe en la base de datos.

vi /etc/postfix/mysql-virtual-mailbox-maps.cf

# Enter the following lines #
user= mailuser
password = {your mailuser password}
hosts = localhost
dbname = mailserver
query = SELECT 1 FROM virtual_users WHERE email='%s'

Puede probar la conexión de la base de datos y consultar con la utilidad de mapa posterior …

postmap -q me@my-domain.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

A continuación, debemos decirle a postfix cómo identificar los alias válidos en la base de datos. Esta consulta debe devolver la dirección de destino para el alias.

vi /etc/postfix/mysql-virtual-alias-maps.cf

# Enter the following lines #
user= mailuser
password = {your mailuser password}
hosts = localhost
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'

Puede probar la conexión de la base de datos y consultar con la utilidad de mapa posterior …

postmap -q alias@my-domain.com mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Finalmente, debemos proporcionar alias locales para el administrador de correo y el correo raíz en la máquina local.

vi /etc/aliases

# Enter the following lines #
postmaster: root
root: root

Después de crear el archivo de alias, debe usar la utilidad newaliases para construir la base de datos de alias local …

newaliases

Esto creará el archivo /etc/aliases.db en formato utilizable por postfix.

Es importante proporcionar el alias postmaster para que postfix pueda enviar mensajes operativos a un destino real. La dirección de destino puede ser una cuenta de usuario local o puede ser un buzón de correo virtual válido.

Volver a la página principal del artículo

Fuentes

 es:howtos:network_services:postfix_dovecot_mysql:postfix ()