Questo articolo spiega come passare in IPv6 un mail server Linux con Postfix, Amavisd-new e Dovecot.
Il sistema di partenza è un Linux con il dual stack IPv4/IPv6 attivo e funzionante con un indirizzo pubblico IPv4 e uno IPv6. Anche il sistema di posta elettronica è perfettamente funzionante in IPv4 con le ultime versioni dei programmi indicati sopra installati da sorgente, non da pacchetto della distribuzione Linux. Ciò perché con IPv6 è sempre meglio avere le ultime versioni, anche se la maggior parte delle istruzioni che seguono dovrebbero funzionare anche con le versioni distribuite nei pacchetti standard.
Come prima cosa è meglio pubblicare nella zona del nome a dominio che si utilizza il nome del server in IPv6 attraverso il record di tipo AAAA relativo al nome del server.
Per fare in modo che Postfix parli in IPv6 con il mondo ci sono alcune modifiche da fare a main.cf
:
- il parametro
inet_protocols
deve essere impostato aall
, in questo modo Postfix accetta connessioni su entrambi gli stack ed esegue connessioni verso l’esterno utilizzando, a caso, sia IPv4 sia IPv6, nel caso in cui entrambi gli indirizzi sono indicati nel DNS, altrimenti utilizza l’unico protocollo utile; - al parametro
mynetworks
bisogna aggiungere il loopback IPv6[::1]/128
e gli eventuali network locali che possono inviare mail tramite Postfix usando IPv6, ad esempio[2001:db8:58b7:1234::]/64
; - il parametro opzionale
smtp_bind_address6
specifica l’IPv6 che viene utilizzato per connettersi ai mail server remoti; questo serve perché in futuro un host potrà avere molti IPv6 e questo è l’indirizzo su cui è stato definito il reverse del nome.
Riavviare Postfix per attivare le impostazioni; il comando postfix reload
non è sufficiente se si modifica inet_protocols
. Si può verificare se Postfix risponde in IPv6 dal server stesso con un telnet ::1 25
oppure si può provare da un altro host in IPv6. Postfix ha un apposito file readme per l’IPv6, che è bene controllare prima di procedere alle modifiche.
Dovecot richiede meno attività; basta, infatti, confermare che dovecot.conf
contenga questa riga presente di default:
listen = *, ::
Se non è così, correggere il parametro listen
e riavviare Dovecot.
La parte leggermente più elaborata è Amavis, che, però può essere fatta in un secondo tempo rispetto alle altre due configurazioni perché riguarda solamente un giro interno al server; è quasi più un vezzo che una necessità, almeno finché sopravvive l’installazione a due stack. Innanzi tutto bisogna dire a Postfix di parlare in IPv6 con Amavis: nella direttiva content_filter
di main.cf
bisogna sostituire la parte [127.0.0.1]
con [::1]
; nel file master.cf
la riga
127.0.0.1:10025 inet n - n - - smtpd
diventa
[::1]:10025 inet n - n - - smtpd
e uno dei suoi parametri
-o mynetworks=127.0.0.0/8
diventa
-o mynetworks=[::1]/128
Si può quindi riavviare Postfix e passare all’ultima parte della configurazione, il file amavisd.conf
.
Per default @mynetworks
contiene già il loopback e gli indirizzi locali IPv6, si può aggiungere il network pubblico assegnato dal provider, ad esempio [2001:a240:58b7:1234::]/64
.
Per ricevere le mail da Postfix in IPv6 aggiungere questa riga:
$inet_socket_bind = '::1';
Per restituire le mail a Postfix in IPv6 aggiungere
$forward_method = 'smtp:[::1]:10025';
$notify_method = 'smtp:[::1]:10025';
Si può riavviare Amavis e tenere d’occhio i log, non prima di aver verificato che la libreria Net::Server sia alla versione 2.0 o successiva; se la propria distribuzione ha una versione inferiore, si può usare CPAN per installare l’ultima disponibile con il comando cpan -i Net::Server
Se il tutto funziona, gli header delle mail in arrivo dovrebbero contenere qualcosa tipo
Received: from localhost (mail.luigirosa.com [IPv6:::1]) by mail.luigirosa.com (HyperTrek-Postfix) with ESMTP id 3XWQhk1Jgqz8jcLn for <lists@luigirosa.com>; Tue, 2 Oct 2012 18:25:58 +0200 (CEST) X-Virus-Scanned: amavisd-new at luigirosa.com Received: from mail.luigirosa.com ([IPv6:::1]) by localhost (mail.luigirosa.com [IPv6:::1]) (amavisd-new, port 10024) with LMTP id jeJ9IrGo8LQp for <lists@luigirosa.com>; Tue, 2 Oct 2012 18:25:57 +0200 (CEST)
Si noterà che nei file di configurazione alcune volte gli IPv6 devono essere rinchiusi tra parentesi, altre volte no, altre volte ancora si possono usare indifferentemente le due notazioni. Questo crea un po’ di confusione e, sicuramente, le cose verranno sistemate con le release successive man mano che IPv6 diventerà si uso comune. In linea di massima, i programmi obbligano l’uso delle parentesi nei casi in cui ci possono essere delle ambiguità.
Ora che il sistema di posta elettronica parla in IPv6 si può passare ai client, ma con molta cautela perché se lato server i problemi di IPv6 sono relativamente pochi, non altrettanto si può dire dei client. Ma questo potrebbe essere il tema di un altro articolo.