User Tools

Site Tools


linuxdebian:exim4-dovecot

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
linuxdebian:exim4-dovecot [2025/09/21 20:14] – [Configurazione del greylisting (facoltativo)] kurganlinuxdebian:exim4-dovecot [2025/09/28 17:50] (current) – [Autoreply] kurgan
Line 1: Line 1:
 ====== Mail server con Exim4 / Dovecot / Clamav / Spamassassin / Greylistd ====== ====== Mail server con Exim4 / Dovecot / Clamav / Spamassassin / Greylistd ======
  
-===== Aggiornato per Debian 11 e Debian 12  =====+Questa e` una configurazione di un mail server completo, con supporto per diversi domini, antivirus e antispam, con supporto per filtri Sieve. Le configurazioni sono realizzate su files di testo e non su database in quanto ritengo che sia piu` facile, per piccole installazioni che possono essere gestite da un sistemista che sa come editare un file di testo, evitare di usare un database e una interfaccia web per la configurazione. 
 + 
 + 
 +===== Aggiornato per Debian 1112 e 13  ===== 
 + 
 +** Settembre 2025 - Aggiornato per Debian 13 ** In Debian 13 Exim è alla versione 4.98 e non ci sono differenze nella configurazione con la 4.96 di Debian 12, tuttavia Dovecot è alla versione 2.4.1 che è radicalmente diversa dalla 2.3.x, quindi ho dovuto riscrivere la configurazione quasi totalmente. Restano disponibili le versioni delle configurazioni per Debian 11 e 12 oltre alla 13. 
 + 
 +** Settembre 2025 - Supporto per la compressione della maildir ** Nella config di Dovecot per Debian 13 ho abilitato di default la compressione delle maildir. La compressione richiede di usare Dovecot-LDA come metodo per salvare le mail in Exim (per default viene usato) ed è totalmente trasparente. Dovecot gestisce senza problemi anche email non compresse sul disco, quindi la si può attivare e disattivare quando si vuole anche se abbiamo già delle email non compresse nella nostra maildir.
  
-**Giugno 2025 - Disabilitato clamav di default.** Visto che ClamAV è ufficialmente inutile, almeno con le signature standard, ho modificato la configurazione di Exim per disabilitare totalmente l'uso di ClamAV. Se volete potete riattivarlo impostando la variabile AVSCAN a "enabled" Questa modifica l'ho applicata solo alla versione per Debian 12.+**Giugno 2025 - Disabilitato clamav di default.** Visto che ClamAV è ufficialmente inutile, almeno con le signature standard, ho modificato la configurazione di Exim per disabilitare totalmente l'uso di ClamAV. Se volete potete riattivarlo impostando la variabile AVSCAN a "enabled" Questa modifica l'ho applicata solo alla versione per Debian 12 e 13.
  
 **Gennaio 2025 - Trasformato il deny in caso di fallimento del check SPF in un warning** in quanto ho trovato diversi errori nei record SPF su internet, e non possiamo bloccare la posta di chi non sa configurare SPF. Inoltre ho trovato almeno un caso di record SPF valido che viene considerato "non valido" dalla libreria SPF usata da Exim, ergo l'intero sistema di check SPF è problematico. Se volete, potete anche semplicemente cancellare tutta la parte relativa dalla ACL. **Gennaio 2025 - Trasformato il deny in caso di fallimento del check SPF in un warning** in quanto ho trovato diversi errori nei record SPF su internet, e non possiamo bloccare la posta di chi non sa configurare SPF. Inoltre ho trovato almeno un caso di record SPF valido che viene considerato "non valido" dalla libreria SPF usata da Exim, ergo l'intero sistema di check SPF è problematico. Se volete, potete anche semplicemente cancellare tutta la parte relativa dalla ACL.
Line 19: Line 26:
 **Giugno 2022 - Aggiunta una whitelist specifica dedicata al greylisting** Utile per saltare il greylisting per quei domini che sappiamo essere puliti o per quelli che, come Google o Office365, hanno mille mila SMTP server e quindi continuano a ricadere nel greylisting per più volte di seguito. **Giugno 2022 - Aggiunta una whitelist specifica dedicata al greylisting** Utile per saltare il greylisting per quei domini che sappiamo essere puliti o per quelli che, come Google o Office365, hanno mille mila SMTP server e quindi continuano a ricadere nel greylisting per più volte di seguito.
  
- 
- 
- 
-Questa e` una configurazione di un mail server completo, con supporto per diversi domini, antivirus e antispam, con supporto per filtri Sieve. Le configurazioni sono realizzate su files di testo e non su database in quanto ritengo che sia piu` facile, per piccole installazioni che possono essere gestite da un sistemista che sa come editare un file di testo, evitare di usare un database e una interfaccia web per la configurazione. 
  
 ===== Descrizione tecnica ===== ===== Descrizione tecnica =====
Line 70: Line 73:
  
  
-===== Nuovo in Debian 12 - Controllo SPF ed eventuale rifiuto ===== +===== Nuovo in Debian 12 e 13 - Controllo SPF ed eventuale rifiuto =====
- +
-In Debian 12 Exim è stato compilato per default con il supporto per la verifica del record SPF (in ricezione), e gestione del risultato nelle ACL. Nel file di configurazione per Debian 12 di exim che trovate allegato qui, ho attivato il controllo del record SPF del mittente. È una cosa in test, volendo potete eliminarla commentando le righe relative nelle ACL. Attualmente, se funziona correttamente, rifiuta le email che falliscono il controllo SPF soltanto se il mittente ha configurato il suo record spf con la stringa "-all" alla fine, ovvero il mittente stesso vuole che i destinatari rifiutino le mail che non passano il test. In ogni altro caso accetta la mail segnando nei log un warning. +
- +
-Questa parte è da collaudare e poi da migliorare, inserirò prossimamente un parametro di configurazione come per le altre funzioni come per dire il greylisting o l'uso delle RBL. +
  
 +In Debian 12 Exim è stato compilato per default con il supporto per la verifica del record SPF (in ricezione), e gestione del risultato nelle ACL. Nel file di configurazione per Debian 12 e 13 di Exim che trovate allegato qui, ho attivato prova il controllo del record SPF del mittente. Dopo qualche giorno di test mi sono reso conto che in Debian 12 ci sono problemi. Ho trovato almeno un caso di un record SPF corretto (ma complesso) che fallisce il controllo mentre dovrebbe passarlo correttamente. Questo fatto, unito al fatto che moltissimi mittenti hanno SPF configurato male e quindi falliscono il controllo comunque, mi ha fatto decidere di lasciare il tutto in "warn" e non in "deny". In questo modo va tutto nei log e si può poi fare ulteriore statistica e decidere cosa fare in futuro. Non ho ancora avuto modo di verificare se in Debian 13 se non altro hanno corretto il bug per cui i record SPF complessi vengono male interpretati.
  
  
Line 89: Line 89:
  
  
-===== Configurazione di Dovecot versione 2.3.x con Sieve =====+===== Configurazione di Dovecot versione 2.3.x e 2.4.1 con Sieve ===== 
 + 
 +Dovecot va configurato per servire pop3 e imap4 usando delle maildir. Lavora sempre come uid "mail" e gid "mail", per qualsiasi utente di qualsiasi dominio. Legge le password in chiaro da un file di testo. (La scelta di usare password in chiaro è sicuramente controversa; avere le password in chiaro permette di usare metodi di autenticazione che crittano la password sulla linea. D'altro canto se usiamo solo SSL possiamo anche mandare le password in chiaro sulla linea, e tenerle crittate nel file di config)  
 + 
 + 
 +La configurazione è contenuta nel file ''/etc/dovecot/dovecot.conf'' ed è monolitica, non utilizza alcuna altra configurazione (ne` i files dentro conf.d ne` la configurazione del database, in questo caso) 
 + 
 +**In allegato trovate i files di config per Debian 11 e 12 (2.3.x) e per Debian 13 (2.4.x)**
  
-Dovecot va configurato per servire pop3 imap4 usando delle maildir. Lavora sempre come uid "mail" e gid "mail", per qualsiasi utente di qualsiasi dominio. Legge le password in chiaro (necessario per poter usare autenticazioni in cui la password non viaggia in chiaro sulla linea) da un file di testo. Se si vuole usare mailbox, basta cambiare la parola "maildir" in "mailbox" (ovviamente anche exim andra` adattato per lavorare in mailbox e non in maildir). La configurazione ` in /etc/dovecot/dovecot.conf. Vale la pena di leggersi la documentazione perche` questa configurazione e` funzionante ma minimale, ci sono mille features che possono essere messe a punto come meglio credete. Soprattutto, leggete le parti che riguardano i tweak per la compatibilita` con i client imap rognosi. (vedasi la documentazione su http://www.dovecot.org)+  * Per Debian 11 12 {{ :linuxdebian:exim4-dovecot:dovecot-conf-2_3_x.txt |}} 
 +  * Per Debian 13 con supporto per la compressione delle mail sul disco {{ :linuxdebian:exim4-dovecot:dovecot-conf-2_4_1.txt |}}
  
 Se volete attivare il supporto SSL, occorre generare dei certificati, siano essi "buoni" o fatti in casa. Per generare al volo dei certificati fatti in casa si puo` eseguire uno script che ha lo scopo di generare una coppia certificato/chiave e di metterla dove Dovecot si aspetta di trovarla. Prima modificare (volendo) la configurazione per metterci due cose sensate, modificare mkcert.sh per allungare la validita` da un anno a quanto volete voi, e poi eseguire mkcert, come indicato qui di seguito: Se volete attivare il supporto SSL, occorre generare dei certificati, siano essi "buoni" o fatti in casa. Per generare al volo dei certificati fatti in casa si puo` eseguire uno script che ha lo scopo di generare una coppia certificato/chiave e di metterla dove Dovecot si aspetta di trovarla. Prima modificare (volendo) la configurazione per metterci due cose sensate, modificare mkcert.sh per allungare la validita` da un anno a quanto volete voi, e poi eseguire mkcert, come indicato qui di seguito:
Line 117: Line 125:
  
  
 +===== Configurazione di Exim =====
  
-Questo e` il file ''/etc/dovecot/dovecot.conf'', in versione "monolitica" che non utilizza alcuna altra configurazione (ne` i files dentro conf.d ne` la configurazione del databasein questo caso) +Il file exim4.conf lo trovate qui allegato. Salvatelo come ''/etc/exim4/exim4.conf'' e guardateci dentro, ci sono tanti parametri da aggiustare per le vostre esigenze.
-<code> +
-## +
-## usa questi protocolli (le versioni "s" sono comprese, quindi +
-## imap include imaps e pop3 include pop3s) +
-## +
-protocols = imap pop3 sieve+
  
 +  * Per Debian 11 e Devuan Chimaera (versione 4.94 di Exim) {{ :linuxdebian:exim4-dovecot:exim4.conf.v494.txt }}
 +  * Per Debian 12 e 13  (versione 4.96 e 4.98 di Exim) {{ :linuxdebian:exim4-dovecot:exim4.conf.v496.txt }}
  
 +Oltre a usare la configurazione allegata,  occorre fare una serie di altre operazioni:
  
-## +  * Creare la directory /var/vmail che conterra` la mail degli utenti dei domini virtuali e poi darle permessi 770 e assegnarla all'utente mail gruppo mail.<code ->
-## Configurazione da applicare se necessario, nel caso in cui il carico sia tale da causare superamenti dei limiti +
-## +
-# aumento il numero massimo di processi, per facilitare il login di molta gente assieme. +
-# aumento anche la RAM massima usata da un processo, per evitare che certe ricerche vadano in OOM. +
-# dovrebbe essere fatto in modo piu` chirurgico, leggendo il manuale e non alla vecchia come faccio io +
-# in quanto in Dovecot ogni tipo di processo puo` avere limiti diversi. +
-# Il default è 100 processi ovvero 100 connessioni contemporanee, che spesso sono poche. +
-# http://wiki2.dovecot.org[[/LoginProcess]] +
-#default_process_limit=512 +
-#default_client_limit=2048 +
-#default_vsz_limit = 1 G +
- +
- +
-## +
-## Disabilita IPV6 (volendo) +
-## +
-# listen=* +
- +
-## +
-## autenticatori che accetto +
-## +
-auth_mechanisms = plain login digest-md5 cram-md5 apop +
- +
- +
-## +
-## Se non uso SSL, non posso usare autenticazione plaintext. +
-## Da localhost e da eventuali reti specificate in  +
-## "login_trusted_networks" posso usarla comunque. +
-## +
-disable_plaintext_auth = yes +
-#login_trusted_networks = 192.168.0.0/24 +
- +
- +
-## +
-## Consenti di usare l' UID 8 per accedere alla mail +
-## (visto che tutta la mia mail dei virtual domanins e` di questo utente) +
-## +
-first_valid_uid = 8 +
-last_valid_uid  = 8 +
-first_valid_gid = 8 +
-last_valid_gid  = 8 +
- +
- +
-## +
-## Carica il certificato e la chiave privata per SSL da qui: +
-## +
-#ssl_cert = </etc/dovecot/ssl/dovecot.pem +
-#ssl_key = </etc/dovecot/private/dovecot.pem +
-ssl_cert = </etc/letsencrypt/mail.conslavoro.com.cert +
-ssl_key = </etc/letsencrypt/mail.conslavoro.com.key +
- +
-## +
-## Il file con i parametri DH (necessario da Devuan Beowulf / Debian 10 in poi) +
-## per generarlo, usa "openssl dhparam 4096 > dh.pem" +
-## +
-ssl_dh=</etc/dovecot/dh.pem +
- +
- +
-## +
-## Mostra in "ps" chi e` l'utente che usa il processo +
-## +
-verbose_proctitle = yes +
- +
- +
-## +
-## Scrive nel log le date come le voglio io +
-## +
-log_timestamp = "%Y-%m-%d %H:%M:%S " +
- +
- +
-## +
-## Per loggare tutte le azioni degli utenti imap e pop serve questo plugin +
-## +
-mail_plugins = $mail_plugins mail_log notify +
-plugin { +
-  # Events to log. Also available: flag_change save mailbox_create +
-  mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename save mailbox_create flag_change +
-  # Also available: flags vsize from subject +
-  mail_log_fields = uid box msgid size from subject flags +
-+
- +
- +
- +
-## +
-## Per debuggare. TOGLILI QUANDO FUNZIONA! +
-## +
-# auth_debug_passwords = yes +
-# mail_debug = yes +
-# verbose_ssl = yes +
- +
- +
-## +
-## Questa credo che serva solo per i lock delle mailbox e non delle maildir, ma male non fa. +
-## +
-mail_privileged_group = mail +
- +
- +
-## +
-## Sieve e Managesieve +
-## +
-# NOTA: il default di managesieve e sieve e` creare una directory "sieve" nella home dell'utente. +
-# questa viene creata correttamente perche` la home e` definita nello userdb e finisce in +
-# /var/vmail/<dominio>/<utente>/sieve. +
-# il file del filtro attivo e` di default ".dovecot.sieve" ma lo rinomino in "dovecot-sieve" +
-# senza il "." all'inizio altrimenti viene confuso con una cartella imap che ovviamente non esiste. +
-plugin { +
-  sieve = ~/dovecot.sieve +
-  # se decommento questo l'inoltro ad altro indirizzo viene disattivato. Resta possibile rispondere  +
-  # o consegnare localmente in mailbox diverse dello stesso account. Sarebbe bello poter decidere a quali  +
-  # domini è consentito l'inoltro ma al momento non è previsto. +
-  # vedi questa patch mai accettata: https://dovecot.org/mailman3/hyperkitty/list/dovecot@dovecot.org/thread[[/GPVYHKKE3SYIYSO5A3]]PZKDQUWDEOBACU/ +
-  #sieve_max_redirects = 0 +
-+
- +
- +
-## +
-## LDA (per usare i filtri sieve, uso l' LDA di Dovecot richiamato da Exim) +
-## +
-lda_original_recipient_header = Envelope-to # questo va assieme alla opzione "envelope_to_add" nel trasporto in exim +
-lda_mailbox_autocreate = yes +
-lda_mailbox_autosubscribe = yes +
-protocol lda { +
-  mail_plugins = $mail_plugins sieve +
-+
- +
-## +
-## Configurazioni generali del sistema di autenticazione +
-## +
-service auth { +
-  user = Debian-exim +
-  # questo socket e` quello su cui si autentica Exim per l' SMTP autenticato +
-  unix_listener auth-client { +
-    mode = 0666 +
-  } +
-+
- +
- +
-## +
-## Configurazione dell'autenticazione degli utenti su file di testo +
-## diviso in due parti: +
-## - passdb definisce da che database (files di testo in questo caso) leggo username +
-##   e password e in che formato li leggo +
-## - userdb definisce dove si trova la mail e come la si accede a seconda +
-##   di che utente sei (in questa config e` uguale per tutti, tranne che per +
-##   il percorso dei files della maildir, infatti uso un driver "static"+
-## +
-passdb { +
-  args = username_format=%n scheme=plain /etc/vmail/users/%d +
-  driver = passwd-file +
-+
- +
-userdb { +
-  args = uid=mail gid=mail home=/var/vmail/%d/%n mail=maildir:/var/vmail/%d/%n +
-  driver = static +
-+
- +
- +
-## +
-## configurazioni del protocollo imap +
-## +
-protocol imap { +
-  imap_client_workarounds = +
-  mail_max_userip_connections = 30 +
-+
- +
- +
-## +
-## configurazioni del protocollo pop +
-## +
-protocol pop3 { +
-  pop3_logout_format = top=%t/%T, retr=%r/%R, del=%d/%m, size=%s +
-  pop3_uidl_format = %08Xu%08Xv +
-+
- +
- +
-## +
-## Configurazione dell'utente di default per i socket  +
-## del servizio stats. Questa modifica si rende necessaria +
-## se si usa dovecot-lda con un utente che non sia "dovecot" +
-## (per esempio "mail") altrimenti dovecot-lda non riesce a  +
-## scrivere le stats e riporta warning ad ogni mail consegnata +
-##  +
-## Questa modifica è necessaria da Debian 10 / Devuan Beowulf in poi. +
-## (versione di Dovecot 2.3.4.1) +
-## +
- +
-service stats { +
-    unix_listener stats-reader { +
-        user = mail +
-        group = mail +
-        mode = 0660 +
-    } +
- +
-    unix_listener stats-writer { +
-        user = mail +
-        group = mail +
-        mode = 0660 +
-    } +
-+
- +
-</code> +
- +
- +
- +
- +
-===== Configurazione di Exim ===== +
- +
-Prima di tutto, occorre fare alcune operazioni a livello di file system: +
-  * Creare la directory /var/vmail che conterra` la mail degli utenti dei domini virtuali e poi darle permessi 770 e assegnarla all'utente mail gruppo mail. +
-<code>+
 mkdir /var/vmail mkdir /var/vmail
 chown mail:mail /var/vmail chown mail:mail /var/vmail
Line 344: Line 140:
 </code> </code>
  
-  * Creare la directory /etc/vmail e le sottodirectory che conterranno tutte le configurazioni dei domini virtuali. Creare il file /etc/vmail/domain_aliases,  vuoto, per evitare di avere errori. Questo file potra` poi essere usato o meno, a seconda delle necessita`. Il suo uso e` spiegato piu` avanti. +  * Creare la directory /etc/vmail e le sottodirectory che conterranno tutte le configurazioni dei domini virtuali. Creare il file /etc/vmail/domain_aliases,  vuoto, per evitare di avere errori. Questo file potra` poi essere usato o meno, a seconda delle necessita`. Il suo uso e` spiegato piu` avanti.<code ->
-<code>+
 mkdir /etc/vmail mkdir /etc/vmail
 mkdir /etc/vmail/users mkdir /etc/vmail/users
Line 356: Line 151:
   * Tutti i files dentro /etc/vmail dovranno essere leggibili (e non scrivibili) dal gruppo "Debian-exim" (con la maiuscola!) che e` il gruppo con cui di  default gira Exim4 in Debian. I files che contengono le password devono essere NON LEGGIBILI da tutti. Il consiglio e` quello di fare un ''chown root:Debian-exim'' e poi un ''chmod 640'' dei files.   * Tutti i files dentro /etc/vmail dovranno essere leggibili (e non scrivibili) dal gruppo "Debian-exim" (con la maiuscola!) che e` il gruppo con cui di  default gira Exim4 in Debian. I files che contengono le password devono essere NON LEGGIBILI da tutti. Il consiglio e` quello di fare un ''chown root:Debian-exim'' e poi un ''chmod 640'' dei files.
  
-  * Facoltativamente, puliamo /etc/exim4 dalle porcherie del compilatore di config di Debian (che non usiamo) e teniamo tutto da una parte. Se non lo faccio non cambia nulla, Exim userà la config che abbiamo fatto noi ''/etc/exim4.conf'' e ignorerà quella autogenerata. NOTA: se riavviamo Exim per qualsiasi motivo prima di avere creato il file di config nostro e dopo aver eliminato i files nativi debian, systemd si incazza.<code>+  * Facoltativamente, puliamo /etc/exim4 dalle porcherie del compilatore di config di Debian (che non usiamo) e teniamo tutto da una parte. Se non lo faccio non cambia nulla, Exim userà la config che abbiamo fatto noi ''/etc/exim4.conf'' e ignorerà quella autogenerata. NOTA: se riavviamo Exim per qualsiasi motivo prima di avere creato il file di config nostro e dopo aver eliminato i files nativi debian, systemd si incazza.<code ->
 mkdir /etc/exim4/old mkdir /etc/exim4/old
 mv /etc/exim4/* /etc/exim4/old/ mv /etc/exim4/* /etc/exim4/old/
 </code> </code>
  
-  * Creiamo una directory per le chiavi dkim, che e` bene che ci sia anche se non vogliamo usarla. (Io la uso comunque, senza DKIM oramai non mandi la mail a nessuno dei big)<code>+  * Creiamo una directory per le chiavi dkim, che e` bene che ci sia anche se non vogliamo usarla. (Io la uso comunque, senza DKIM oramai non mandi la mail a nessuno dei big)<code ->
 mkdir /etc/exim4/dkim mkdir /etc/exim4/dkim
 </code> </code>
  
- +  * Creiamo e poi rendiamo eseguibile lo script che invia email di allarme in caso di superamento del rate limit. Questo script va salvato come ''/etc/exim4/ratelimitalert.sh'' <code bash ratelimit.sh>
-Occorre creare lo script che invia email di allarme in caso di superamento del rate limit. Questo script, che si chiama ''/etc/exim4/ratelimitalert.sh'' deve essere eseguibile, e contiene quanto segue:<code>+
 #!/bin/bash #!/bin/bash
 # script per inviare email in caso di allarme # script per inviare email in caso di allarme
Line 415: Line 209:
 </code> </code>
  
 +È opportuno usare dei retry molto frequenti per velocizzare l'invio di email a destinatari che usino la greylist. Questo pero` richiede che Exim esegua il run della coda piu` spesso dei 30 minuti standard in Debian. Per ridurre questo tempo, occorre  modificare il file ''/etc/default/exim4''.
  
-Il file exim4.conf lo devo allegare perche` contiene una serie di parentesi graffe che mandano in crisi il renderer del markup language del wiki. +  Per Debian 12, modificando il valore ''QUEUEINTERVAL'', cosi`:<code ->
-  Lo trovate qui per Debian 11 e Devuan Chimaera (versione 4.94 di Exim) {{ :linuxdebian:exim4-dovecot:exim4.conf.v494.txt |}} +
-  * Lo trovate qui per Debian 12 e Devuan Daedalus (versione 4.96 di Exim) {{ :linuxdebian:exim4-dovecot:exim4.conf.v496.txt |}} +
- +
- +
-Nella configurazione allegata uso dei retry molto frequenti per velocizzare l'invio di email a destinatari che usino la greylist. Questo pero` richiede che Exim esegua il run della coda piu` spesso dei 30 minuti standard in Debian. Per ridurre questo tempooccorre  modificare il file ''/etc/default/exim4'' modificando il valore ''QUEUEINTERVAL'', cosi`: +
-<code>+
 # how often should we run the queue # how often should we run the queue
 QUEUEINTERVAL='5m' QUEUEINTERVAL='5m'
 +</code>
 +  * Per Debian 13, modificando il parametro ''EXIMSERVICE'' cosi`:<code ->
 +EXIMSERVICE='-bdf -q5m'
 </code> </code>
  
  
 +==== NOTE su Exim: ====
  
-==== NOTE su Exim: ==== 
   * Le scansioni antivirus e antispam NON vengono fatte per gli utenti veri (quelli in /etc/passwd) della macchina. L'idea e` che questo sistema nasce per servire la mail solo agli utenti virtuali.   * Le scansioni antivirus e antispam NON vengono fatte per gli utenti veri (quelli in /etc/passwd) della macchina. L'idea e` che questo sistema nasce per servire la mail solo agli utenti virtuali.
-  * per fare testsono comodi i seguenti comandi: +  * Per fare test sono comodi i seguenti comandi: 
-  || ''exim4 -bP'' || Dump nella configurazione che Exim ha in memoria, compresi i valori di default |+ 
-  || ''exim4 -bs -d'' || Sessione smtp "in console" con debug molto dettagliato |+| ''exim4 -bP'' | Dump nella configurazione che Exim ha in memoria, compresi i valori di default | 
-  || ''exim4 -be -d+expand 'espressione''' || per testare una espressione (espansioni di variabili, if, e quant'altro). Notare gli apici singoli intorno all'espressione, fondamentali |+| ''exim4 -bs -d'' | Sessione smtp "in console" con debug molto dettagliato | 
-  || ''exim -bt <email address>'' || Per testare i le regole di routing delle mail. Exim finge di mandare una mail a quell'indirizzo e ci mostra con che router e trasporto la manderebbe (sia locale che remoto) |+| ''exim4 -be -d+expand 'espressione''' | per testare una espressione (espansioni di variabili, if, e quant'altro). Notare gli apici singoli intorno all'espressione, fondamentali | 
-  || ''exim4 -bh <indirizzo ip>.<porta> -d'' || Esegue una sessione smpt in console fingendo che sia provienente dall'indirizzo ip e porta indicati. ||+| ''exim -bt <email address>'' | Per testare i le regole di routing delle mail. Exim finge di mandare una mail a quell'indirizzo e ci mostra con che router e trasporto la manderebbe (sia locale che remoto) | 
 +| ''exim4 -bh <indirizzo ip>.<porta> -d'' | Esegue una sessione smpt in console fingendo che sia provienente dall'indirizzo ip e porta indicati. |
  
  
Line 448: Line 241:
   * Editare il file ''/etc/default/spamd'' ed impostare ENABLED=1 (in Debian 11, e` ''/etc/default/spamassassin'')   * Editare il file ''/etc/default/spamd'' ed impostare ENABLED=1 (in Debian 11, e` ''/etc/default/spamassassin'')
   * Debian 11: Volendo, in fondo, mettere CRON=1 per ricevere aggiornamenti alle regole di spamassassin (nota: questa opzione funziona ancora anche in debian 12, anche se in Debian 12 c'e` un timer in systemd che possiamo usare al posto di questa configurazione)   * Debian 11: Volendo, in fondo, mettere CRON=1 per ricevere aggiornamenti alle regole di spamassassin (nota: questa opzione funziona ancora anche in debian 12, anche se in Debian 12 c'e` un timer in systemd che possiamo usare al posto di questa configurazione)
-  * Debian 12: volendo possiamo usare il comando ''systemctl enable --now spamassassin-maintenance.timer'' invece di usare CRON=1 come indicato nella riga precedente. +  * Debian 12 e 13: volendo possiamo usare il comando ''systemctl enable --now spamassassin-maintenance.timer'' invece di usare CRON=1 come indicato nella riga precedente. 
-  * Se si vuole usare spamd attraverso un socket e non attraverso una connessione tcp a localhost, e` possibile farlo modificando ''/etc/default/spamassassin'' in modo da aggiungere alle opzioni quella per usare il socket (socketpath=xxx). In questo modo la riga OPTIONS diventa: +  * Se si vuole usare spamd attraverso un socket e non attraverso una connessione tcp a localhost, e` possibile farlo modificando ''/etc/default/spamassassin'' in modo da aggiungere alle opzioni quella per usare il socket (socketpath=xxx). In questo modo la riga OPTIONS diventa:<code>
-<code>+
 OPTIONS="--create-prefs --max-children 5 --helper-home-dir --socketpath=/var/run/spamd.ctl" OPTIONS="--create-prefs --max-children 5 --helper-home-dir --socketpath=/var/run/spamd.ctl"
 </code> </code>
Line 469: Line 261:
 </code> </code>
  
-  * Debian 11: Eseguire ''/etc/init.d/spamassassin start'' per avviare il demone spamd (ovviamente al reboot partira` da solo) +  * Eseguire ''systemctl restart spamd'' per riavviare spamassassin
-  * Debian 12: Eseguire ''systemctl restart spamd''+
  
 In questo setup, spamassassin (in realta` il demone spamd) viene sempre chiamato dall'utente "mail", quindi per qualsiasi utente di qualsiasi dominio il database bayesiano sara` sempre lo stesso, e si trovera` nella home dell'utente mail sotto una directory con nome ".spamassassin". In questo setup, spamassassin (in realta` il demone spamd) viene sempre chiamato dall'utente "mail", quindi per qualsiasi utente di qualsiasi dominio il database bayesiano sara` sempre lo stesso, e si trovera` nella home dell'utente mail sotto una directory con nome ".spamassassin".
Line 572: Line 363:
 Alla fine, se vogliamo che funzioni qualcosa, occorre definire almeno un dominio virtuale. Alla fine, se vogliamo che funzioni qualcosa, occorre definire almeno un dominio virtuale.
  
-Per creare un dominio virtuale che abbia degli utenti, e` sufficiente creare un file con il nome del dominio dentro a {{{/etc/vmail/users/}}} Per esempio, ''/etc/vmail/users/pippo.com'' e` il file che contiene gli utenti del dominio "pippo.com".+Per creare un dominio virtuale che abbia degli utenti, e` sufficiente creare un file con il nome del dominio dentro a ''/etc/vmail/users/'' Per esempio, ''/etc/vmail/users/pippo.com'' e` il file che contiene gli utenti del dominio "pippo.com".
  
 Questo file e` composto di tante righe quante sono gli utenti, ognuna delle quali contiene username, password (in chiaro), ed eventualmente variabili che dicono come comportarsi con la scansione antivirus e antispam per l'utente. Queste variabili, facoltative, sono separate dalla password con un carattere ":" e sono separate fra di loro da spazi. Al momento esistono le seguenti variabili: Questo file e` composto di tante righe quante sono gli utenti, ognuna delle quali contiene username, password (in chiaro), ed eventualmente variabili che dicono come comportarsi con la scansione antivirus e antispam per l'utente. Queste variabili, facoltative, sono separate dalla password con un carattere ":" e sono separate fra di loro da spazi. Al momento esistono le seguenti variabili:
Line 628: Line 419:
 ===== Configurazione server smtp autenticato ===== ===== Configurazione server smtp autenticato =====
  
-In questa configurazione esiste anche la possibilita` di accettare sessioni smtp autenticate dagli utenti che magari sono fuori ufficio. Per farlo, ci sono due possibilita`. Il vecchio sistema (disponibile ma obsoleto) consente di autenticare gli utenti SMTP su un file di testo. Il file in questione e` {{{/etc/exim4/passwd.smtp}}}, e va modificato inserendo una riga con ''username:password'' per ogni utente che si vuole che usi l'smtp autenticato. (In questo caso probabilmente e` sufficiente inserire una sola coppia di username e password per ogni dominio e poi comunicarla a tutti gli utenti del dominio.)+In questa configurazione esiste anche la possibilita` di accettare sessioni smtp autenticate dagli utenti che magari sono fuori ufficio. Per farlo, ci sono due possibilita`. Il vecchio sistema (disponibile ma obsoleto) consente di autenticare gli utenti SMTP su un file di testo. Il file in questione e` ''/etc/exim4/passwd.smtp'', e va modificato inserendo una riga con ''username:password'' per ogni utente che si vuole che usi l'smtp autenticato. (In questo caso probabilmente e` sufficiente inserire una sola coppia di username e password per ogni dominio e poi comunicarla a tutti gli utenti del dominio.)
  
-Il nuovo sistema consente ad Exim di autenticare sul backend di autenticazione usato da Dovecot. In pratica Exim chiede a Dovecot di verficare username e password per l'utente. In questo modo e` sufficiente inserire un utente nella configurazione "standard" (dentro a /etc/vmail/users) per consentirgli anche si usare SMTP autenticato con lo stesso username e password. A riguardo di questo, c'e` un bug in Exim 4.69 (versione di Debian Lenny) per cui exim va in segfault se in Dovecot sono presenti piu` di 6 sistemi di autenticazione diversi. Il report e la patch sono disponibili qui: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=551106, e comunque nella configurazione che uso qui il problema non si presenta, almeno spero.+Il nuovo sistema consente ad Exim di autenticare sul backend di autenticazione usato da Dovecot. In pratica Exim chiede a Dovecot di verficare username e password per l'utente. In questo modo e` sufficiente inserire un utente nella configurazione "standard" (dentro a /etc/vmail/users) per consentirgli anche si usare SMTP autenticato con lo stesso username e password.
  
  
Line 640: Line 431:
 ===== Autoreply ===== ===== Autoreply =====
  
-Nota: questa soluzione, seppure funzionante, e` resa obsoleta dall'uso di filtri Sieve con Dovecot. (Vedasi [[../Dovecot-Sieve]])+**Nota: questa soluzione, seppure funzionante, e` resa obsoleta dall'uso di filtri Sieve con Dovecot.** 
 E` possibile attivare un risponditore automatico in stile "vacation" che risponde alle mail di un utente tramite un messaggio con un subject preimpostato e un testo libero. Per farlo, occorre creare un file con nome ''/etc/vmail/autoreply/<dominio>/<utente>'' (ad esempio, /etc/vmail/autoreply/pippo.it/prova per l'utente "prova@pippo.it"). All'interno di quel file, va scritto il testo della risposta automatica, che puo` essere lungo quanto si vuole e composto di piu` righe senza problemi. L'autoreply e` limitato a una risposta al giorno per mittente, questo limite e` impostabile solo nella configurazione ed e` valido per tutti gli utenti, non si puo` differenziare per singolo utente. Per disattivare l'autoreply, va cancellato o rinominato il file. E` possibile attivare un risponditore automatico in stile "vacation" che risponde alle mail di un utente tramite un messaggio con un subject preimpostato e un testo libero. Per farlo, occorre creare un file con nome ''/etc/vmail/autoreply/<dominio>/<utente>'' (ad esempio, /etc/vmail/autoreply/pippo.it/prova per l'utente "prova@pippo.it"). All'interno di quel file, va scritto il testo della risposta automatica, che puo` essere lungo quanto si vuole e composto di piu` righe senza problemi. L'autoreply e` limitato a una risposta al giorno per mittente, questo limite e` impostabile solo nella configurazione ed e` valido per tutti gli utenti, non si puo` differenziare per singolo utente. Per disattivare l'autoreply, va cancellato o rinominato il file.
  
Line 817: Line 609:
 ===== BUGS ===== ===== BUGS =====
  
-  * Se Exim mai dovesse riportare, durante una sessione SMTP con TLS, l' errore "{{{TLS error on connection from XXX [x.x.x.x] (recv): A TLS fatal alert has been received.: Bad record MAC}}}", allora la soluzione pare che sia inserire nella config di exim (parte principale, quella all'inizio) il comando "''gnutls_compat_mode''" (senza alcun parametro).+  * Se Exim mai dovesse riportare, durante una sessione SMTP con TLS, l' errore "TLS error on connection from XXX [x.x.x.x] (recv): A TLS fatal alert has been received.: Bad record MAC", allora la soluzione pare che sia inserire nella config di exim (parte principale, quella all'inizio) il comando "''gnutls_compat_mode''" (senza alcun parametro).
  
   * ** BUG  RISOLTO, almeno spero:** I due routers "virtual_spam_owl" e "virtual_spam_add_subject" non fanno un check dell'esistenza del file VIRTUALS/users/<domain> prima di farci un lsearch sopra, quindi vanno in errore di brutto se per caso questo file manca per un dominio che pero` esiste. Il caso evidente e` se si ha un dominio aliasato in VIRTUALS/domain_aliases che pero` non ha utenti locali. In questo caso e` necessario creare un file di utenti per il dominio, lasciandolo vuoto.   * ** BUG  RISOLTO, almeno spero:** I due routers "virtual_spam_owl" e "virtual_spam_add_subject" non fanno un check dell'esistenza del file VIRTUALS/users/<domain> prima di farci un lsearch sopra, quindi vanno in errore di brutto se per caso questo file manca per un dominio che pero` esiste. Il caso evidente e` se si ha un dominio aliasato in VIRTUALS/domain_aliases che pero` non ha utenti locali. In questo caso e` necessario creare un file di utenti per il dominio, lasciandolo vuoto.
linuxdebian/exim4-dovecot.1758485675.txt.gz · Last modified: by kurgan