Instalar SASL Postfix,Postfixadmin,Dovecot y Filtros de spam en Debian


Logos de POstfix y Dovecot Configurar un servidor de correo tanto de salida como de entrada con Postfix y Dovecot. Incluyendo cifrado tanto en salida com en entrada en Debian.

Lo explico paso a paso.


IMPORTANTE: Todos los comandos y configuraciones se realizan en un servidor Debian Jessie instalando el software Postfix 2.11.3, Dovecot 2.2.13, Mysql 5.5.49, Postfix Admin 2.93

Configurando los DNS

Lo primero para empezar es registrar los DNS de MX hacia el servidor de correo. En nuestro caso vamos a usar smtp.dominio.com para el correo de salida y imap.dominio.com para el correo de entrada. Aparte también enviaremos el dominio.com con el registro MX hacia el servidor de correo, para hacer los comandos y las configuraciones utillizaremos esta ip de ejemplo 1.1.1.1

La configuración quedaría de la siguiente forma:

dominio.com         MX  10  dominio.com
dominio.com         MX  10  1.1.1.1
smpt.dominio.com    MX  10  1.1.1.1
imap.dominio.com    MX  10  1.1.1.1

Creando los certificados

Podemos crear certificados autosignados por nosotros o podemos usar Letsencrypt para que nos validen los certificados. Mucho mejor si podemos hacerlo con Letsencrypt.

Instalando paquetes necesarios

Desde root ejecutaremos los siguientes comandos para actualizar y instalar los paquetes necesarios.

apt update
apt install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql mysql-server nginx php5-fpm php5 php5-mysqlnd php5-imap libsasl2-modules libsasl2-modules-sql

Nos irá pidiendo información para instalar los paquetes. 1. Introducimos el password para root en mysql. Lo repetimos. 2. Elegir la configuración de POSTFIX, en nuestro caso Internet Site. 3. Introduciremos el dominio de correo, en el caso de ejemplo seria dominio.com.

Instalando y Configurando Postfixadmin

1. Lo primero instalamos subversion para poder descargar la última versión de postfixadmin.
apt install subversion 

Y descargamos la web de postfixadmin donde queramos con el siguiente comando:

svn co http://svn.code.sf.net/p/postfixadmin/code/trunk postfixadmin-code
2. Creamos la base de datos y creamos el usuario con los permisos necesarios. Recordad que teneis que cambiar los datos de ejemplo que hay en los comandos.
mysqladmin -p create postfix
mysql -p postfix
GRANT ALL PRIVILEGES ON postfix.* TO 'postfix_admin'@'localhost' IDENTIFIED BY 'changeme';
FLUSH PRIVILEGES;
3. Configuramos ahora el fichero config.inc.php cambiando los siguientes parámetros:
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix_admin';
$CONF['database_password'] = '<dbpassword1>';
$CONF['database_name'] = 'postfix';
4. Configuramos el servidor web. En mi caso uso nginx para que funcione por SSL/TLS (HTTPS) y que redireccione siempre hacia la web segura (HTTP->HTTPS) , usando los certificados creados para el mismo correo. La configuración es la siguiente. Modifcala según tus parámetros:
server {
    listen   80;
    server_name postfixadmin.domain.com;
    return         301 https://$server_name$request_uri;

}

server {

    listen 443 ;
        server_name postfixadmin.domain.com;
    root /path/to/web/postfixadmin.domain.com/;
    index index.php index.html index.htm;

        access_log /path/to/log/postfixadmin.domain.com/access.log;
        error_log /path/to/log/postfixadmin.domain.com/error.log;


    ssl on;
        ssl_certificate /path/to/cert/cert.pem;
        ssl_certificate_key /path/to/cert/privkey.pem;

        ssl_session_timeout 5m;

        ssl_protocols SSLv3 TLSv1;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
        ssl_prefer_server_ciphers on;


        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
        include fastcgi.conf;
            fastcgi_param HTTPS on;
    }

    location ~ /\. {
            deny all;
        }
    error_page 404 /404.html;
}
5. Una vez configurado el servicio web y que funcione correctamente entraremos en el dominio postfixadmin.dominio.com/setup.php y comprobaremos que esté todo OK.
6. También cambiaremos en la misma web de setup.php el password por defecto para iniciar el setup. Nos generará un hash y la línea a copiar. Debería ser algo parecido a esto.
$CONF['setup_password'] = '1bd7ea5c28a25472d0f6e556f2fac844:8ba57bc5062bfc24b86e9e73810cb02bf6d41d9c'; 

Modificaremos el valor "changeme" para el campo "setup_password" del archivo conf.inc.php. También cambiaremos el valor de "$CONF['configured']" a true. Con esto ya podremos acceder a la url de login.php.

7. Volveremos a entrar en setup.php y crearemos al usuario admin con el password que tenemos guardado del paso anterior.
8. OPCIONAL. En el caso de que esteis migrando de un servidor a otro es posible hacer un backup de la base de datos de la versión antigua de postfix admin y que funcione en la nueva versión. Solo hace falta migrar la base de datos al nuevo Postfixadmin y entrar en el archivo upgrade.php via web. En mi caso funcionó pasando de un a versión 2.3.5 a la versión 2.93.

Configuración de Postfix

1. Creamos una copia de seguridad de la configuración de Postfix por lo que pudiera pasar.
cp /etc/postfix/main.cf /etc/postfix/main.cf.back 
2. Crearemos el usuario vmail para acceder a las carpetas de los correos en /var/mail
groupadd -g 4001 vmail
useradd -d /var/mail -m -u 4001 -g 4001 vmail
3. Añadimos los usuarios postfix y dovecot al grupo de vmail.
usermod -G vmail postfix
usermod -G vmail dovecot
4. Cambiaremos los parámetros de la configuración para que nos quede algo así,recordad poner vuestra configuración:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
#Dominio principal del servicio
myhostname=domain.com
mydestination= $myhostname
#Ips permitidas para las reglas de restricciones
mynetworks= 1.1.1.1,1.1.1.2,1.1.1.3

#Configuramos el uid y gid del usuario vmail creado anteriormente para poder acceder a
# los correos. Configuramos también la carpeta donde alojar los correos, hay que pensar que # puede acabar ocupando bastante.
virtual_uid_maps = static:4001
virtual_gid_maps = static:4001
virtual_mailbox_base = /var/mail

#Configuracion de mysql
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
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

#Configuracion de SSL/TLS con los archivos de certificados
smtpd_tls_cert_file=/etc/dovecot/dovecot.pem
smtpd_tls_key_file=/etc/dovecot/private/dovecot.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtp_tls_CAfile = /etc/dovecot/private/dovecot.pem
smtp_tls_security_level = may

#Configuracion de sasl
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous

#Restricciones para recibir correos
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_non_fqdn_hostname,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unauth_destination,
    reject_unauth_pipelining,
    permit

# El valor debe calcularse en KB pero no de forma exacta.
message_size_limit = 102400000
mailbox_size_limit = 102400000
virtual_mailbox_limit = 102400000
#Forzado de protocolo ipv6 para que gmail no nos de problemas a la hora de enviarles correos
inet_protocols = ipv4
#Ip del servidor de correo por la que se quieran enviar los correos
smtp_bind_address = 1.1.1.1

El fichero tiene comentarios explicativos, así que considero la configuración explicada.

5. Crearemos un usuario de solo lectura para msyql.
mysql -p postfix
GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'changeme';
6. Configuraremos el fichero /etc/postfix/mysql_virtual_mailbox_domains.cf
hosts = 127.0.0.1
user = postfix
password = changeme
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
7. Configuramos el fichero /etc/postfix/mysql_virtual_mailbox_maps.cf
hosts = 127.0.0.1
user = postfixa
password = changeme
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
8. Configuramos el fichero /etc/postfix/mysql_virtual_alias_maps.cf
hosts = 127.0.0.1
user = postfix
password = changeme
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
9. Configuramos el fichero /etc/postfix/mysql_relay_domains.cf
hosts = 127.0.0.1
user = postfix
password = changeme
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
10. Añadimos el usuario postfix al sasl group.
adduser postfix sasl
11. Creamos una copia de seguridad del fichero /etc/postfix/master.cf
cp /etc/postfix/master.cf /etc/postfix/master.cf.back
12. Modificamos el fichero /etc/postfix/master.cf para que las líneas que coincidan queden iguales.
#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: http://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
submission inet  n   -   -   -   -  smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o milter_macro_daemon_name=ORIGINATING
smtps      inet  n   -   -   -   -   smtpd
 -o syslog_name=postfix/smtps
 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       -       -       -       qmqpd
pickup    unix  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
#  mailbox_transport = lmtp:inet:localhost
#  virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -   n   n   -   2   pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}

Configurar Dovecot

1. Creamos el fichero /etc/dovecot/dovecot-mysql.conf.ext
driver = mysql
connect = host=localhost dbname=postixf user=postfix password=changeme
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/var/mail/%d/%n' as home, 4001 AS uid, 4001 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
2. Creamos una copia de seguridad del fichero /etc/dovecot/conf.d/10-auth.conf
cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.back
3. Modificamos el fichero /etc/dovecot/conf.d/10-auth.conf descomentando y añadiendo los valores que se muestran.
disable_plaintext_auth = no
auth_mechanisms = plain login<br>
#!include auth-system.conf.ext
!include auth-sql.conf.ext
4. Creamos una copia del fichero /etc/dovecot/conf.d/10-mail.conf
cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.back
5. Modificamos el fichero /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/mail/%d/%n:INDEX=/var/mail/%d/%n/indexes
6. Cremos una copia de seguridad del fichero /etc/dovecot/conf.d/10-ssl.conf
cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.back
7. Editamos el fichero /etc/dovecot/conf.d/10-ssl.conf. Pondremos la ruta hacia los certificados creados.
ssl = yes
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
8. remos una copia de seguridad del fichero /etc/dovecot/conf.d/20-imap.conf
cp /etc/dovecot/conf.d/20-imap.conf /etc/dovecot/conf.d/20-imap.conf.back
9. Modificamos el fichero /etc/dovecot/conf.d/20-imap.conf
mail_max_userip_connections = 10
10. Cremos una coopia del ficheor /etc/dovecot/conf.d/auth-sql.conf.ext
cp /etc/dovecot/conf.d/auth-sql.conf.ext /etc/dovecot/conf.d/auth-sql.conf.ext.back
11. Modificamos el fichero /etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
 driver = sql
 # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
 args = /etc/dovecot/dovecot-mysql.conf.ext
}
userdb {
 driver = sql
 args = /etc/dovecot/dovecot-mysql.conf.ext
}
12. Creamos una copia de /etc/dovecot/conf.d/10-master.conf
cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.back
13. Modifcamos el fichero /etc/dovecot/conf.d/10-master.conf
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}
service auth {
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
  }
}

Comprobando el sistema

1. Reiniciamos los servicios.
service dovecot restart
service postfix restart 
2. Revisamos los logs para comprobar que todo va bien.
/var/log/auth.log
/var/log/mail.log
/var/log/syslog

Configuración de spamassassin

1. Instalamos spamassassin y spamc.
apt install spamassassin spamc 
2. Añadimos las siguientes líneas en el archivo /etc/postfix/master.cf
#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: http://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
 -o content_filter=spamassassin
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
submission inet  n   -   -   -   -  smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o milter_macro_daemon_name=ORIGINATING
 -o content_filter=spamassassinsend
smtps      inet  n   -   -   -   -   smtpd
 -o syslog_name=postfix/smtps
 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o milter_macro_daemon_name=ORIGINATING
 -o content_filter=spamassassinsend
#628       inet  n       -       -       -       -       qmqpd
pickup    unix  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
smtp-ipv4 unix  -   -   -   -   -    smtp
        -o inet_protocols=ipv4

spamassassinsend unix -     n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

spamassassin unix -     n       n       -       -       pipe
  flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e /usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
3. Descomentaremos la siguiente línea en el archivo /etc/spamassassin/local.cf
rewrite_header Subject *****SPAM*****
4. (OPCIONAL) Para guardar todos los correos marcados como spam en una carpeta llamada Spam configuraremos Postfix añadiendiando al final del archivo /etc/postfix/main.cf la siguiente línea.
spamassassin_destination_recipient_limit = 1
4.1. Instalaremos también dovecto-sieve.ç
apt install dovecot-sieve
4.2. Añadireomos las siguientes líneas en el fichero, justo antes de la configuración de Trash /etc/dovecot/conf.d/15-mailboxes.conf
mailbox Junk {
    special_use = \Junk
 }
4.3. Comentaremos la siguiente línea en el fichero /etc/dovecot/conf.d/90-sieve.conf
#sieve = ~/.dovecot.sieve
4.4. Añadiremos la siguiente línea en el fichero /etc/dovecot/conf.d/90-plugin.conf
plugin {
    sieve = /etc/dovecot/sieve/default.sieve
}
4.5. Descomentaremos la línea necesaria para que queden de la siguiente forma en el fichero /etc/dovecot/conf.d/15-lda.conf
protocol lda {
  mail_plugins = $mail_plugins sieve
  postmaster_address = postmaster @domain.com
}
4.6. Descomentaremos de igual forma para el siguiente fichero /etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
  mail_plugins = $mail_plugins sieve
}
4.7. Crearemos la carpeta /etc/dovecot/sieve/
mkdir /etc/dovecot/sieve/
4.8. Crearemos el fichero /etc/dovecot/sieve/default.sieve
require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
        fileinto "INBOX.Junk";
}
4.9. Cambiamos los permisos de la carpeta /etc/dovecot/sieve
chown vmail:vmail /etc/dovecot/sieve/ -R
4.10. Reiniciamos todos los servicios para comprobar que funcionan correctamente.
service postfix restart
service dovecot restart
service spamassassin restart
5. Para probar que funciona bien el servicio de spamassassin primero enviaremos un correo legítimo y libre de spam hacia un correo interno. Después enviaremos un correo con el siguiente texto en el apartado de asunto.
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Este correo debería ir a la carpeta Spam.

BONUS CONFIG

Configurar Fail2ban

Si queremos hacer un poco más seguro el servidor podemos configurar Fail2ban para las ips de lo que realizan los ataques de fuerza bruta para acceder a cuentas de nuestro servidor sean baneadas y penalizadas.

1. Instalamos fail2ban.
apt install fail2ban
2. Configuramos el archivo habilitando el filtro a Posfix como en la siguiente líneas.
[postfix]

enabled  = true
port     = smtp,ssmtp,submission
filter   = postfix
logpath  = /var/log/mail.log
3. Reiniciamos fail2ban.
service fail2ban restart

Webgrafia

https://wiki.debian.org/DebianSpamAssassin

http://stackoverflow.com/questions/24256008/how-to-move-spam-to-spam-folder