Postfix Open relays server per ISP: differenze tra le versioni
(Creata pagina con '{{Template:Internet Service Provider con Wheezy}} = Open relays server = Normalmente Postfix accetta una email solo se è verificato uno di questi criteri: * il destinatario è...') |
(Nessuna differenza)
|
Versione delle 19:16, 6 apr 2014
|
Open relays server
Normalmente Postfix accetta una email solo se è verificato uno di questi criteri:
- il destinatario è un utente del mail server
- il mittente sta inviando la mail dal nostro local network, definito dalla direttiva
mynetworks
di Postfix - il mittente si è autenticato sul server
Per motivi di sicurezza dovrebbe essere sempre impedito l'invio di email da parte di utenti che non si sono autenticati sul server e che provengono da reti sconosciute. In caso contrario uno spammer potrebbe facilmente sfruttare il nostro server per inviare milioni di email spam: questo porterebbe ad uno spreco di banda e, soprattutto, all'inserimento dell'IP del nostro server in tutte le blacklist del mondo, bloccando anche la posta dei nostri utenti autorizzati. Un server che si comporta in questo modo, permettendo l'invio di mail a tutti, è chiamato open relay.
Configurazione di Postfix per l'autorizzazione SMTP
Impostare la direttiva smtpd_recipient_restrictions
correttamente è importantissimo. Normalmente è possibile definire le reti abilitate al relay sul nostro mail server attraverso la direttiva mynetworks
contenuta nel file main.cf
:
# postconf -e mynetworks=192.168.50.0/24
Purtroppo questa direttiva non è applicabile nel caso di un server che voglia agire da ISP, permettendo la spedizione e la ricezione delle email anche agli utenti che si connettono dal'esterno della nostra rete.
La soluzione è rendere gli utenti fidati attraverso la richiesta di una username e di una password, in mancanza dei quali il relaying sarà proibito dal server.
Questo è il momento in cui entra in gioco l'autenticazione SMTP.
Dalla versione 2.3 di Postfix è possibile fare in modo che sia Postfix stesso a richiedere a Dovecot la verifica del nome utente e della password. E siccome abbiamo già configurato Dovecot, avremo bisogno solo di alcune configurazioni extra in Postfix:
# postconf -e smtpd_sasl_type=dovecot # postconf -e smtpd_sasl_path=private/auth # postconf -e smtpd_sasl_auth_enable=yes # postconf -e smtpd_tls_security_level=may # postconf -e smtpd_tls_auth_only=yes # postconf -e smtpd_tls_cert_file=/etc/ssl/certs/mailserver.pem # postconf -e smtpd_tls_key_file=/etc/ssl/private/mailserver.pem # postconf -e smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_auth_enable
abilita l'autenticazione SMTPsmtpd_recipient_restrictions
definisce le regole che sono controllate per permettere il relay. Nel nostro caso il relay è permesso se:permit_mynetworks
: l'utente proviene dalla nostra rete, oppurepermit_sasl_authenticated
: l'utente si è autenticato, oppurereject_unauth_destination
: la mail è destinata a un utente di un nostro dominio virtuale
NOTA: la direttiva postconf -e smtpd_tls_auth_only=yes è da utilizzarsi solo se vogliamo che i nostri utenti siano costretti a utilizzare SSL per scaricare e inviare la loro posta.
Riavviamo infine Postfix:
# /etc/init.d/postfix restart
Test della configurazione
Proviamo la nostra configurazione con una connessione telnet sulla porta SMTP:
$ telnet localhost smtp Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mailtest ESMTP Postfix (Debian/GNU) ehlo example.com 250-mailtest 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN auth plain am9obkBleGFtcGxlLmNvbQBqb2huQGV4YW1wbGUuY29tAHN1bW1lcnN1bg== 235 2.0.0 Authentication successful quit 221 2.0.0 Bye
L'autenticazione ha funzionato.
Ora possiamo testare l'invio di una mail attraverso il nostro client di posta. Per verificare il corretto funzionamento controlliamo i file di log:
# tail -f /var/log/mail.log
Dovremmo trovare qualcosa di simile:
postfix/smtpd[4032]: 1234567890: client=..., sasl_method=PLAIN, sasl_username=john@example.com postfix/cleanup[4040]: 2EAE8379CB: message-id=<...> postfix/qmgr[3963]: 1234567890: from=<john@example.com>, size=830, nrcpt=1 (queue active) postfix/smtpd[4032]: disconnect from ... postfix/smtp[4041]: 1234567890: to=<devnull@workaround.org>, relay=torf.workaround.org[212.12.58.129]:25, delay=6, delays=0.09/0.08/5.6/0.23, dsn=2.0.0, status=sent (250 OK id=1HsPC3-0008UJ-O5) postfix/qmgr[3963]: 2EAE8379CB: removed
In caso di errore dovremmo invece vedere qualcosa di simile a questo:
postfix/smtpd[4032]: connect from ...[10.20.30.40] postfix/smtpd[4032]: warning: ...[10.20.30.40]: SASL PLAIN authentication failed: postfix/smtpd[4032]: lost connection after AUTH from ...[10.20.30.40] postfix/smtpd[4032]: disconnect from ...[10.20.30.40]
In fase di installazione Postfix genera automaticamente un certificato SSL, ma potrebbe essere utile crearne uno personalizzato, nella stessa maniera vista in precedenza:
# openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem \ -keyout /etc/ssl/private/postfix.pem
L'impostazione più importante è la definizione del Common Name
, dove va inserito il fully-qualified name (FQDN) del mail server.
A generazione avvenuta impostiamo i corretti permessi sul file:
# chmod o= /etc/ssl/private/postfix.pem
e comunichiamo a Postfix di utilizzare il nuovo certificato:
# postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem # postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
Di default Postfix permette l'invio in chiaro dei dati di autenticazione SMTP, ma possiamo impostare la trasmissione crittata agendo su due parametri:
# postconf -e smtpd_use_tls=yes # postconf -e smtpd_tls_auth_only=no
In questo modo Postfix offre (ma non richiede obbigatoriamente) la crittazione dei dati di login.
Se vogliamo proibire le connessioni SMTP non crittate, possiamo impostare le direttive smtpd_tls_security_level = encrypt
o smtpd_tls_wrappermode = yes
. Possiamo anche impostare smtpd_tls_security_level = may
(la cosiddetta opportunistic TLS connection).
Una volta terminate le modifiche possiamo testare la corretta configurazione del nostro mail server per quanto riguarda la protezione dai tentativi di relay:
# telnet relay-test.mail-abuse.org
Con questo comando contatteremo un ottimo servizio che cercherà di inviare alcune mail attraverso il nostro server. Lasciamogli qualche minuto e aspettiamo che compaia la dicitura:
System appeared to reject relay attempts
Autenticazione di Postfix su un server SMTP remoto
Se ci fosse la necessità di impostare un relay dal nostro server di posta Postfix verso un server SMTP esterno, è possibile utilizzare questa guida:
Postfix e autenticazione su SMTP remoto