Crear un servidor de correo en GNU Linux desde cero

En la web ya hemos tratado servicios de correo, concretamente la instalación y configuración de relay de correo con Postfix, tanto con cuentas de gmail como de Office365. El problema es que dicho servicio sólo funciona para los envíos utilizando smtp. Hoy veremos como instalar un servidor de correo desde cero, utilizando los programas de software libre, Postifx, Dovecot y SpamAssasin, sobre un servidor Ubuntu.

cluster-photo-nial-bradshaw

Adquisición de un dominio económico

Antes de nada necesitamos adquirir un dominio, si puede ser económico mejor, ya que lo necesitaremos para el sistema de correo. Para la ocasión he realizado una pequeña adquisición del nombre ochobitsunbyte.pw, por sólo 3 euros y pico al año. Para ellos he utilizado los servicios de namecheap.com, como podéis ver en la imagen.

namecheap-servidor-correo-01

Primero de todo tenemos que averiguar si el dominio está disponible, para ello utilizaremos el buscador.

namecheap-servidor-correo-02

Los dominios .pw son muy económicos, por lo que para el tutorial me irá de perlas.

namecheap-servidor-correo-03

Tal y como vemos en la imagen, añadido al dominio nos ofrecen servicio de Whois anónimo llamado «Free WhoisGuard«, de manera gratuita, por lo que nos irá genial para que nuestros datos no sean públicos. Al confirmar la orden nos enviará a la pasarela de pago, que en mi caso es vía paypal. Una vez adquirido ya podemos pasar a la siguiente parte.

Contratar un VPS

Para el tutorial y para un uso todavía por determinar por mi parte, contrataremos un VPS, es decir, un servidor privado virtual en la nube, esto es, en una granja de servidores situada en alguna parte del planeta. Para ello utilizaremos la web digitalocean.com, con la que tengo muy buena experiencia, desde hace más de un año. Para ello nos iremos a la web.

digitalocean-servidor-correo-01

Yo ya tengo creada una cuenta, que por cierto es gratuita. En el siguiente paso crearemos un VPS o Droplet. Escogeremos un pequeño con 512 MB de memoria, 20 GB de disco duro y 1 núcleo, más que suficiente. Con un sistema operativo con Ubuntu 12.04

En la primera parte tenemos que escoger el nombre para el servidor, en mi caso será correo.ochobitsunbyte.pw, escogemos el servidor con las características que he comentado antes, que tiene un coste de 5 eur al mes.

digitalocean-servidor-correo-02

A continuación elegimos la ubicación del centro de datos. Si vivimos en Europa recomiendo un centro de datos en dicho continente, ya que tiene unas leyes menos invasivas como por ejemplo las de Estados Unidos.

digitalocean-servidor-correo-03

He escogido la ubicación geográfica de Frankfurt en Alemania. En el siguiente paso elegimos el sistema operativo. He escogido Ubuntu en su versión 12.04 de 64 bits. La razón por la que no he escogido Debian, que es mi distribución favorita, es que cuando he realizado la instalación (llevo varios días haciendo pruebas), cuando tenía todo instalado un bug del sistema con el servicio Dovecot me ha fastidiado la fiesta. Dicha versión de Ubuntu es una versión fiable para el fin de ésta guía.

En el último paso podemos seleccionar una llave ssh, en nuestro caso no lo haremos, aunque podéis ver los nombres de las llaves que hasta ahora he ido creando para otros servidores.  También podemos añadir una red interna, servicios de copias de seguridad, etcétera.

digitalocean-servidor-correo-05

Y apretamos el botón «Create Droplet«

Al crear el servidor nos llegarán las credenciales a nuestro correo electrónico, para así poder acceder por ssh. La clave que nos envíen la tendremos que cambiar de manera obligatorio al acceder por primera vez.

Para quien esté interesado en utilizar DigitalOcean, puede utilizar el siguiente código promocional y obtener un descuento de 10 USD

Primeros pasos con el servidor

Al acceder vía ssh, debemos cambiar la contraseña. Recomiendo utilizar una contraseña de al menos 8 dígitos y que no sea habitual, podemos utilizar el programa pwgen del que ya hablamos en su día, ya que es una fantástica herramienta de creación de contraseñas.

Otro paso importante para segurizar nuestro servidor es cambiar el puerto por defecto del servicio ssh, tema que también tratamos en otro artículo, también podemos limitar el tiempo de conexión.

Actualizamos las fuentes y los paquetes del servidor a la última versión:

  1. apt-get -y update
  1. apt-get -y upgrade

De ésta manera ya podemos empezar a instalar nuestro servidor de correo.

Requisitos mínimos para el funcionamiento del servidor

Para que todo nos funcione a la perfección primero de todo debemos utilizar un nombre FQDN correcto. Para ello primero modificamos el archivo /etc/hosts y deberá quedar así:

  1. 127.0.0.1   localhost
  2. 127.0.1.1   correo.ochobitsunbyte.pw correo
  3. nuestra.ip  correo.ochobitsunbyte.pw correo

En la última línea debemos sustituir «nuestra.ip» por la IP del servidor.

Otro requisito para el servidor será tener instalado un servicio de base de datos MYSQL Recordar que al instalarlo nos pedirá otra vez una contraseña, es importante que no sea la misma que la del servidor.

Instalamos los paquetes:

  1. apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

Debemos securizar nuestro servicio de base de datos, siguiendo los pasos del comando:

  1. /usr/bin/mysql_secure_installation

Instalación de Postfix y Dovecot

De Postfix ya hemos hablado mucho en la web. Simplificando se trata de una herramienta para la gestión del correo, mucho más segura y avanzada que otras «marcas» propietarias. Dovecot se trata de un servicio  IMAP y POP3 para sistemas GNU Linux, que pone especial hincapié en la seguridad. Todo ello combinado con MYSQL, que ya hemos instalado antes, y que hará que la combinación de los tres tengamos un servidor de correo muy completo.

Realizamos la instalación de los paquetes:

  1. apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

Nos aparecerá una pantalla donde nos preguntará que tipo de servidor de correo queremos, escogemos «Servidor de Internet«

postfix-dovecot-ubuntu-001

El siguiente paso le decimos el nombre cualificado para el servidor:

postfix-dovecot-ubuntu-002

Creación de la base de datos MYSQL

Antes de finalizar la instalación un paso muy importante es crear la base de datos con la que trabajará el sistema de correo. Al igual que en otros casos debemos de llamar a la base de datos con un nombre poco común. Llamaré a la base de datos ‘cronos

De la siguiente manera:

  1. mysqladmin -p create cronos

Y a continuación accedemos a la consola MYSQL

  1. mysql -u root -p

Una vez dentro crearemos un nuevo usuario que tendrá privilegios sobre la base de datos ‘cronos‘. A dicho usuario le llamaremos ‘fantastes‘, con nueva contraseña diferente de la de root.

  1. GRANT SELECT ON cronos.* TO 'fantastes'@'127.0.0.1' IDENTIFIED BY 'contraseña';

Y recargamos los privilegios:

  1. FLUSH PRIVILEGES;

Y accedemos la base de datos:

  1. USE cronos;

Crearemos una nuevo tabla para los dominios virtuales de correo:

  1. CREATE TABLE `virtual_domains` (
  2. `id`  INT NOT NULL AUTO_INCREMENT,
  3. `name` VARCHAR(50) NOT NULL,
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Ahora creamos otra tabla con los datos de los usuarios, correos electrónicos y contraseñas:

  1. CREATE TABLE `virtual_users` (
  2. `id` INT NOT NULL AUTO_INCREMENT,
  3. `domain_id` INT NOT NULL,
  4. `password` VARCHAR(106) NOT NULL,
  5. `email` VARCHAR(120) NOT NULL,
  6. PRIMARY KEY (`id`),
  7. UNIQUE KEY `email` (`email`),
  8. FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Como cualquier servidor de correo que se precie también crearemos una tabla para los «alias», es decir, para las redirecciones de correo:

  1. CREATE TABLE `virtual_aliases` (
  2. `id` INT NOT NULL AUTO_INCREMENT,
  3. `domain_id` INT NOT NULL,
  4. `source` VARCHAR(100) NOT NULL,
  5. `destination` VARCHAR(100) NOT NULL,
  6. PRIMARY KEY (`id`),
  7. FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Otro paso importante es insertar los servidores virtuales con los que vamos a trabajar, recordar que tienen que cumplir con las normas FQDN. En nuestro caso será por una parte el nombre de dominio ochobitsunbyte.pw y por el otro el nombre del servidor correo.ochobitsunbyte.pw

De la siguiente manera:

  1. INSERT INTO `cronos`.`virtual_domains`
  2. (`id` ,`name`)
  3. VALUES
  4. ('1', 'ochobitsunbyte.pw'),
  5. ('2', 'correo.ochobitsunbyte.pw');

Ahora añadiremos un correo, con el realizaremos pruebas de funcionamiento a posteriori.

  1. INSERT INTO `cronos`.`virtual_users`
  2. (`id`, `domain_id`, `password` , `email`)
  3. VALUES
  4. ('1', '1', ENCRYPT('contraseña', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'davidochobits@ochobitsunbyte.pw');

Y por último los «Aliases» o redirecciones, en éste caso sólo añadiremos una ficticia.

  1. INSERT INTO `cronos`.`virtual_aliases`
  2. (`id`, `domain_id`, `source`, `destination`)
  3. VALUES
  4. ('1', '1', 'alias@ochobitsunbyte.pw', 'davidochobits@ochobitsunbyte.pw');

Por ésta parte ya hemos acabado. Podemos salir con ‘exit

Configurar Postfix

Ahora nos toca configurar Postfix. Guardamos el fichero de configuración original:

  1. mv /etc/postfix/main.cf /etc/postfix/main.cf.back

Y creamos uno nuevo utilizando nuestro editor favorito, en mi caso nano:

  1. nano /etc/postfix/main.cf

Utilizaremos los certificador SSL gratuitos disponibles en el sistema, para ellos añadimos éstas primeras líneas:

  1. smtpd_tls_cert_file=/etc/ssl/certs/dovecot.pem
  2. smtpd_tls_key_file=/etc/ssl/private/dovecot.pem
  3. smtpd_use_tls=yes
  4. smtpd_tls_auth_only = yes

Y añadimos:

  1. smtpd_sasl_type = dovecot
  2. smtpd_sasl_path = private/auth
  3. smtpd_sasl_auth_enable = yes
  4. smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

Decidimos que no queremos conexiones anónimas:

  1. smtp_sasl_security_options = noanonymous

Y los datos referentes a nuestro de dominio y servidor:

  1. mydestination = localhost
  2. myhostname = correo.ochobitsunbyte.pw

Indicamos que vamos a utilizar los servidores virtuales indicados en la tabla de la base de datos:

  1. virtual_transport = lmtp:unix:private/dovecot-lmtp

Por último añadimos las ubicaciones de los ficheros configuración para los dominios, usuarios y alias.

  1. virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
  2. virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
  3. virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Y comenzamos a editar los ficheros de configuración. Creamos el fichero «mysql-virtual-mailbox-domains.cf«

  1. nano /etc/postfix/mysql-virtual-mailbox-domains.cf

Y añadimos en el fichero:

  1. user = fantastes
  2. password = password
  3. hosts = 127.0.0.1
  4. dbname = cronos
  5. query = SELECT 1 FROM virtual_domains WHERE name='%s'

Reiniciamos el servicio:

  1. service postix restart

Utilizando el comando postmap comprobaremos que la configuración del fichero es correcta:

  1. postmap -q ochobitsunbyte.pw mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

Si todo ha ido bien nos devolverá un ‘1

Vamos a por el segundo de los ficheros:

  1. nano /etc/postfix/mysql-virtual-mailbox-maps.cf

Y añadimos las líneas:

  1. user = fantastes
  2. password = password
  3. hosts = 127.0.0.1
  4. dbname = cronos
  5. query = SELECT 1 FROM virtual_users WHERE email='%s'

Reiniciamos el servicio:

  1. service postfix restart

Comprobamos la configuración:

  1. postmap -q davidochobits@ochobitsunbyte.pw mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

Si nos muestra ‘1’ es que todo va bien.

Por último el tercer fichero:

  1. nano /etc/postfix/mysql-virtual-alias-maps.cf

Y su contenido:

  1. user = fantastes
  2. password = password
  3. hosts = 127.0.0.1
  4. dbname = cronos
  5. query = SELECT destination FROM virtual_aliases WHERE source='%s'

Reiniciamos por última vez en éste apartado el servicio:

  1. service postfix restart

Realizamos la comprobación:

  1. postmap -q alias@ochobitsunbyte.pw mysql:/etc/postfix/mysql-virtual-alias-maps.cf

De ésta manera nos tiene que mostrar el correo al cual está redirigido, es decir, davidochobits@ochobitsunbyte.pw

Para poder utilizar la conexión segura por el puerto 587 debemos modificar el fichero /etc/postfix/master.cf

  1. nano /etc/postfix/master.cf

Debemos descomentar las siguientes líneas:

  1. submission inet n       -       -       -       -       smtpd
  2. -o syslog_name=postfix/submission
  3. -o smtpd_tls_security_level=encrypt
  4. -o smtpd_sasl_auth_enable=yes

Si reiniciamos Postfix ya podremos utilizar el puerto 587.

Configurar Dovecot

Los principales ficheros de configuración de Dovecot, los cuales tendremos que modificar son los siguientes:

  • /etc/dovecot/dovecot.conf
  • /etc/dovecot/conf.d/10-mail.conf
  • /etc/dovecot/conf.d/10-auth.conf
  • /etc/dovecot/dovecot-sql.conf.ext
  • /etc/dovecot/conf.d/10-master.conf
  • /etc/dovecot/conf.d/10-ssl.conf

Para ello lo primero que haremos es copiarlos a otro archivo para perder la configuración original:

  1. cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
  2. cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig
  3. cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig
  4. cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig
  5. cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig
  6. cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig

Empezamos a trabajar con el fichero /etc/dovecot/dovecont.conf, lo editamos:

  1. nano /etc/dovecot/dovecot.conf

Y verificamos que la siguiente línea no esté comentada:

  1. !include conf.d/*.conf

Justo debajo de la línea «!include_try /usr/share/dovecot/protocols.d/*.protocol line«, debemos añadir los protocolos a utilizar:

  1. !include_try /usr/share/dovecot/protocols.d/*.protocol
    
  2. protocols = imap lmtp

Editamos el siguiente fichero de configuración:

  1. nano /etc/dovecot/conf.d/10-mail.conf

Debemos descomentar la siguiente línea y dejarla tal así:

  1. mail_location = maildir:/var/mail/vhosts/%d/%n

Ahora buscamos ésta otra línea, la descomentamos, y la dejamos tal cual:

  1. mail_privileged_group = mail

Una vez editado el fichero lo guardamos.

Creamos la carpeta donde veremos los registros de la base de datos MYSQL:

  1. mkdir -p /var/mail/vhosts/ochobitsunbyte.pw

Creamos el usuario y grupo ‘vmail‘ con la ID 5000

  1. groupadd -g 5000 vmail 
  2. useradd -g vmail -u 5000 vmail -d /var/mail

Asignamos el nuevo usuario y grupo al directorio /var/mail utilizando el comando chown:

  1. chown -R vmail:vmail /var/mail

Editamos el siguiente fichero:

  1. nano /etc/dovecot/conf.d/10-auth.conf

Editamos la línea a continuación añadiendo el parámetro ‘yes‘:

  1. disable_plaintext_auth = yes

Modificamos la línea ‘auth_mechanisms’ con los parámetros:

  1. auth_mechanisms = plain login

Comentamos la línea:

  1. #!include auth-system.conf.ext

Y descomentamos la línea referida a la autorización MYSQL:

  1. !include auth-sql.conf.ext

En el paso siguiente creamos el fichero /etc/dovecot/conf.d/auth-sql.conf.ext para la información de autentificación:

  1. nano /etc/dovecot/conf.d/auth-sql.conf.ext

Y añadimos el contenido:

  1. passdb {
  2.   driver = sql
  3.   args = /etc/dovecot/dovecot-sql.conf.ext
  4. }
  5. userdb {
  6.   driver = static
  7.   args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
  8. }

Guardamos y pasamos al siguiente fichero, en este caso se trata de /etc/dovecot/dovecot-sql.conf, donde indicamos la información MYSQL

  1. nano /etc/dovecot/dovecot-sql.conf.ext

Descomentamos y añadimos el parámetro ‘mysql‘ :

  1. driver = mysql

Descomentamos y añadimos nuestros datos de base de datos:

  1. connect = host=127.0.0.1 dbname=cronos user=fantastes password=password

Ahora descomentamos y modificamos el parámetro «default_pass_scheme«, añadiendo el cifrado «SHA512-CRYPT«

  1. default_pass_scheme = SHA512-CRYPT

Descomentamos «password_query» y añadimos la información:

  1. password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

Modificamos permisos y asignamos nuevo usuario a la carpeta /etc/dovecot

  1. chown -R vmail:dovecot /etc/dovecot
  2. chmod -R o-rwx /etc/dovecot

Abrimos y modificamos el fichero /etc/dovecot/conf.d/10-master.conf, modificando varios parámetros, para que quede de la siguiente manera:

  1. nano /etc/dovecot/conf.d/10-master.conf

La primera parte debe quedar así:

  1. ##Descomentamos inet_listener_imap y lo modificamos por port 0
  2. service imap-login {
  3.   inet_listener imap {
  4.     port = 0
  5. }
  6.  
  7. #Creamos el socket LMTP con esta configuracion
  8. service lmtp {
  9.    unix_listener /var/spool/postfix/private/dovecot-lmtp {
  10.        mode = 0600
  11.        user = postfix
  12.        group = postfix
  13.    }
  14.   #inet_listener lmtp {
  15.     # Avoid making LMTP visible for the entire internet
  16.     #address =
  17.     #port =
  18.   #}
  19. }

Modificamos el parámetro «unix_listener» dentro del apartado «service_auth» :

  1. service auth {
  2.  
  3.   unix_listener /var/spool/postfix/private/auth {
  4.   mode = 0666
  5.   user = postfix
  6.   group = postfix
  7.   }
  8.  
  9.   unix_listener auth-userdb {
  10.   mode = 0600
  11.   user = vmail
  12.   #group =
  13.   }
  14.  
  15.   #unix_listener /var/spool/postfix/private/auth {
  16.   # mode = 0666
  17.   #}
  18.  
  19.   user = dovecot
  20. }

Modifcamos el apartado «service auth-worker» para que quede así:

  1. service auth-worker {
  2.   # Auth worker process is run as root by default, so that it can access
  3.   # /etc/shadow. If this isn't necessary, the user should be changed to
  4.   # $default_internal_user.
  5.   user = vmail
  6. }

Guardamos y pasamos al fichero /etc/dovecot/conf.d/10-ssl.conf, lo revisamos y si un caso lo modificamos, para que quede de la siguiente manera:

  1. nano /etc/dovecot/conf.d/10-ssl.conf

Comprobamos que el parámetro «ssl» es el siguiente:

  1. ssl = required

Verificamos y modificamos, si es necesario, los parámetros «ssl_cert» y «ssl_key» :

postfix-dovecot-ssl

Reiniciamos el servicio Dovecot:

  1. service dovecot restart

EDITADO ABRIL 2016

Gracias a la colaboración de los usuarios de la web, hemos visto que debido a diferentes problemas de certificado ssl, el servidor no funcionaba. Tanto en su parte IMAP en lo que a Dovecot, como en la parte SMTP de Postfix. Para solucionarlo vamos a ver primero la parte de Dovecot, la solución al final no es complicada, en el fichero /etc/dovecot/conf.d/10-ssl.conf, debemos descomentar la línea:

  1. ssl_ca = /etc/ssl/certs/ca.pem

Y dejar como la tengo yo. A continuación nos iremos a la carpeta /etc/ssl/certs/ y descargaremos el certificado:

  1. wget http://www.startssl.com/certs/ca.pem

Para comprobar que la parte de Dovecot, está lista lo comprobamos con el siguiente comando:

  1. dovecot -f

Respecto a la parte de Postfix, añadimos al siguiente línea en el fichero /etc/postfix/main.cf:

  1. smtpd_tls_CAfile = /etc/postfix/cacert.pem

Ahora copias el respectivo certificado a la carpeta de Postfix

 

  1. cat /etc/ssl/certs/Equifax_Secure_CA.pem >> /etc/postfix/cacert.pem

Con esto ya lo tendremos solucionado.

Ahora reinciaremos el sevidor y probaremos la cuenta davidochobits@ochobitsunbyte.pw en el cliente de correo Thunderbird.

Para ello primero modificaremos los DNS de nuestro dominio para crear un registro A y MX, por seguridad recomiendo que los registros apunten a CloudFlare, si no tenéis cuenta os podéis crear una, son gratuitas. Por defecto namecheap.com ya apunta sus DNS a CloudFlare, así que no tendremos que hacer ninguna modificación.

En CloudFlare debemos añadir o modificar:

  • Registro «A» ochobitsunbyte.pw que apunte a nuestra IP
  • Registro «A»correo que apunte a nuestra IP
  • Registro «MX» de ochobitsunbyte.pw que apunte a correo.ochobitsunbyte.pw

Escogeremos el plan «Free Plan» que no tiene coste. El cambio de DNS puede tardar un poco, de hecho, hasta varias horas.

En Thunderbird los parámetros deberían ser como sigue:

  • Nombre a mostrar: davidochobits
  • Cuenta de correo: davidochobits@ochobitsunbyte.pw
  • Contraseña: ‘nuestro password’
  • Servidor de entrada: IMAP, correo.ochobitsunbyte.pw, Puerto 993, SSL/TLS, contraseña normal
  • Servidor de salida: SMTP, correo.ochobitsunbyte.pw, Puerto 587, Automático, contraseña normal
  • Usuario: davidochobits@ochobitsunbyte.pw

Y con esto nos debería funcionar, aquí os dejo una muestra:

thunderbird-postfix-dovecot-01

En el fichero de log /var/log/mail.log podemos ver todo lo que sucede con nuestro server de correo.

Configurar SpamAssasin

Con SpamAssasin podremos evitar en gran medida el abuso del spam contra nuestras cuentas de correo. Pertenece al proyecto Apache

spamassasin-postfix-dovecot

Para instalar el programa en nuestro servidor:

  1. apt-get install spamassassin spamc

Para su funcionamiento necesitamos crear el usuario ‘spamd‘ :

  1. adduser spamd --disabled-login

Debemos modificar el fichero /etc/default/spamassassin

  1. nano /etc/default/spamassassin

Cambiamos el parámetro:

  1. ENABLED=1

Las siguientes líneas deben de quedar así:

  1. SPAMD_HOME="/home/spamd/"
  2. OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir ${SPAMD_HOME} -s ${SPAMD_HOME}spamd.log" 
  3. PIDFILE="${SPAMD_HOME}spamd.pid"
  4. CRON=1

Guardamos y ahora modificamos el fichero /etc/spamassassin/local.cf De ésta manera configuraremos el nivel de seguridad. Podemos utilizar los siguientes parámetros de ejemplo:

  1. rewrite_header Subject ***** SPAM _SCORE_ *****
  2. report_safe             0
  3. required_score          5.0
  4. use_bayes               1
  5. use_bayes_rules         1
  6. bayes_auto_learn        1
  7. skip_rbl_checks         0
  8. use_razor2              0
  9. use_dcc                 0
  10. use_pyzor               0

Por último modificamos uno de los ficheros de configuración de Postfix, para que cuenta con el servicio SpamAssassin :

  1. nano /etc/postfix/master.cf

De las dos líneas siguientes, debemos buscar la primera y añadir a continuación la segunda:

  1. submission inet n       -       -       -       -       smtpd
  2. -o content_filter=spamassassin

Y añadir justo al final del fichero:

  1. spamassassin unix -     n       n       -       -       pipe
  2. user=spamd argv=/usr/bin/spamc -f -e  
  3. /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Ahora ya podemos encender el servicio spamassassin y reiniciar postfix

  1. service spamassassin sart
  2. service postfix restart

Pues ya tenemos montado nuestro servidor de correo, con POSTFIX, DOVECOT y SPAMASSASIN, espero que haya sido de vuestro interés.

Me he ayudado de las siguientes fuentes:

DigitalOcean | Wiki Apache