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
Last revisionBoth sides next revision
doc:appunti:linux:sa:exim [2012/01/19 08:54] – [Cifratura TLS] niccolodoc:appunti:linux:sa:exim [2019/01/21 10:27] – [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 137: Line 122:
 </file> </file>
  
-**ATTENZIONE**:!: Se il certificato è scaduto il messaggio di errore potrebbe essere poco esplicito, del tipo:+:!: **ATTENZIONE**: Se il certificato è scaduto il messaggio di errore potrebbe essere poco esplicito, del tipo:
  
 <code> <code>
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>
 +
 +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.txt · Last modified: 2019/01/21 11:08 by niccolo