Dove lavoro ho una connessione ADSL Telecom e – come capita ogni tanto – non si sa bene perché – quest’ultima ha deciso di cambiare il sistema relativo alla Posta Elettronica.
In particolare hanno cambiato il server SMTP e quello IMAP che ora sono, rispettivamente, out.impresasemplice.it e imap.impresasemplice.it .
Io ho un Server Linux, su cui gira una Debian con Exim4 e Fetchmal, usata per scaricare ed inviare la posta al server Telecom.
Uso questo metodo perché mi consente di avere in locale la posta, così che posso condividerla tra i vari PC, farne il controllo antivirus, antispam, Blacklist e quant’altro, tutto centralizzato e con un accesso più rapido di quello che avrei lasciando in remoto (per non parlare dello spazio).
Inoltre, il tutto, può avvenire per i vari account che il contratto ADSL ci fornisce.
Peccato che, a seguito del cambiamento, l’account secondario usato per l’ufficio dell’Amministrazione abbia cessato di funzionare.
Dopo molta tribolazione e ore passate al telefono con il Supporto Tecnico (molto gentile, devo dire) ne sono venuto a capo. Di fatto hanno inasprito i controlli effettuati sui client che inviano posta: in pratica hanno inibito la possibilità che un account di posta possa inviare mail specificando un indirizzo e-mail “From” diverso dal previsto.
Questo inibisce la possibilità che l’account venga usato per lo spam, falsificando il proprio indirizzo E-Mail.
Peccato che exim4, di default, prevede che ad un server SMTP – usato come smarthost – possa corrispondere una sola accoppiata username/password.
Per fare in modo che sia possibile, con il medesimo smarthost, associare una password ma soprattutto uno username diverso per ogni utente desiderato – prima si poteva usare lo username e la password dell’account principale, anche sugli account secondari – ho dovuto operare diverse modifiche, che vado di seguito ad elencare:
- Modifica del file exim4.conf.template ; previo backup, bisogna cercare la stringa “CONFDIR/passwd.client” e, laddove sono presenti le righe che contengono la variabile “$host“, sostituire quest’ultima con “$sender_address“. In pratica bisogna cambiare:
remote_smtp_smarthost:
debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
driver = smtp
hosts_try_auth = <; ${if exists{CONFDIR/passwd.client} \
{\
${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$host_address}}\
}\
{} \
}
in:
remote_smtp_smarthost:
debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
driver = smtp
hosts_try_auth = <; ${if exists{CONFDIR/passwd.client} \
{\
${lookup{$sender_address}nwildlsearch{CONFDIR/passwd.client}{$host_address}}\
}\
{} \
}
poi:
cram_md5:
driver = cram_md5
public_name = CRAM-MD5
client_name = ${extract{1}{:}{${lookup{$sender_address}nwildlsearch{CONFDIR/passwd.client}{$value}fail}}}
client_secret = ${extract{2}{:}{${lookup{$sender_address}nwildlsearch{CONFDIR/passwd.client}{$value}fail}}}
in:
public_name = CRAM-MD5
client_name = ${extract{1}{:}{${lookup{$sender_address}nwildlsearch{CONFDIR/passwd.client}{$value}fail}}}
client_secret = ${extract{2}{:}{${lookup{$sender_address}nwildlsearch{CONFDIR/passwd.client}{$value}fail}}}
Infine abbiamo:
# this returns the matching line from passwd.client and doubles all ^
PASSWDLINE=${sg{\
${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$value}fail}\
}\
{\\N[\\^]\\N}\
{^^}\
}
che diventa:
# this returns the matching line from passwd.client and doubles all ^
PASSWDLINE=${sg{\
${lookup{$sender_address}nwildlsearch{CONFDIR/passwd.client}{$value}fail}\
}\
{\\N[\\^]\\N}\
{^^}\
}
- Ora passiamo al file passwd.client ; previo backup anche di questo, dobbiamo scrivere i record relativi agli account che intendiamo gestire; di seguito propongo un esempio che penso sia chiaro:
# password file used when the local exim is authenticating to a remote # host as a client. # # see exim4_passwd_client(5) for more documentation # # Example: ### email_address:login:password utente_principale@dominio.191.it:utente_principale@dominio.191.it:password_utente_principale alias_A@dominio.191.it:utente_principale@dominio.191.it:password_utente_principale utente_A@dominio.191.it:utente_A@dominio.191.it:password_utente_A
Notare che, avendo la possibilità di creare degli Alias per ogni account, bisogna prevedere anch’essi.
Io penso che il file di configurazione creato dalla procedura automatica di Debian – all’atto dell’installazione di exim4 – sia già ok, tuttavia, vi fornisco il mio in modo che, in caso di problemi, possiate avere un termine di paragone:
# /etc/exim4/update-exim4.conf.conf # # Edit this file and /etc/mailname by hand and execute update-exim4.conf # yourself or use 'dpkg-reconfigure exim4-config' # # Please note that this is _not_ a dpkg-conffile and that automatic changes # to this file might happen. The code handling this will honor your local # changes, so this is usually fine, but will break local schemes that mess # around with multiple versions of the file. # # update-exim4.conf uses this file to determine variable values to replace # the DEBCONFsomethingDEBCONF strings in the configuration template files. # # Most settings found in here do have corresponding questions in the # Debconf configuration, but not all of them. # # This is a Debian specific file dc_eximconfig_configtype='smarthost' dc_other_hostnames='dominio.191.it' dc_local_interfaces='' dc_readhost='dominio.191.it' dc_relay_domains='' dc_minimaldns='true' dc_relay_nets='192.168.0.0/24' dc_smarthost='out.impresasemplice.it' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='true' dc_mailname_in_oh='true' dc_localdelivery='mail_spool'
Cosa molto importante, alla quale bisogna prestare attenzione, sono i permessi, in particolare gli utenti di appartenenza dei files di configurazione. Questo è quello che bisognerebbe, grosso modo, avere:
drwxr-xr-x 9 root root 1024 2008-05-02 22:03 conf.d -rw-r--r-- 1 root root 59 2010-11-17 18:06 exim4.conf.localmacros -r--r--r-- 1 root root 75933 2011-03-11 16:21 exim4.conf.template -r--r----- 1 root root 83 2011-03-05 12:21 passwd -r--r----- 1 root Debian-exim 317 2011-03-11 16:31 passwd.client drwxr-xr-x 2 root root 1024 2011-03-11 16:38 RCS -rw-r--r-- 1 root root 151 2010-11-18 10:23 system.filter -rw-r--r-- 1 root root 1122 2011-03-05 12:23 update-exim4.conf.conf
Notare che il file passwd.client appartiene a root:Debian-exim .
Infine, importantissimo, è necessario – se non presente – creare il file exim.conf.localmacros il cui contenuto deve essere:
MAIN_TLS_ENABLE = true AUTH_CLIENT_ALLOW_NOTLS_PASSWORD=1
Se qualcosa non è chiaro, scrivetemi pure !