Both sides previous revisionPrevious revisionNext revision | Previous revision |
linuxdebian:exim4-dovecot [2025/09/28 16:35] – [Nuovo in Debian 12 - Controllo SPF ed eventuale rifiuto] kurgan | linuxdebian:exim4-dovecot [2025/09/28 17:50] (current) – [Autoreply] kurgan |
---|
===== Configurazione di Exim ===== | ===== Configurazione di Exim ===== |
| |
Prima di tutto, occorre fare alcune operazioni a livello di file system: | 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. |
* 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> | * 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 -> |
mkdir /var/vmail | mkdir /var/vmail |
chown mail:mail /var/vmail | chown mail:mail /var/vmail |
</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 |
* 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 |
</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 tempo, occorre 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 test, sono 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. | |
| |
| |
* 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> |
</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". |
===== 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. |