Contents
- Informazioni generali su Exim
-
Configurazioni aggiuntive
- File singolo per la configurazione di Exim4
- File suddiviso
- File personale
- Posizione del file di configurazione generato automaticamente
- TLS e autenticazione
- Filtri SPF
- Liste nere per DNS
- Sotto-indirizzi email (segno più come in Gmail)
- Installare strumenti diagnostici
- Autenticazione utente
- Filtraggio dello spam
- ACL (Access control list, liste di controllo degli eaccessi) di Exim
- Smarthost con autenticazione
- Esecuzione solamente come utente Debian-exim per sicurezza aumentata
- Supporto per DMARC
- Per gestire una mailing list e assicurare che tutta la posta inviata sia conforme con DMARC
- Test/Sviluppo in locale della posta Exim
- Vedere anche
Informazioni generali su Exim
Exim è un MTA (Message Transfer Agent, agente di trasferimento messaggi).
= Installazione =s Exim viene generalmente fornito con l'installazione predefinita di Debian.
In aggiunta alle funzionalità già supportate da exim4-daemon-light, per le funzionalità avanzate come ricerche di dati LDAP, sqlite, PostgreSQL e MySQL, autenticazione SMTP SASL e SPA, interprete Perl incorporato e l'estensione per la scansione dei contenuti (prima nota come "exiscan-acl") per l'integrazione di antivirus e spamassassin, può essere necessario installare exim4-daemon-heavy.
# apt install exim4-daemon-heavy
= Configurazione =
Il file README.Debian.incluso nei pacchetti exim4 dettaglia in modo esaustivo la configurazione in stile Debian.
{{{
# zless /usr/share/doc/exim4-config/README.Debian.gzI pacchetti Debian di Exim 4 sono configurati tramite lo strumento di configurazione standard di Debian: debconf. Al momento dell'installazione del pacchetto di Exim 4 con il sistema APT vengono poste all'utente alcune domande su come desidera configurare Exim. Il file /etc/exim4/update-exim4.conf.conf viene creato a partire dalle risposte date. Questo file contiene macro che facilitano la creazione del file di configurazione di Exim. Si può ripetere il processo di configurazione in qualsiasi momento usando:
# dpkg-reconfigure exim4-config
Sebbene la configurazione predefinita sia stata estesa rispetto a quella originale a monte con un file macro e altre opzioni, è sempre probabile che sarà necessario modificare a mano la configurazione di Exim con un editor, se si desidera ottenere qualcosa che non è coperto dalla configurazione pilotata da debconf. Non è mai intenzione dei pacchetti fornire attraverso debconf tutti i modi di configurazione possibili e immaginabili.
Example of a debconf generated macro file
Questa configurazione è stata testata in un server ed dovrebbe essere adatta all'uso interno:
#dpkg-reconfigure exim4-config
Tipo di configurazione del sistema di posta: sito internet; posta inviata e ricevuta direttamente con SMTP. Mail name del sistema: propriodominio.com Indirizzi IP sui quali attendere connessioni SMTP in ingresso: // lasciare vuoto Altre destinazioni per conto delle quali accettare posta: propriodominio.com Domini per i quali fare il «relay»: // lasciare vuoto Sistemi per i quali fare il «relay»: // lasciare vuoto Mantenere al minimo il numero di richieste DNS (dial-on-demand)?: No Modalità di consegna per la posta locale: Formato Maildir nelle directory utente Dividere la configurazione in molti piccoli file?: No
Questo scrive la configurazione in /etc/exim4/update-exim4.conf.conf
Il file di configurazione di Exim viene generato dalle macro di debconf usando il seguente comando
# update-exim4.conf
Successivamente si dovrebbe riavviare exim4 usando qualcosa simile a
# service exim4 restart
o
# systemctl restart exim4
Configurazioni aggiuntive
Exim 4 è altamente personalizzabile ben oltre l'insieme di macro fornite da Debconf. Il pacchetto Debian di Exim fornisce diversi metodi di configurazione per semplificare il processo.
Ci sono tre modi in cui si può configurare exim4. Il primo è usando un singolo file monolitico, il secondo è suddividendo il file e il terzo è usando un proprio file.
File singolo per la configurazione di Exim4
Nella configurazione di Exim con debconf viene chiesto se si desidera usare un singolo file per la configurazione per Exim o se si vuole suddividerla in porzioni più piccole. Se si seleziona "singolo file" in debconf, la configurazione verrà generata dal singolo file /etc/exim4/exim4.conf.template.
Il file predefinito è ricco di funzionalità che possono essere abilitate e controllate impostando i valori di varie macro.
Il file /etc/exim4/exim4.conf.localmacros verrà letto per primo, il che lo rende il posto ideale per inserire ogni macro che si desidera impostare. Usando questo file si possono controllare varie funzionalità (DKIM, per esempio) e ottenere comunque il beneficio di non dover modificare i file forniti da Debian, permettendo perciò aggiornamenti più semplici. Questo file deve essere creato dall'utente manualmente nella directory /etc/exim/.
File suddiviso
In questo scenario la configurazione è suddivisa in molti file più piccoli memorizzati in /etc/exim4/conf.d/ che vengono poi assemblati in un unico file per conto dell'utente dal comando update-exim4.conf. Ogni sezione del file di configurazione ha la sua sottodirectory e i file lì contenuti vengono concatenati in ordine alfabetico. Pertanto è probabilmente una buona idea chiamare i propri file personalizzati con un nome simile a 00_exim4-my-config in modo che vengano inclusi per primi.
Questa modalità di funzionamento permette di inserire le proprie sezioni di configurazione in qualsiasi posizione nel file di configurazione finale, senza toccare alcuno dei file forniti dal pacchetto. L'idea è quella di rendere gli aggiornamenti molto affidabili.
File personale
Per configurazioni complesse, con molte impostazioni personalizzate, un file singolo è la cosa migliore.
Basta installare il proprio file in /etc/exim/exim4.conf e exim lo userà e seguirà alla lettera.
Per avere una base su cui lavorare, si può prendere il file /etc/exim4/exim4.conf.template, eseguire update-exim4.conf --keepcomments --output /etc/exim4/exim4.conf o usare la configurazione predefinita degli autori originali che è installata in /usr/share/doc/exim4-base/examples/example.conf.
Se si desidera evitare la roba in più inserita dalle macr, usare /usr/share/doc/exim4-base/examples/example.conf, rinominandolo semplicemente in exim4.conf e metterlo in /etc/exim4/
L'uso di /etc/exim4/exim4.conf disabilità però le funzioni di debconf, perciò si deve avere familiarità con Exim per creare una configurazione che funzioni (la documentazione si trova all'indirizzo https://dev.exim.org/docs.html ).
Notare che /etc/exim4/exim4.conf è letto direttamente da Exim 4 ad ogni fork del binario exim. Perciò se viene modificato durante il funzionamento, ogni connessione SMTP leggerà un file di configurazione diverso!
Posizione del file di configurazione generato automaticamente
Per riferimento, il file generato da update-exim4.conf è /var/lib/exim4/config.autogenerated
Evitare di modificare e sovrascrivere questo file lì dove è!
TLS e autenticazione
Generare un certificato locale
Generare un certificato usando:
# bash /usr/share/doc/exim4-base/examples/exim-gencert
Genera exim.crt e exim.key in /etc/exim4/
Invece di generare un certificato si può semplicemente copiare quelli acquistati o generati in precedenza.
Configurazione RSA/ECDSA con dual stack
Se si desiderano supportare entrambi gli algoritmi ECDSA e RSA, si può fornire più di un certificato:
tls_certificate = /etc/exim4/exim_ecdsa.crt : /etc/exim4/exim_rsa.crt tls_privatekey = /etc/exim4/exim_ecdsa.key : /etc/exim4/exim_rsa.key
Exim seleziona il certificato da presentare al client sulla base della cifratura selezionata. L'ordine di priorità dei cifrari ha effetto su quale certificato viene utilizzato.
Abilitaree TLS
Modificare /etc/exim4/exim4.conf.localmacros aggiungendo la riga seguente:
MAIN_TLS_ENABLE = yes
Questo, naturalmente, potrebbe essere già abilitato nel modello di configurazione principale "exim4.conf.template".
Come per ogni modifica alla configurazione, eseguire update-exim4.conf e poi riavviare exim: service exim4 restart
Comunicare con uno smarthost
Se, come la maggior parte degli utente, non si sta di fatto eseguendo un server Internet, ma si usano invece account di posta elettronica da un ISP o da un'altra compagnia (es. gmail, hotmail, yahoo, ecc.), è necessario comunicare con il loro server SMTP per inviare la posta.
Ogni azienda sembra configurare i propri server in modo diverso e pone restrizioni diverse su come si può inviare la posta. Questo rende la configurazione di Exim4 difficile da descrive in modo generico. L'aggiunta di TLS rende le cose ancora più complicate. Tuttavia si dovrebbe sempre usare TLS, se disponibile, in modo che le proprie credenziali vengano inviate cifrate e non come testo semplice.
Verrà descritta una configurazione che dovrebbe funzionare nella maggioranza dei casi quando si invia la posta usando un unico account ad un unico smarthost.
- Selezionare una delle opzioni smarthost quando si esegue dpkg-reconfigure exim4-config. Quando si specifica lo smarthost, includere sia il nome server dello smarthost sia la porta che desidera si usi (es. example.com::465). Notare i due punti doppi.
Aggiungere le credenziali di autenticazione per un server specifico a /etc/exim4/passwd.client:
<server>:<nomeutente>:<password> (es. server.example.com:mioindirizzo@example.com:abdc1243)
o specificare credenziali per ogni server:
*:<nomeutente>:<password> (es. *:mioindirizzo@example.com:abdc1243)
- Aggiungere le righe seguenti a /etc/exim4/exim4.conf.localmacros (potrebbe essere necessario crearlo se non esiste):
MAIN_TLS_ENABLE = 1 REMOTE_SMTP_SMARTHOST_HOSTS_REQUIRE_TLS = * TLS_ON_CONNECT_PORTS = 465 REQUIRE_PROTOCOL = smtps Aggiungere quanto segue a /etc/exim4/exim4.conf.template dopo .ifdef REMOTE_SMTP_SMARTHOST_HOSTS_REQUIRE_TLS ... .endif
.ifdef REQUIRE_PROTOCOL protocol = REQUIRE_PROTOCOL .endifAggiungere quanto segue dopo .ifdef MAIN_TLS_ENABLE
.ifdef TLS_ON_CONNECT_PORTS tls_on_connect_ports = TLS_ON_CONNECT_PORTS .endif- Il server SMTP potrebbe rifiutare la posta senza un corretto indirizzo ""From:"". Aggiungere una riga a /etc/email-addresses per collegare ciascun utente Linux ad un indirizzo email, es:
root:sysadmin@example.org
Eseguire update-exim4.conf seguito da service exim4 restart
Filtri SPF
sono forniti attraverso la macro CHECK_RCPT_SPF, impostarla a true.
Per il pacchetto Debian di Exim antecedente a Debian 12 (bookworm), Exim usa uno strumento ausiliario che sarà necessario installare:
# apt install spf-tools-perl
Poi si deve eseguire update-exim4.conf e riavviare exim.
Liste nere per DNS
Si può configurare exim in modo che usi liste nere di DNS con la macro CHECK_RCPT_IP_DNSBLS :
CHECK_RCPT_IP_DNSBLS = zen.spamhaus.org
Il comportamento predefinito è di non bloccare gli host trovati nella lista, ma aggiungere semplicemente un header di avvertimento. Per bloccare veramente gli autori di spam sostituire "warn" con "deny" nel blocco seguente:
.ifdef CHECK_RCPT_IP_DNSBLS
warn # <--- deny
dnslists = CHECK_RCPT_IP_DNSBLS
add_header = X-Warning: $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
log_message = $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
.endifPoi riavviare exim.
Sotto-indirizzi email (segno più come in Gmail)
Posso essere facilmente ottenuti aggiungendo qualcosa di simile a quanto segue in una o più delle proprie definizioni di router
local_part_suffix = +* : -* : _* local_part_suffix_optional
L'esempio sovrastante consegna utente+esempio@dominio.com, utente-esempio@dominio.com e utente_esempio@dominio.com a utente@dominio.com.
Analogamente si può usare invece un prefisso con queste opzioni dal nome simile
local_part_prefix = *+ : *- : *_ local_part_prefix_optional
L'esempio sovrastante consegna esempio+utente@dominio.com, esempio-utente@domain.com e esempio_utente@dominio.com a utente@dominio.com.
In entrambi i casi si possono successivamente usare filtri sieve, trucchi di configurazione o il proprio programma di posta per applicare le regole di consegna.
Installare strumenti diagnostici
#apt install swaks libnet-ssleay-perl
Testare la connessione:
$swaks -a -tls -q HELO -s localhost -au proprio_utente -ap '<>' === Trying localhost:25... === Connected to localhost. <- 220 debianwb ESMTP Exim 4.76 Thu, 04 Aug 2011 14:22:02 +0600 -> EHLO debianwb <- 250-debianwb Hello localhost [127.0.0.1] <- 250-SIZE 52428800 <- 250-PIPELINING <- 250-STARTTLS <- 250 HELP -> STARTTLS <- 220 TLS go ahead === TLS started w/ cipher DHE-RSA-AES256-SHA ~> EHLO debianwb <~ 250-debianwb Hello localhost [127.0.0.1] <~ 250-SIZE 52428800 <~ 250-PIPELINING <~ 250 HELP ~> QUIT <~ 221 evie closing connection
Notare che durante il test con swaks si invia un password vuota.
Alcuni provider potrebbero bloccare la connessione alla porta 25, inoltre alcuni client insistono a provare TLS sulla porta 465.
Per gestire questo modificare il file /etc/default/exim4 in questo modo:
SMTPLISTENEROPTIONS='-oX 465:25 -oP /var/run/exim4/exim.pid'
E anche /etc/exim4/exim4.conf.template:
##################################################### ### main/03_exim4-config_tlsoptions ##################################################### tls_on_connect_ports=465 ### main/03_exim4-config_tlsoptions #################################
Per i dettagli vedere il già citato file README.Debian.gz.
Autenticazione utente
Aggiungere l'autenticazione utente è possibile usando strumenti come Dovecot o sasl2-bin. Per gli utenti della shell che desiderano usare SASL e PAM per l'autenticazione con password, questo può essere impostato nel modo seguente:
# apt install sasl2-bin
Modificare /etc/default/saslauthd per abilitare saslauth:
START=yes
Avviare il demone:
# service saslauthd start
In/etc/exim4/exim4.conf.template decommentare la riga seguente per abilitare l'autenticazione con saslauthd:
plain_saslauthd_server:
driver = plaintext
public_name = PLAIN
server_condition = ${if saslauthd{{$auth2}{$auth3}}{1}{0}}
server_set_id = $auth2
server_prompts = :
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endifAggiungere exim al gruppo sasl:
# adduser Debian-exim sasl
In Debian 12, se si trova un errore di exim simile a "cannot connect to saslauthd daemon at /var/run/saslauthd/mux: No such file or directory", si può provare a impostare un meccanismo di autenticazione che crea il mancante /var/run/saslauthd/mux
-a <authmech> Seleziona il meccanismo di autenticazione da usare. meccanismi di autenticazione: sasldb getpwent kerberos5 pam rimap shadow ldap # saslauthd -a pam
Riavviare exim:
# service exim4 restart
Testare la connessione usando il proprio nome utente:
# swaks -a -tls -q AUTH -s localhost -au your_user Password:
Abilitare l'accesso IMAP installando Courier-Imap o un MTA simile.
Filtraggio dello spam
Ci sono diversi modi per rilevare lo spam.
Exim ha la configurazione predefinita per l'uso di spamassassin (è richiesto exim4-daemon-heavy).
# apt install spamassassin
Se si ha usa Debian Jessie o successiva (con systemd abilitato in modo predefinito), abilitare e avviare il servizio usando systemctl:
# systemctl enable spamassassin.service
Per i rilasci di Debian precedenti modificare /etc/default/spamassassin ...
ENABLED=1
Avviare il demone:
# service spamassassin start
In tutti i sistemi modificare /etc/exim4/exim4.conf.template come richiesto dal proprio sistema.
Come prima cosa, se necessario, impostare spamd_address:
# Per l'analisi dello spam esiste un'opzione simile che definisce l'interfaccia a # SpamAssassin. Non è necessario impostare questo se si usa il valore predefinito che # è mostrato nell'esempio commentato. Per la scansione dei virus, deve essere modificata # anche la lista di controllo degli accessi acl_check_data per abilitare la scansione spam. spamd_address = 127.0.0.1 783
Poi modificare la sezione acl_check_data per aggiungere le appropriate intestazioni per lo spam:
### acl/40_exim4-config_check_data
#################################
# Questa ACL viene usata dopo che sono stati ricevuti i contenuti di un messaggio. Questa
# è l'ACL in cui si possono testare le intestazioni o il corpo di un messaggio e, in
# particolare, questo è il luogo in cui si possono richiamare analizzatori di virus o spam esterni.
acl_check_data:
...
...
...
# Vedere la documentazione di exim e il wiki di exim per ulteriori esempi.
#
# warn
# spam = Debian-exim:true
# add_header = X-Spam_score: $spam_score\n\
# X-Spam_score_int: $spam_score_int\n\
# X-Spam_bar: $spam_bar\n\
# X-Spam_report: $spam_report
# metti intestazioni in tutti i messaggi (spam e non)
warn spam = debian-spamd:true
add_header = X-Spam-Score: $spam_score ($spam_bar)
add_header = X-Spam-Report: $spam_report
# aggiunge una seconda riga di oggetto con l'indicazione *SPAM* quando un messaggio
# supera la soglia
warn spam = debian-spamd
add_header = Subject: ***SPAM (score:$spam_score)*** $h_Subject:Notare che la configurazione soprastante aggiunge anche un header X-Spam-Report nelle email in uscita, violando pertanto la RFC2822. Alcuni server di posta, in particolare il server delle mailing-list Debian, semplicemente buttano queste email non conformi. Vedere anche il bug Debian 774553.
Per maggiori informazioni sulla configurazione dei filtri anti-spam vedere la documentazione di exim.
Per testare la propria configurazione di spamassassin seguire il test dell'installazione di spamassassin e gtube.
ACL (Access control list, liste di controllo degli eaccessi) di Exim
Exim fornisce un modo flessibile per impostare liste di controllo degli accessi. Per maggiori informazioni vedere la documentazione delle ACL nel wiki di exim.
Per esempio, se si cerca di respingere tutta la posta da tre fornitori di servizi email gratuiti (dominio1.com, dominio2.com, dominio3.com) in base all'header Received dei loro server, si possono usare le righe seguenti:
deny
condition = ${if match{$h_Received:}{\N\.(domain1|domain2|domain3)\.com\N}{yes}{no}}
message = This mailbox does not support free e-mail services.
Smarthost con autenticazione
Come prima cosa riconfigurare exim4:
sudo dpkg-reconfigure exim4-config
Selezionare posta inviata tramite uno «smarthost»; niente posta locale" (a meno che non si stia configurando la posta locale che non è necessaria per la maggior parte delle persone nel computer casalingo).
Poi modificare il file:
sudo vim /etc/exim4/passwd.client
E aggiungere la riga:
*:login:password
Sostituire il corretto nome di login per l'account di posta elettronica in login e la password corrispondente. I commenti nel file passwd.client forniscono ulteriori informazioni sulle opzioni di configurazione.
La maggior parte degli ISP offre account di posta elettronica multipli perciò può essere ragionevole, dal punto di vista della sicurezza, di creare un account solo per usi di utilità come questo. Se il proprio host Linux venisse compromesso sarà un'ottima cosa avere un account di posta elettronica di utilità separato.
NOTARE: si dovrebbe anche leggere la sezione su TLS e autenticazione più sopra riguardo a come configurare TLS. Non si dovrebbe mai comunicare con uno smarthost senza una connessione cifrata.
Esecuzione solamente come utente Debian-exim per sicurezza aumentata
Questo evita l'innalzamento setuid a root che è stato sfruttato in passato in un bug di sicurezza.
/etc/systemd/system/exim4.service.d/nonroot.conf
[Service] # see 56.2 Root privilege in exim spec AmbientCapabilities=CAP_NET_BIND_SERVICE
chown Debian-exim:Debian-exim /usr/sbin/exim4 # needs guid set in order to become Debian-exim chmod g+s,u+s /usr/sbin/exim4
Assicurarsi che exim sia configurato per instradare tutta la posta prima di arrivare a 300_exim4-config_real_local nei router.
Anche queste opzioni di systemd relative all'hardening sembrano funzionare bene:
[Service] PrivateTmp=yes ProtectHome=yes NoNewPrivileges=yes ProtectSystem=yes
Supporto per DMARC
Notare che nel repository di backport Trisquel 8, exim4-daemon-heavy ha il supporto per DMARC incorporato ed è basato sulla versione da Ubuntu 18.04.
È necessario compilare una versione modificata di exim, modificare i file di configurazione EDITME facendo una patch come quella sottostante. Nella configurazione è necessario usare il spf incorporato in exim, invece di quello esterno con cui viene distribuita in modo predefinito Debian. La documentazione per queste funzionalità è in https://github.com/Exim/exim/blob/master/doc/doc-txt/experimental-spec.txt
@@ -459,9 +462,9 @@ # installed on your system (www.libspf2.org). Depending on where it is installed # you may have to edit the CFLAGS and LDFLAGS lines. -# EXPERIMENTAL_SPF=yes -# CFLAGS += -I/usr/local/include -# LDFLAGS += -lspf2 +EXPERIMENTAL_SPF=yes +CFLAGS += -I/usr/local/include +LDFLAGS += -lspf2 # Uncomment the following lines to add SRS (Sender rewriting scheme) support. # You need to have libsrs_alt installed on your system (srs.mirtol.com). @@ -474,10 +477,10 @@ # Uncomment the following line to add DMARC checking capability, implemented # using libopendmarc libraries. You must have SPF support enabled also. -# EXPERIMENTAL_DMARC=yes -# DMARC_TLD_FILE= /etc/exim/opendmarc.tlds -# CFLAGS += -I/usr/local/include -# LDFLAGS += -lopendmarc +EXPERIMENTAL_DMARC=yes +DMARC_TLD_FILE= /etc/exim4/opendmarc.tlds +CFLAGS += -I/usr/local/include +LDFLAGS += -lopendmarc # Uncomment the following lines to add Brightmail AntiSpam support. You need # to have the Brightmail client SDK installed. Please check the experimental
Exim avrà ora anche delle nuove dipendenze: libopendmarc2 e libspf2-2, e le loro versioni di sviluppo (-dev) per la compilazione.
Per gestire una mailing list e assicurare che tutta la posta inviata sia conforme con DMARC
Le liste Mailman possono essere facilmente configurate male e inviare messaggi che non passano DMARC. Se configurate correttamente, non modificano le firme DKIM e inviano posta conforme a DMARC senza aver impostato "munge from".
Tuttavia, a volte le persone configurano male exim usando gli header DKIM predefiniti che includono header List-* che impostano Mailman in modo da inviare messaggi che non passano DMARC perché deve modificarli. Exim può fare il rimaneggiamento del from in questo caso. Ciò permette anche alle liste Mailman di avere attivato il filtro dei contenuti e di basarsi su exim per il rimaneggiamento del from quando succede, dato che Mailman non è abbastanza intelligente da fare il rimaneggiamento solo in quel caso.
Test/Sviluppo in locale della posta Exim
In modo predefinito Exim disabilita la consegna locale della posta
- /etc/exim4/exim4.conf.template
dnslookup: debug_print = "R: dnslookup for $local_part@$domain" driver = dnslookup domains = ! +local_domains transport = remote_smtp same_domain_copy_routing = yes # ignore private rfc1918 and APIPA addresses ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/16 :\ 172.16.0.0/12 : 10.0.0.0/8 : 169.254.0.0/16 :\ 255.255.255.255 no_more .endif
È necessario rimuovere la serie di IP locali del proprio ambiente di test/sviluppo.
Pagine correlate:
Vedere anche
