Servidor de correo · 6 min read · Dec 25, 2025
Un Servidor de Correo Simple en Arch Linux (Postfix + Dovecot)
Un Servidor de Correo Simple en Arch Linux (Postfix + Dovecot)
Autor: Jeffrey Gelens
Versión: 1.3
Fecha: 04-12-2009
Introducción
Este tutorial describe cómo instalar un servidor de correo completo utilizando Postfix y Dovecot en una máquina Arch Linux o VPS. Este tutorial específico se basa en mi VPS de 256MB. Se requiere conocimiento básico de Linux ya que no estoy describiendo cada paso en detalle.
Sistema Base
La imagen base es Arch Linux 2008.06. Después de iniciar, es mejor deshabilitar los inicios de sesión de root en tu servidor SSH y crear un nuevo usuario de la siguiente manera:
adduser
usermod -a -G wheel,users,nobody,mail Es opcional clasificar los espejos de Arch Linux por velocidad, pero podría acelerar la instalación:
pacman -Sy
pacman -S python
sed -ie'' 's/^#S/S/g' /etc/pacman.d/mirrorlist
rankmirrors -v /etc/pacman.d/mirrorlist | tee /etc/pacman.d/mirrorlist.new && mv /etc/pacman.d/mirrorlist.new /etc/pacman.d/mirrorlistInstala los paquetes esenciales para esta configuración:
pacman -Syu
pacman -S sudo base-devel absServidores de Correo
Ahora que hemos instalado los paquetes básicos, el siguiente paso es instalar los servidores de correo. Como servidor SMTP, instalaremos Postgrey, que son las mejores herramientas contra el spam, así que también instalemos estos. La lista gris es en este momento una forma muy efectiva de bloquear el spam sin escanear el mensaje en sí, por lo tanto no desperdicia ciclos de CPU. En mi servidor está bloqueando aproximadamente el 95% de todo el spam, el otro 5% es manejado por Spamassassin. La única desventaja de la lista gris es que los correos electrónicos entrantes se retrasan un par de minutos.
pacman -S postfix dovecot spamassassin procmail
groupadd -g 5001 spamd
useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin -m spamd
chown spamd:spamd /var/lib/spamassassinSpamassassin
Edita el –max-children a tu gusto. Spamassassin utiliza mucha memoria, así que para un servidor de correo con solo un par de usuarios, 1 hijo es suficiente.
/etc/conf.d/spamd
SAHOME="/var/lib/spamassassin/"
SPAMD_OPTS="-c --max-children 1 --username spamd -H ${SAHOME} -s ${SAHOME}spamd.log --pidfile /var/run/spamd.pid"Certificados
Primero tenemos que generar algunos certificados autofirmados para Dovecot y Postfix. Te pedirá una frase de contraseña, cualquier cadena aleatoria está bien, no tienes que recordarla.
cd /etc/ssl/certs
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout mail.key -out mail.crt
openssl rsa -in mail.key -out mail.key
mv mail.key /etc/ssl/privateDovecot
Configuraremos Dovecot y Postfix para usar la estructura Maildir para almacenar correos electrónicos. Esto almacena el correo electrónico de cada usuario en su directorio personal y no en una base de datos. Esto está bien para esta configuración, pero para un mayor número de usuarios es mejor usar MySQL o PostgreSQL para el almacenamiento. Dovecot se configurará para que los usuarios puedan usar IMAP e IMAPs (SSL). Además, Dovecot tiene un servidor de autenticación SASL incorporado, por lo que no tenemos que configurar un servidor SASL separado, ahorrando así memoria.
/etc/dovecot/dovecot.conf
protocols = imap imaps
disable_plaintext_auth = yes
log_timestamp = "%b %d %H:%M:%S "
ssl = yes
ssl_cert_file = /etc/ssl/certs/mail.crt
ssl_key_file = /etc/ssl/private/mail.key
mail_location = maildir:~/Maildir
mail_access_groups = mail
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
protocol imap {
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}
auth default {
mechanisms = plain login
passdb pam {
}
userdb passwd {
}
user = root
socket listen {
client {
path = /var/run/dovecot/auth-client
user = postfix
group = postfix
mode = 0660
}
}
}Postfix
A continuación está Postfix, el archivo de configuración es muy complejo. Afortunadamente para ti, hice toda la investigación, así que puedes copiar y pegar casi todo. Los siguientes ajustes aún deben ser cambiados:
myhostnameEsta es la ubicación de tus servidores de correo (por ejemplo, mail.ejemplo.com).myoriginEste es el dominio después del @ en las direcciones de correo electrónico (por ejemplo, jeffrey@ejemplo.com).virtual_alias_domainsLo mismo que myorigin.
/etc/postfix/main.cf
# Rutas
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
# Configuraciones de dominio
myhostname = mail.ejemplo.com
myorigin = ejemplo.com
mydestination = $myhostname, localhost.$mydomain, localhost
# Configuraciones de tiempo de espera y otros límites
delay_warning_time = 4h
unknown_local_recipient_reject_code = 450
minimal_backoff_time = 300s
maximal_backoff_time = 1200s
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d
smtp_helo_timeout = 60s
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12
# Configuraciones SMTP
smtpd_tls_cert_file=/etc/ssl/certs/mail.crt
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
smtpd_tls_loglevel = 1
smtpd_sasl_auth_enable = yes
#smtp_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10030
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_sasl_security_options = noanonymous
# SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
# Configuraciones de red
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8
relayhost =
# Configuraciones de correo y buzón
alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps
home_mailbox = Maildir/
virtual_alias_domains = ejemplo.com
virtual_alias_maps = hash:/etc/postfix/virtual
mailbox_size_limit = 0
# Varios
mailbox_command = /usr/bin/procmail
smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
debug_peer_level = 2
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/man
sample_directory = /etc/postfix/sample
readme_directory = no
recipient_delimiter = +Edita master.cf para permitir que Postfix filtre correos electrónicos a través de Postgrey (de lo que hablaremos en el siguiente capítulo) y Spamassassin.
/etc/postfix/master.cf
Reemplaza la siguiente línea:
smtp inet n - n - - smtpdcon estas dos líneas:
smtp inet n - n - - smtpd
-o content_filter=spamassassinY agrega las siguientes tres líneas al final del archivo:
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/perlbin/vendor/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}Configura las reglas de Spamassassin. Es posible que debas ajustar un poco el required_score. El valor predeterminado de 6.31 parece genial para mí.
/etc/mail/spamassassin/local.cf
rewrite_header Subject ***SPAM***
required_score 6.31
report_safe 1
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1/etc/procmailrc
El spam puede ser copiado automáticamente a la carpeta de Basura creando este archivo:
DROPPRIVS=yes
DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir/
:0:
* ^X-Spam-Status: Yes
.Junk/Crear cuentas de usuario
Para cada usuario de correo, crea las cuentas apropiadas, crea tu propio script si no quieres hacer todo manualmente.
useradd -m -G mail -s /sbin/nologin
cd ~
umask 077
mkdir -p Maildir/{cur,new,tmp}
mkdir -p Maildir/.Drafts/{cur,new,tmp}
mkdir -p Maildir/.Sent/{cur,new,tmp}
mkdir -p Maildir/.Trash/{cur,new,tmp}
chmod 0700 Maildir/{cur,new,tmp}
chmod 0700 Maildir/.Drafts/{cur,new,tmp}
chmod 0700 Maildir/.Sent/{cur,new,tmp}
chmod 0700 Maildir/.Trash/{cur,new,tmp}
chown -R :users * Asegúrate de que las direcciones de correo electrónico de los nuevos usuarios se agreguen al mapa de usuarios virtuales.
/etc/postfix/virtual
[email protected] jeffrey@localhostEjecuta
postmap /etc/postfix/virtualdespues de guardar este archivo.
Postgrey
Postgrey no está en los repositorios predeterminados de pacman, así que descarguémoslo de AUR. Asegúrate de ejecutar los siguientes comandos como un usuario normal y no como root.
cd ~
wget http://aur.archlinux.org/packages/yaourt/yaourt.tar.gz
tar xzvf yaourt.tar.gz
cd yaourt
makepkg -i
yaourt --noconfirm -S postgreyOpcionalmente, los archivos /etc/postfix/postgrey_whitelist_recipients pueden ser editados para permitir dominios y direcciones de correo electrónico en los que confíes. Esto es útil ya que estas direcciones no se retrasarán debido a la lista gris.
Iniciando los Servidores
¡Finalmente! Hemos terminado. Ahora iniciemos todos los servidores y esperemos que todos funcionen.
Edita /etc/rc.conf y asegúrate de agregar los demonios listados:
DAEMONS=(spamd postgrey dovecot postfix)Esto asegura que todos los demonios se inicien automáticamente al reiniciar. Por ahora, inícialos manualmente:
/etc/rc.d/spamd start
/etc/rc.d/postgrey start
/etc/rc.d/dovecot start
/etc/rc.d/postfix startAgrega mail.ejemplo.com a tus clientes de correo favoritos, ingresa la configuración de tu cuenta de usuario, opcionalmente habilita SSL y tu servidor de correo personal completamente funcional está listo.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.