User Tools

Site Tools


doc:appunti:linux:sa:exim

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:exim [2012/01/19 09:55] – [Cifratura TLS] niccolodoc:appunti:linux:sa:exim [2019/01/21 12:08] (current) – [Smarthost] niccolo
Line 90: Line 90:
 Per le versioni più vecchie di Exim (es. la 3?) sostituire le variabili consigliate **$auth1**, **$auth2** e **$auth3** con le obsolete **$1**, **$2** e **$3**. Vedere anche questa pagina per un [[authdaemon_problem|problema del Courier authdaemon]]. Per le versioni più vecchie di Exim (es. la 3?) sostituire le variabili consigliate **$auth1**, **$auth2** e **$auth3** con le obsolete **$1**, **$2** e **$3**. Vedere anche questa pagina per un [[authdaemon_problem|problema del Courier authdaemon]].
  
-Attenzione che in questo caso Exim deve accedere al socket ''**/var/run/courier/authdaemon/socket**'', rispetto ad una installazione Debian standard ci sono i seguenti permessi che non bastano:+Attenzione che in questo caso Exim deve accedere al socket ''**/var/run/courier/authdaemon/socket**'', rispetto ad una installazione Debian 8 (Jessie) standard ci sono i seguenti permessi che impediscono ad Exim di accedere al socket:
  
 <code> <code>
-drwxrwx--- 3 daemon daemon 1024 May  9 14:40 /var/run/courier/ +drwxr-x--- 2 daemon daemon 100 Mar  8 15:38 /var/run/courier/authdaemon/
-drwxrwx--- 2 daemon daemon 1024 May  9 14:40 /var/run/courier/authdaemon/+
 </code> </code>
  
-Sistemati in questo modo, speriamo che non sia troppo permissivo: +La soluzione suggerita è aggiungere l'utente **Debian-exim** al gruppo **daemon**. Verificare che la directory ''/var/run/courier/'' abbia mode 0755, nelle precedenti release era 0750, non sufficiente.
- +
-<code> +
-chmod 755 /var/run/courier +
-chgrp Debian-exim /var/run/courier/authdaemon +
-</code> +
- +
-Anche in una installazione Debian più recente (Lenny) **non funziona** tutto alla prima, perché i permessi sono: +
- +
-<code> +
-drwxr-xr-x 3 daemon daemon 4096 2006-07-06 16:40 /var/run/courier/ +
-drwxr-x--- 2 daemon daemon 4096 2006-07-06 16:40 /var/run/courier/authdaemon/ +
-</code> +
- +
-Si può cambiare il mode della directory ''authdaemon'' a **0755** (forse la via migliore) oppure aggiungere l'utente **Debian-exim** al gruppo **daemon**.+
  
 Per abilitare l'autenticazione in chiaro (senza TLS) basta definire la macro in ''**conf.d/main/00_local**'': Per abilitare l'autenticazione in chiaro (senza TLS) basta definire la macro in ''**conf.d/main/00_local**'':
Line 146: Line 131:
 </code> </code>
  
 +Questa configurazione abilita la cifratura con STARTTLS, cioè la porta di comunicazione è la tradizionale TCP/25 e la cifratura inizia dopo il comando STARTTLS.
 +
 +===== Cifratura SSL su porta TCP/465 =====
 +
 +Questo metodo sarebbe obsoleto rispetto al TLS su porta TCP/25 (con uso del comando STARTTLS), tuttavia la pessima abitudine di alcuni provider di filtrare la porta 25 in uscita, lo rende ancora interessante.
 +
 +Anzitutto si deve dire al demone di stare in ascolto sulle due porte: 25 e 465, in **''/etc/default/exim4''** si mette (l'opzione **''-oP''** è necessaria quando si specifica l'opzione **''-oX''**):
 +
 +<file>
 +SMTPLISTENEROPTIONS='-oX 465:25 -oP /var/run/exim4/exim.pid'
 +</file>
 +
 +Quindi si deve indicare che sulla porta 465 si vuole usare la cifratura SSL (non il comando STARTTLS come si fa sulla tradizionale porta 25), in **''/etc/exim4/conf.d/main/03_exim4-config_tlsoptions''** si mette:
 +
 +<file>
 +tls_on_connect_ports=465
 +</file>
 ===== Utilizzo dei system filter ===== ===== Utilizzo dei system filter =====
  
Line 301: Line 303:
  
 The only **drawback** is when a legitimate sender send a mail to a non-existent address. If in that moment the primary MX server is unreachable, the secondary MX will get the mail and will drop the subsequent error message. The only **drawback** is when a legitimate sender send a mail to a non-existent address. If in that moment the primary MX server is unreachable, the secondary MX will get the mail and will drop the subsequent error message.
 +
 +===== Smarthost =====
 +
 +In Debian configurare Exim per utilizzare uno smarthost è semplice, basta modificare il file **''/etc/exim4/update-exim4.conf.conf''**:
 +
 +<file>
 +dc_eximconfig_configtype='smarthost'
 +dc_smarthost='10.0.1.205'
 +</file>
 +
 +Se non è necessario gestire posta localmente, è più indicata la configurazione //satellite//. È ovviamente possibile indicare uno hostname e una porta TCP (ad esempio la //submission// invece che la //smtp//):
 +
 +<file>
 +dc_eximconfig_configtype='satellite'
 +dc_smarthost='mail.rigacci.org::587'
 +</file>
 +
 +
 +Dopo la modifica fare un reload di Exim e controllare che il file **''/var/lib/exim4/config.autogenerated''** contenga:
 +
 +<file>
 +DCsmarthost=10.0.1.205
 +</file>
 +
 +Per fare un test su quale **transport** viene usato si può usare il comando:
 +
 +<code>
 +exim -bt "niccolo@rigacci.org"
 +R: smarthost for niccolo@rigacci.org
 +niccolo@rigacci.org
 +  router = smarthost, transport = remote_smtp_smarthost
 +  host smarthost.texnet.it [62.48.51.128] 
 +</code>
 +
 +In assenza di smarthost invece si ha:
 +
 +<code>
 +exim -bt "niccolo@rigacci.org"
 +R: dnslookup for niccolo@rigacci.org
 +niccolo@rigacci.org
 +  router = dnslookup, transport = remote_smtp
 +  host mail.rigacci.org [78.47.114.234] MX=10
 +</code>
 +
 +Se lo **smarthost richiede autenticazione**, è possibile aggiungere le credenziali nel file **/etc/exim4/passwd.client**:
 +
 +<file>
 +smarthost.domain.org:login:password
 +</file>
 +
 +È necessario proteggere il file con permessi **root:Debian-exim** e mode **0640**.
 +
 +Se un messaggio non è partito (è rimasto in coda, il suo ID è visibile con **mailq**), è possibile chiedere un nuovo invio e tracciare la sessione con:
 +
 +<code>
 +exim -v -M 1glXAU-0000Ig-1n
 +</code>
 +
 +In questo modo è possibile verificare che lo smarthost annunci correttamente l'**AUTH PLAIN LOGIN**, magari solo dopo lo **STARTTLS**, e che Exim effettui tutta la sessione correttamente.
 +===== Smarthost per domini privati =====
 +
 +Configurare uno smarthost per un dominio privato presenta qualche problema; anzitutto non è detto che si voglia pubblicare sul DNS un'informazione come il **record MX** per un dominio di posta privato. Inoltre se lo smarthost in questione è su un **indirizzo IP privato** (ad esempio raggiungibile tramite una VPN), Exim fallisce con il router **dnslookup**, generando messaggi di errore del tipo:
 +
 +<code>
 +all relevant MX records point to non-existent hosts
 +lowest numbered MX record points to local host
 +</code>
 +
 +In effetti Exim ha nella configurazione Debian l'opzione **''ignore_target_hosts''** con la quale esclude gli indirizzi IP [[http://tools.ietf.org/html/rfc1918|RFC1918]].
 +
 +La soluzione più semplice è aggiungere un router del tipo:
 +
 +<file>
 +
 +### router/015_private_domains
 +#################################
 +
 +# Private domains routed manually to a specific smarthost.
 +# We can use private IP addresses, otherwise prohibited.
 +
 +private_smarthost:
 +  driver = manualroute
 +  domains = naxos.rigacci.org : naxos.my.rigacci.org
 +  transport = remote_smtp
 +  route_list = \
 +    naxos.rigacci.org    172.16.3.78 ; \
 +    naxos.my.rigacci.org 172.16.3.78
 +</file>
 +
 +===== Address rewrite =====
 +
 +Uno dei casi più utilizzati di address rewrite è modificare l'indirizzo mittente dei messaggi di sistema, che altrimenti risultano provenienti da qualcosa del genere: **''%%root@host.dominio.it%%''**. Per un server che non gestisce un dominio di posta tale indirizzo è quasi certamente inesistente, e il destinatario può facilmente rifiutarlo.
 +
 +Exim onora il file **''/etc/email-addresses''** nel quale si inseriscono righe del tipo:
 +
 +<file>
 +root: support@domain.it
 +</file>
 +
 +in questo modo tutte le mail generate dall'utente locale **root** avranno il mittente indicato.
 +
 +Fare attenzione alle informazioni **[[wp>Sender_Policy_Framework|SPF]]**: il messaggio potrebbe essere rifiutato se il dominio email dichiara che gli host di origine dei messaggi sono altri.
 +
 +Il metodo visto sopra consente di riscrivere solo gli **indirizzi locali** (cioè senza la parte **''@dominio''**). Per riscrivere anche gli indirizzi in messaggi ricevuti via SMTP si può aggiungere un pezzetto di configurazione, in Debian basta creare un file **''/etc/exim4/conf.d/rewrite/32_local-rewriting''** con qualcosa del genere:
 +
 +<file>
 +### rewrite/32_local-rewriting
 +#################################
 +
 +# Rewrite the headers: From, Sender, Reply-To and the envelope From
 +# Test it with:
 +#     exim -brw NAS@192.168.1.254
 +
 +NAS@192.168.1.254  info@domain.org  fsrF
 +</file>
doc/appunti/linux/sa/exim.1326963307.txt.gz · Last modified: 2012/01/19 09:55 by niccolo