bglug.it/content/posts/2008/2008-08-05-postfix-nirvana-parte-ii/index.it.md
Paolo Asperti 51453e6ada
All checks were successful
Container Build / build-image (push) Successful in 40s
all posts are now draft until fixed
2024-04-16 22:05:46 +02:00

605 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Postfix nirvana Parte II
author: jimmi
type: post
draft: true
date: 2008-08-05T11:27:46+00:00
url: /2008/08/05/postfix-nirvana-parte-ii/
categories:
- Documentazione
- Software
tags:
- amavis
- clamav
- dovecot
- fetchmail
- horde
- mailserver
- postfix
- postfixadmin
- postgrey
- spamassassin
---
_Ecco la seconda parte della guida al buon server mail. Come preannunciato nella <a title="BgLUG" href="http://bglug.it/2008/07/24/postfix-nirvana-parte-i/" target="_blank">prima parte</a>, qui parleremo dei programmi accessori che permettono di creare facilmente mailbox virtuali e di rendere la posta (e non solo) disponibile all'utente tramite una interfaccia web avanzata. Voglio anche qui ringraziare Manuel per il decisivo contributo alla realizzazione della guida._
<!--more-->
### Sommario
* [Postfixadmin][1]
* [Postfix: domini e mailbox virtuali][2]
* [Dovecot][3]
* [Dovecot LDA][4]
* [Horde][5]
* [Fetchmail e Gmail server relay][6]
### <a name="htoc1">Postfixadmin</a>
È giunto il momento di installare Postfixadmin, che permette di gestire domini virtuali, mailboxes e alias tramite una interfaccia web costruita in PHP. Postifxadmin è pacchettizzato in Debian Etch, quindi l'installazione dei file avviene con un semplice "`apt-get install postfixadmin`".
L'operazione successiva è la creazione del database e dell'utente amministratore. È possibile farlo semplicemente con <a title="phpMyAdmin" href="http://www.phpmyadmin.net" target="_blank">phpMyAdmin</a>, oppure direttamente tramite il prompt di MySQL con i comandi:
<pre>CREATE DATABASE postfix;
CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'choose_a_password';
GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';</pre>
sostituendo gli opportuni valori, ed inserendo poi gli stessi valori nel file di configurazione `/etc/postfixadmin/config.inc.php`. Nello stesso file, oltre ai dati del database, è necessario cambiare il valore di `$CONF['configured']` da _false_ a _true_ per poter inizializzare l'applicazione. Io preferisco avere le varie maidir degli utenti suddivise in directory separate per dominio, per cui imposto:
<pre>$CONF['domain_path'] = 'YES';</pre>
A questo punto imposto un VirtualHost sul server web che punti alla directory del programma, nel caso di Debian `/usr/share/postfixadmin/`, dirigo il browser su `http://INDIRIZZO_DI_POSTFIXADMIN/setup.php` e, dopo la creazione delle tabelle, mi appare una lista di 'OK' e il form per la creazione dell'utente amministratore. Lo inserisco e posso eseguire il login.
Postfixadmin offre all'utente la possibilità di impostare gli inoltri automatici dei messaggi e un autorisponditore (Vacation). Mentre il primo è già abilitato, per abilitare il secondo dobbiamo effettuare alcune modifiche.
Creo innanzitutto un utente ed un gruppo _vacation_, aggiungendo a `/etc/passwd` la riga:
<pre>vacation:*:65501:65501::0:0:Virtual Vacation:/nonexistent:/usr/sbin/nologin</pre>
ed a /etc/group la riga:
<pre>vacation:*:65501:</pre>
Quindi creo una directory di base per l'autorisponditore, vi copio il file `vacation.pl`, che in Debian si trova in `/usr/share/doc/postfixadmin/VIRTUAL_VACATION/`, e cambio i permessi di tutto:
<pre># mkdir /var/spool/vacation
# cd /usr/share/doc/postfixadmin/VIRTUAL_VACATION/
# cp vacation.pl /var/spool/vacation/
# chown vacation:vacation -R /var/spool/vacation</pre>
Nel file `vacation.pl` devo inserire gli estremi del database modificando le righe:
<pre>my $db_type = 'mysql';
my $db_username = 'postfix';
my $db_password = 'password';
my $db_name = 'postfix';</pre>
ed infine abilitare il modulo modificando nel file
`/etc/postfixadmin/config.inc.php` le righe:
<pre>$CONF['vacation'] = 'YES';
$CONF['vacation_domain'] = 'vacation.nomedominio';</pre>
Per far funzionare l'autorisponditore sono necessari tre moduli Perl. Due di questi li posso installare con:
<pre>apt-get install libemail-valid-perl libmail-sendmail-perl</pre>
mentre il terzo non è incluso nei repository di _Debian Etch_. È però possibile scaricare il pachetto dai repository di _Debian Lenny_ (testing) ed installarlo senza incontrare problemi di dipendenze con:
<pre># wget http://ftp.it.debian.org/debian/pool/main/libm/libmime-encwords-perl/libmime-encwords-perl_1.010.101-1_all.deb
# dpkg -i libmime-encwords-perl_1.010.101-1_all.deb</pre>
In ultimo dobbiamo definire il servizio _vacation_ e fare in modo che i messaggi indirizzari al domino _vacation.nomedominio_ vi siano girati. Per fare questo aggiungo al file `/etc/postfix/master.cf` le righe:
<pre>vacation unix - n n - - pipe
flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}</pre>
creo poi un file `/etc/postfix/transport` contenente la riga:
<pre>vacation.nomedominio vacation:</pre>
compilo il database con:
<pre>#postmap /etc/postfix/transport</pre>
ed aggiungo a `/etc/postfix/main.cf` la riga:
<pre>transport_maps = hash:/etc/postfix/transport</pre>
Il tutto è ora pronto a funzionare, ma per utilizzarlo devo modificare la configurazione di Postfix.
### <a name="htoc2">Postfix: domini e mailbox virtuali</a>
Per fare in modo che Postfix veda i domini virtuali creati da Postfixadmin devo aggiungere le seguenti righe in `/etc/postfix/main.cf`:
<pre>virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_base = /home/mail
virtual_uid_maps = static:6000
virtual_gid_maps = static:6000</pre>
che indicano rispettivamente gli indirizzi delle mappe del database, l'indirizzo della directory dove verrannno create le mailbox virtuali, e l'utente e gruppo proprietari delle mailbox. L'utente e il gruppo devono esistere nel file /etc/passwd:
<pre>vmail:x:6000:6000::/home/mail:/bin/sh</pre>
e in /etc/group:
<pre>vmail:x:6000:</pre>
e devo creare la directory con i giusti permessi
<pre># mkdir /home/mail
# chown vmail:vmail /home/mail</pre>
Le mappe sono file di testo composti come segue:
mysql\_virtual\_alias_maps.cf:
<pre>user = postfix
password = password
hosts = 127.0.0.1
dbname = postfix
table = alias
select_field = goto
where_field = address</pre>
mysql\_virtual\_domains_maps.cf:
<pre>user = postfix
password = password
hosts = 127.0.0.1
dbname = postfix
table = domain
select_field = description
where_field = domain</pre>
mysql\_virtual\_mailbox_maps.cf:
<pre>user = postfix
password = password
hosts = 127.0.0.1
dbname = postfix
table = mailbox
select_field = maildir
where_field = username</pre>
Ora sono pronto a inserire, tramite l'interfaccia di Postfixadmin, il mio primo dominio virtuale e i relativi alias e mailboxes. Dopo averlo riavviato Postfix è pronto a ricevere mail per gli account impostati. Posso testare il tutto in locale con telnet:
<pre># telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 nomemacchina.nomedominio ESMTP Postfix (Debian/GNU)
ehlo nomemacchina.nomedominio
250-nomemacchina.nomedominio
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:&lt;jimmi@server.com&gt;
250 2.1.0 Ok
rcpt to:&lt;jimmi@nomedominio&gt;
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
prova mail
.
250 2.0.0 Ok: queued as 718BE15DF78
quit
221 2.0.0 Bye
Connection closed by foreign host.</pre>
Se tutto è a posto troverò la mail nell'Inbox dell'utente.
### <a name="htoc3">Dovecot</a>
Passo ad occuparmi ora del server IMAP. Anche Dovecot è pacchettizato da Debian, e si installa con:
<pre>apt-get install dovecot-imapd dovecot-pop3d</pre>
È possibile attivare facilmente i server imap, imaps, pop3 e pop3s aggiungendo a `/etc/dovecot/dovecot.conf`:
<pre>protocols = imap imaps pop3 pop3s</pre>
ed eventualmente modificando le sezioni dedicate nello stesso file. Per fare in modo che Dovecot utilizzi le mailbox virtuali modifico seguenti righe di
`/etc/dovecot/dovecot.conf`:
<pre>mail_location = maildir:/home/mail/%d/%n
auth default {
mechanisms = plain login
passdb sql {
args = /etc/dovecot/dovecot-mysql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-mysql.conf
}
user = postfix
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}</pre>
La sezione "`client`" serve per abilitare l'autenticazione SASL in postfix, che si attiva aggiungendo le seguenti righe in `/etc/postfix/main.cf`:
<pre>smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth</pre>
Per ottenere i dati dell'utente dal database aggiungo poi il file
`/etc/dovecot/dovecot-mysql.conf`:
<pre>driver = mysql
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 6000 AS uid, 6000 AS gid FROM mailbox WHERE username = '%u'
connect = host=127.0.0.1 port=3306 dbname=postfix user=postfix password=password default_pass_scheme = CRYPT</pre>
Al riavvio di Dovecot se tutto funziona posso leggere le seguenti righe nei log:
<pre>dovecot: 2008-07-13 19:40:42 Info: Dovecot v1.0.rc15 starting up
dovecot: 2008-07-13 19:40:43 Info: auth-worker(default): mysql: Connected to 127.0.0.1 (postfix)</pre>
### <a name="htoc4">Dovecot LDA</a>
Dovecot fornisce anche un programma per la consegna dei messaggi agli utenti virtuali, chiamato Dovecot **L**ocal **D**elivery **A**gent, che può sostituire _virtual_ fornito dal Postfix, con alcune funzionalità aggiuntive, come l'indicizzazione delle mailbox, l'utilizzo di quote utente e di Sieve tramite appositi plugin. Per abilitarlo devo aggiungere al file `/etc/dovecot/dovecot.conf` le righe:
<pre>protocol lda {
..
# UNIX socket path to master authentication server to find users.
#auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
..
socket listen {
# Note that we're setting a master socket. SMTP AUTH for Postfix uses client sockets.
master {
path = /var/run/dovecot/auth-master
# Auth master socket can be used to look up userdb information for
# given usernames. This probably isn't very sensitive information
# for most systems, but still try to restrict the socket access if possible.
mode = 0600
user = vmail # User running deliver
group = vmail # Or alternatively mode 0660 + deliver user in this group
}
}
..
}</pre>
Posso ora aggiungere il servizio in Postfix, aggiungendo a
`/etc/postfix/master.cf`:
<pre>dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}</pre>
e indicargli di utilizzarlo inserendo in `/etc/postfix/main.cf` le righe:
<pre>virtual_transport = dovecot
dovecot_destination_recipient_limit = 1</pre>
Con queste impostazioni _deliver_, che funziona da utente non privilegiato, genera un errore. Per evitarlo nella <a title="Dovecot MarkMail" href="http://dovecot.markmail.org/" target="_blank">mailing list</a> di Dovecot consigliano di impostare _deliver_ a SUID con il comando:
<pre># chmod u+s /usr/lib/dovecot/deliver</pre>
Riavvio Dovecot e Postfix, e alla prima ricezione posso trovare nei log qualcosa di simile a questo:
<pre>server postfix/pipe[23496]: 23FD715DF87: to=&lt;utente@nomedominio&gt;, relay=dovecot, delay=0.4, delays=0.07/0.02/0/0.31, dsn=2.0.0, status=sent (delivered via dovecot service)</pre>
### <a name="htoc5">Horde</a>
Manca ora l'ultimo pezzo, l'interfaccia web per gli utenti tramite Horde, un framework con numerosi moduli in PHP. Anche questa applicazione è pacchettizzata da Debian, e l'installazione è banale se si seguono le indicazioni del <a title="Debian" href="http://wiki.debian.org/Horde" target="_blank">Wiki</a>.
Installo per primo il framework con:
<pre># apt-get install horde3</pre>
abilito un VirtualHost che punti alla sua directory, aggiungendo ad esempio in `/etc/apache2/sites-available/default`:
<pre>Alias /horde3 /usr/share/horde3
Options FollowSymLinks
AllowOverride Limit
deny from all
allow from TUO_IP</pre>
che mi permetterà di accedere localmente, e inizializzo il database. Quest'ultima operazione può avvenire da riga di comando con:
<pre>#gunzip &lt; /usr/share/doc/horde3/examples/scripts/sql/create.mysql.sql.gz | mysql -u MYSQL_ADMIN -p</pre>
Avendo cura di modificare in `create.mysql.sql.gz` i dati di accesso dell'amministratore di Horde. Fatto ciò puntando il browser su `http://nomemacchina.nomedominio/horde3` compare la maschera iniziale di Horde. Per il debug di eventuali problemi posso puntare il browser su: `http://nomemacchina.nomedominio/horde3/test.php`
La configurazione di Horde3 avviene creando nelle directory sotto `/etc/horde/horde3` i file config.php e config.php.bak con maschera dei permessi 777, configurando poi tramite intefaccia web le opzioni nella maschera in `Amministrazione-->Impostazione-->Horde`, salvando e riportando i permessi dei due file a 644 e 700 rispettivamente.
Per un corretto funzionamento è indispensabile impostare correttamente i parametri nelle maschere _Database_, _Authentication_ e _Preference System_
Horde mette a disposizione, tra gli altri, i seguenti moduli:
* **IMP** - Cliente Webmail
* **Ingo** - Filtro per le mail
* **Turba** - Gestione rubrica
* **Kronolith** - Calendario
* **Nag** - Gestione attività
* **Mnemo** - Gestione note
* **Passwd** - Gestione password
* **MIMP** - Interfaccia per dispositivi mobili
Tutti questi moduli sono presenti nei repository Debian ad eccezione di MIMP, che può essere facilmente installato per Debian con le seguenti operazioni:
<pre># wget http://ftp.horde.org/pub/mimp/mimp-h3-1.1.tar.gz
# tar -xvzf mimp-h3-1.1.tar.gz
# mv mimp-h3-1.1/config /etc/horde/mimp
# mv mimp-h3-1.1 /usr/share/horde3/mimp
# cd /usr/share/horde3/mimp
# ln -s /etc/horde/mimp config</pre>
La configurazione dei vari moduli avviene, analogalmente a quella del framework, in tre operazioni:
* Creo nelle directory sotto `/etc/horde/[nomemodulo]` i file config.php e config.php.bak con maschera dei permessi 777
* Configuro e salvo tramite intefaccia web le opzioni nella maschera in `Amministrazione-->Impostazione-->[nomemodulo]`
* Cambio i permessi dei due file a 644 e 700 rispettivamente.
Ovviamente le operazioni dovranno essere ripetute per ogni modulo.
Oltre alle impostazioni più _banali_ possono essere importanti le seguenti impostazioni per i vari moduli:
**Horde**
Maschera _General_:
- _Determines how we generate full URLs (for location headers and such)_
<pre>Assume that we are using SSL and always generate https URLs</pre>
- _What port number is the webserver running on?_
<pre>443</pre>
Questo mi serve perchè la mia webmail è disponibile su una connessione criptata _https_
Maschera _Authentication_:
- _What backend should we use for authenticating users to Horde?_
<pre>Let a Horde application handle authentication</pre>
- _The application which is providing authentication_
<pre>imp</pre>
Queste due scelte permettono di autenticarsi con le credenziali create in _Postfixadmin_ ed effettualre il _Login_ una sola volta anzichè dover inserire due volte i dati per leggere la posta. In questo caso è importante creare un utente amministratore e inserire il suo nome nella prima casella.
**IMP**
Modifico il file `/etc/horde/imp4/servers.php` inserendo i dati del o dei server mail. Nel file originale sono contenuti diversi esempi, ricordatevi di commentare o cancellare quelli non necessari.
Nel file `/etc/horde/imp4/mime_drivers.php` modifico la linea:
<pre>$mime_drivers['imp']['html']['inline'] = true;</pre>
Questo mi permette di vedere in linea le mail composte in HTML, anche se non meriterebbero 😉 È una scelta giustamente sconsigliata, ma altrimenti le mail HTML vengono formattate in modo impossibile da leggere.
**Ingo**
Nel file `/etc/horde/ingo1/backends.php` specifico quale backend utilizzare per i filtri. Le scelte possibili sono _null_ (applica le regole su richiesta), o regole per _Maildrop_, _Procmail_ o _Sieve_. La scelta più semplice è:
<pre>/* IMAP Example */
$backends['imap'] = array(
'driver' =&gt; 'null',
'preferred' =&gt; 'example.com',
'hordeauth' =&gt; true,
'params' =&gt; array(),
'script' =&gt; 'imap',
'scriptparams' =&gt; array()
);</pre>
Anche in questo caso le altre scelte vanno commentate o cancellate.
**Turba**
Nel file `/etc/horde/turba2/sources.php` specifico quale backend utilizzare. Per utilizzare MySQL la configurazione tipica è:
<pre>$cfgSources['localsql'] = array(
'title' =&gt; _("My Address Book"),
'type' =&gt; 'sql',
'params' =&gt; array_merge($conf['sql'], array('table' =&gt; 'turba_objects')),
'map' =&gt; array(
'__key' =&gt; 'object_id',
'__owner' =&gt; 'owner_id',
'__type' =&gt; 'object_type',
'__members' =&gt; 'object_members',
'__uid' =&gt; 'object_uid',
'name' =&gt; 'object_name',
'email' =&gt; 'object_email',
'alias' =&gt; 'object_alias',
'homeAddress' =&gt; 'object_homeaddress',
'workAddress' =&gt; 'object_workaddress',
'homePhone' =&gt; 'object_homephone',
'workPhone' =&gt; 'object_workphone',
'cellPhone' =&gt; 'object_cellphone',
'fax' =&gt; 'object_fax',
'title' =&gt; 'object_title',
'company' =&gt; 'object_company',
'notes' =&gt; 'object_notes',
'pgpPublicKey' =&gt; 'object_pgppublickey',
'smimePublicKey' =&gt; 'object_smimepublickey',
'freebusyUrl' =&gt; 'object_freebusyurl'
),
'search' =&gt; array(
'alias',
'email'
),
'strict' =&gt; array(
'object_id',
'owner_id',
'object_type',
),
'export' =&gt; true,
'browse' =&gt; true,
'use_shares' =&gt; true,
);</pre>
ed è inoltre necessario creare la tabella in MySQL, utilizzando il comando:
<pre># mysql -u MYSQL_ADMIN -p DATABASE &lt; /usr/share/doc/turba2/examples/scripts/sql/turba_objects.mysql.sql</pre>
**Kronolith**
Se si sceglie il driver SQL è necessario creare la tabella con il comando:
<pre># mysql -u MYSQL_ADMIN -p DATABASE &lt; /usr/share/doc/kronolith2/examples/scripts/sql/kronolith.mysql.sql</pre>
**Nag**
Se si sceglie il driver SQL è necessario creare la tabella con il comando:
<pre># mysql -u MYSQL_ADMIN -p DATABASE &lt; /usr/share/doc/nag2/examples/scripts/sql/nag.sql</pre>
**Passwd**
Nel file `/etc/horde/passwd3/backends.php` ho modificato le linee:
<pre>driver' =&gt; 'sql',
'params' =&gt; array(
'phptype' =&gt; 'mysql',
'hostspec' =&gt; '127.0.0.1',
'port' =&gt; '3306',
'protocol' =&gt; 'tcp',
'username' =&gt; 'postfix',
'password' =&gt; 'password',
'encryption' =&gt; 'crypt-md5',
'database' =&gt; 'postfix',
'table' =&gt; 'mailbox',
'user_col' =&gt; 'username',
'pass_col' =&gt; 'password',
'show_encryption' =&gt; false)</pre>
Per poter modificare la password nel database creato da Postfixadmin.
### <a name="htoc6">Fetchmail e Gmail server relay</a>
Vi sono altri due add-ons non strettamente collegati alla configurazione di un server mail ma molto utili specialmente per server fatti in casa.
**Fetchmail**
È un ottimo programma per ritirare mail da server POP3 o IMAP e consegnarla al server locale. Sia Postfixadmin che Horde hanno dei plugin che gestiscono fetchmail in modi leggermente diversi. Con Horde l'utente inserisce i dettagli del server remoto e scarica la posta mentre è collegato, mentre con Postfixadmin in base ai dati inseriti dall'amministratore nel database vengono creati dei file `~/.fetchmailrc` al volo che possono essere usati inserendo in crontab lo script `fetchmail.pl`.
Purtroppo entrambi hanno due limitazioni che me ne impediscono l'utilizzo: non implementano [Freepops][7] e non permettono l'uso di autenticazioni SSL. Freepops è un programmino che permette di scaricare le mail diretamente dalla webmail, aggirando la limitazione all'uso del server POP per gli abbonamenti free adottato, ad esempio, da Libero e Inwind. L'uso del protocollo SSL è indispensabile invece per scaricare mail dai server di Gmail o Autistici/Inventati.
La versione di Fetchmail pacchettizzata da Debian ci permette di avviare il programma in modalità demone con il tipico script `/etc/init.t/fetchmail`. Il pacchetto di Freepops purtroppo fa riferimento ad una versione troppo datata e non più funzionante, e bisogna quindi installare la versione offerta dai [Backports][8]. Una volta installati entrambi avremo il demone _freepopsd_ in ascolto alla porta 2000 (di default), e possiamo modificare il file `/etc/fetchmailrc` aggiungendo le sezioni relative ai vari server. Alcuni utilizzi tipici sono:
Server POP3
<pre>poll SERVER_POP with proto pop3 auth password
user "NOMEUTENTE.REMOTO" there
with password "password"
is NOMEUTENTE.LOCALE here options fetchall</pre>
Server che richiedono Freepops
<pre>poll SERVER_POP with proto pop3 port 2000
user "NOMEUTENTE.REMOTO" there
with password "password"
is NOMEUTENTE.LOCALE here options fetchall</pre>
Server Gmail
<pre>poll SERVER_POP with proto pop3 port 995
user "NOMEUTENTE.REMOTO" there
with password "password"
is NOMEUTENTE.LOCALE here options ssl sslcertck fetchall</pre>
**Gmail Server Relay**
Normalmente le mail spedite da un server casalingo con IP dinamico vengono rifiutate per motivi di sicurezza, e si è quindi costretti ad usare un server che vi faccia da _relay_, che vi permetta cioè di spedire mail attraverso il suo servizio. Vi dovesse capitare di non avere a disposizione un relay, o di volerne utilizzare uno alternativo, potete usufruire del servizio offerto da Gmail, il quale però richiede un'autenticazione sicura via SSL. Per implementarla aggiungo o modifico le seguenti righe di `/etc/postfix/main.cf`:
<pre>smtpd_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tls_cert_file=/etc/postfix/gmail.pem
smtpd_tls_key_file=/etc/postfix/gmail.key
smtpd_sasl_application_name = smtpd
smtp_tls_per_site = hash:/etc/postfix/smtp_tls_per_site
smtp_use_tls=yes
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_tls_cert_file=/etc/postfix/gmail.pem
smtp_tls_key_file=/etc/postfix/gmail.key
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
relayhost = [smtp.gmail.com]:587</pre>
creo il file `/etc/postfix/sasl_passwd`, vi aggiungo le righe:
<pre># Contents of sasl_passwd
#
[smtp.gmail.com] NOMEUTENTE@gmail.com:PASSWORD</pre>
e lo compilo con:
<pre># postmap /etc/postfix/sasl_passwd</pre>
Infine, se non li possiedo già, creo il mio certificato auto firmato con i seguenti passaggi:
<pre># /usr/local/ssl/misc/CA.pl -newca
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
.......++++++
...................++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase: <strong>password</strong>
Verifying - Enter PEM pass phrase: <strong>password</strong>
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:<strong>IT</strong>
State or Province Name (full name) [Pennsylvania]:<strong>Italia</strong>
Locality Name (eg, city) []:<strong>Bergamo</strong>
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<strong>Casa</strong>
Organizational Unit Name (eg, section) []:<strong>Server</strong>
Common Name (eg, YOUR name) []:<strong>nomemacchina.nomedominio</strong>
Email Address []:<strong>mioindirizzoposta</strong>
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:<strong>password</strong>
...
# openssl req -new -nodes -subj '/CN=nomemacchina.nomedominio/O=Casa/C=IT/ST=Italia/L=Bergamo/emailAddress=mioindirizzoposta' -keyout gmail.key -out gmail.req -days 3650
# openssl ca -out gmail.pem -infiles gmail.req
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:<strong>password</strong>
...</pre>
Al riavvio di Postfix dovrei poter inviare messaggi tramite Gmail, che risulterà dai log con un messaggio di questo tipo:
<pre>Jul 25 11:36:52 server postfix/smtp[28745]: 8C31415DF79: to=&lt;pippo@pippo.com&gt;, relay=smtp.gmail.com[64.233.183.109]:587, delay=6.5, delays=0.0 5/0.05/3.8/2.7, dsn=2.0.0, status=sent (250 2.0.0 OK 1216978613 i4sm31861110nfh.1)</pre>
[1]: #htoc1
[2]: #htoc2
[3]: #htoc3
[4]: #htoc4
[5]: #htoc5
[6]: #htoc6
[7]: http://www.freepops.org/it/ "Freepops"
[8]: http://backports.org/ "Backports"