25/10/2014
enit

Configurare Postfix + Antispam come MX backup

mxbackup01

In un’architettura mail-server, dovrebbe essere sempre presente il servizio MX backup per motivi di ridondanza e per evitare che le email vengano ritornate con un errore mentre il mail-server è offline.

Il principio di funzionamento è molto semplice: quando il mail-server primario è offline (failure o manutenzione), le email vengono raccolte e conservate dall’MX backup che le trattiene fino a quando il server primario ritorna nuovamente online.

mxbackup02

 

Configurazione DNS

Per poter funzionare correttamente, il sistema richiede l’aggiunta di un secondo record MX nel DNS con una priorità più bassa in modo da instradare le email all’MX backup solo nel caso il mail-server è offline.

Inoltre devono essere configurati correttamente anche gli IP pubblici dei mail-server associati.

mxbackup03

 

Installazione dei package richiesti

Per utilizzare il comando yum per effettuare l’installazione di tutti i package richiesti, aggiungere al sistema il repository RPMforge.

# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm
# rpm -Uvh rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm

mxbackup04

Oltre a Postfix, l’installazione prevede dei package aggiuntivi per proteggere il server dallo spamming: ClamAV, Spamassassin e Amavisd-new.

# yum install postfix spamassassin clamd clamav-db amavisd-new

mxbackup05

Poichè lo scopo è di utilizzare solo Postfix, se nel sistema sono presenti altri package (Sendmail ad esempio) è necessario configurare correttamente l’MTA tramite il comando alternatives selezionando l’opzione desiderata.

# alternatives –config mta

mxbackup06

Poichè nell’esempio è installato il solo package Postfix, il numero da digitare è 1.

Se nel sistema è presente anche Sendmail, rimuoverlo tramite il comando yum.

# yum remove sendmail

 

Configurazione ClamAV

Editare il file /etc/clamd.conf e verificare che la comunicazione tra Amavisd-new -> ClamAV avvenga tramite il local UNIX socket e non tramite TCP socket.

# vi /etc/clamd.conf

mxbackup07

Abilitare ClamAV rimuovendo il commento #.

mxbackup08

 

Configurazione Amavisd-new

Editare il file di configurazione /etc/amavisd.conf ed impostare i vari parametri con i valori che rispecchiano la propria rete.

# vi /etc/amavisd.conf

mxbackup09

 

Configurazione Postfix

Editare il file /etc/postfix/master.cf ed aggiungere le seguenti linee:

# vi /etc/postfix/master.cf

mxbackup10

Editare il file /etc/postfix/main.cf .

# vi /etc/postfix/main.cf

Aggiungere le righe:

mxbackup11

Modificare i parametri di configurazione inserendo i valori appropriati alla rete in uso.

mxbackup12

Se il parametro relay_recipient_maps è lasciato vuoto, tutte le email sono processate dall’MX backup senza verificare se i recipient destinatari sono presenti nel mail-server con il rischio di conservare tantissime email “junk”. Creando invece il file /etc/postfix/relay_recipients inserendo gli account esistenti il problema si risolve. Naturalmente in un ambiente dinamico con centinaia di mailbox questa soluzione non è probabilmente molto pratica.

# vi /etc/postfix/ relay_recipients

Abilitare i servizi installati per essere avviati durante il boot del sistema.

# chkconfig postfix on
# chkconfig amavisd on
# chkconfig clamd on
# chkconfig spamassassin on

mxbackup13

Avviare i servizi effettuando il restart nella sequenza illustrata.

# service spamd restart
# service clamd restart
# service amavisd restart
# service postfix restart

mxbackup14

Se compare la notifica di warning relativa al database di ClamAV, l’aggiornamento manuale della signature viene effettuata tramite il comando:

# /usr/bin/freshclam

mxbackup15

La signature viene aggiornata all’ultima release disponibile.

mxbackup16

 

Test del sistema

Terminata la configurazione non rimane che testare la funzionalità del sistema verificando se le email sono processate correttamente.

Tramite il comando telnet, verificare se il servizio Amavisd risponde sulla porta 127.0.0.1:10024.

# telnet localhost 10024

mxbackup17

Testare successivamente Postfix smtpd per verificare la risposta sulla porta 127.0.0.1:10025.

# telnet localhost 10025

mxbackup18

Tramite un altro computer, connettersi in telnet all’MX backup configurato. Le parti evidenziate sono le varie istruzioni da digitare.

# telnet mail2.nolabnoparty.com 25

mxbackup19

Se il messaggio email viene recapitato, il sistema funziona correttamente.

mxbackup20

Per effettuare un test simulando uno scenario reale, mettere offline il mail-server e provare ad inviare alcuni messaggi email tramite un qualunque client di posta esterno alla rete.

mxbackup21

Effettuare l’analisi del log di Postfix per verificare se l’MX backup sta processando i messaggi.

# tail -f /var/log/maillog

mxbackup22

Per verificare quali messaggi sono effettivamente nella coda dell’MX backup, il comando mailq visualizza i messaggi processati.

# mailq

mxbackup23

Il sistema periodicamente effettua l’operazione di flush delle email in coda in base al valore specificato nel file /etc/postfix/master.cf (default 1000 secondi).

# vi /etc/postfix/mastercf

mxbackup24

Senza attendere la normale schedulazione, è possibile effettuare un flush manuale tramite il comando postqueue verificando con mailq lo stato della coda.

# postqueue -f
# mailq

mxbackup25

Rilasciati i messaggi dall’MX backup, se tutto funziona come ci si aspetta, le email vengono recapitate al client di posta.

mxbackup26

Poichè i costi per avere delle risorse nel cloud potrebbero risultare eccessivi per questo tipo di soluzione, nel mercato sono presenti alcuni provider che offrono a prezzi contenuti il servizio MX backup.

Implementando questa soluzione nessuna email verrà persa in caso di failure del mail-server e le attività di manutenzione possono essere effettuate con una relativa calma.

firma

 

About Paolo Valsecchi

Sistemista Informatico | Mi occupo principalmente dell’implementazione e della gestione di servizi informatici basati su piattaforma virtuale VMware vSphere con sistemi Microsoft Windows/Active Directory e Linux (Red Hat, CentOS). VCP5-DCV, PernixPro.

9 commenti

  1. Tasslehoff Burrfoot

    Articolo utilissimo come sempre, ho un paio di domande che vorrei farti:
    – nel caso il proprio server faccia da MX per più domini è sufficiente indicare nei parametri ‘mydomain’ di postfix e di amavis l’elenco dei domini, oltre a ovviamente l’elenco dei destinatari nel file relay_recipients?
    – per quanto riguarda l’antispam non è necessario fare alcuna attività di aggiornamento delle eventuali blacklist o particolari attività di configurazione o manutenzione?

    Grazie

    • Nel caso di più domini bisogna editare il file /etc/postfix/main.cf e modificare il parametro relay_domains come nell’esempio:

      relay_domains = domain1.com, domain2.com, $mydestination

      Nel caso dell’antispam, quando si effettua l’installazione viene creato un cron job per l’aggiornamento periodico.

  2. Ciao,
    complimenti per l’ennesima guida davvero ben fatta. Una sola domanda, perche postfix rimane in ascolto sulla porta 10025?? e poi piu avanti nella guida fai un telnet sulla 25?

    • Nell’MX backup Postfix rimane in ascolto sulla porta 10025 poichè è da quella porta che riceve i messaggi da Amavisd-new.

      Per connetterti da un altro computer al server MX Backup per testare l’invio delle email, effettui una connessione SMTP che utilizza appunto la porta 25.

      • Ma quindi è amavisd-new che rimane in ascolto sulla 25 che poi manda a postfix sulla 10025?
        Seguendo la guida pari passo alla fine se faccio telnet localhost funziona ma se eseguo telnet con l’ip non va, sai dirmi cosa puo essere?

  3. Enrico Maria Chellini

    ciao, ho un problema, quando l’utente ha la quota della maildir piena, i messaggi vengono persi e non ritornano al mittente messaggi di errore. ho una centos6.4 postfix, dovecot, amavisd, clamd, spamassasin, procmail . sai darmi una dritta di dove guardare?

    grazie
    enrico

  4. Buongiorno,
    nel caso in cui debba installare postfix con ssl? come bisogna procedere?
    il problema si presenta quando invio le mail per esempio ad un indirizzo gmail che vengono messe nello spam.
    Grazie

Inserisci un commento

Il tuo indirizzo email non sarà pubblicato. Required fields are marked *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">