ClamAV

30 settembre 2021 Roberto Puzzanghera 2 commenti

Clam AntiVirus is an open source (GPL) anti-virus toolkit for UNIX, designed especially for e-mail scanning on mail gateways.

A partire dalla versione 0.104.0 l'installazione di clamav è basata esclusivamente su CMake, che sostuisce definitivamente quella basata su autotools. E' pertanto necessario cambiare il modo di configurazione, compilazione e installazione.

Dal momento che l'installazione non prevede personalizzazioni particolari sarà sufficiente, se lo si preferisce, installare il programma mediante un pacchetto che potrebbe essere messo già a disposizione dalla nostra distribuzione Linux preferita e utilizzare questa pagina solo per quanto riguarda la configurazione successiva.

Mostrerò qui come installare il programma attraverso la compilazione manuale dei sorgenti. Come detto, è necessario avere il pacchetto CMake. Nella documentazione ufficiale si raccomanda una versione recente (la versione 3.21.3 è ok qui sulla mia slackware) altrimenti potrebbero sorgere dei problemi e in quel caso sarà necessario aggiornare CMake via python pip3; in tal caso dare una occhiata a questa pagina delladocumentazione ufficiale sul come fare.

Patch di qmail

27 settembre 2021 Roberto Puzzanghera 18 commenti

Changelog

Il changelog completo e le info sulla patch sono all'interno del file README.PATCH.

  • Sep 27, 2021
    -chkuser: now it allows double hyphens "--" in the sender email, like in y--s.co.jp (diff here)
  • Aug 22, 2021
    -minor fix to qlog: now it logs the auth-type correctly (diff)
  • 2021.06.19
    -chkuser: defined extra allowed characters in sender/rcpt addresses and added the slash to the list (tx Thomas). diff here
  • 2021.06.12
    -RSA key and DH parameters are created 4096 bit long also in Makefile-cert. qmail-smtpd.c and qmail-remote.c updated accordingly (tx Eric Broch).
    -Makefile-cert: the certs will be owned by vpopmail:vchkpw
  • 2021.03.21
    -update_tmprsadh.sh: RSA key and DH parameters increased to 4096 bits
    2020.12.04
    received.c: some adjustments to compile with gcc-10 (diff here)
  • 2020.07.29
    -dk-filter: corrected a bug where dk-filter was using DKIMDOMAIN unconditionally. Now it uses DKIMDOMAIN only if _SENDER is null (tx Manvendra Bhangui).
  • 2020.07.27
    -added a fix for cve-2005-2513 (tx C)
  • 2020.04.25
    -qmail-smtpd.c: added rcptcount = 0; in smtp_rset function to prevent the maxrcpto error if control/maxrcpt limit has been exceeded in multiple messages sent sequentially rather than in a single mail (tx Alexandre Fonceca)
  • 2020.04.16
    -qmail-remote-logging patch added (more info here)
  • 2020.04.10
    -DKIM patch updated to v. 1.28
    * outgoing messages from null sender ("<>") will be signed as well with the domain in env variable DKIMDOMAIN
    * declaring NODK env variable disables old domainkeys signature, while defining NODKIM disables DKIM.

Installare e configurare vpopmail

23 settembre 2021 Roberto Puzzanghera 6 commenti

Vpopmail fornisce un modo semplice di gestire indirizzi di posta su domini virtuali e account email diversi da quelli su /etc/passwd.

Lo scopo di questa pagina è anche mostrare come usare Mysql come sistema di autenticazione. Avere gli utenti su database ha anche il vantaggio di poter interagire con il database attraverrso un'interfaccia web che gestisce gli accounts.

Dettagli della patch installata

La patch che andremo ad applicare è l'insieme delle seguenti:

  • la patch sql-aliasdomains, che fa in modo che vpopmail salvi gli aliasdomains su mysql. Questo consente al driver sql di dovecot di fare l'autenticazione non solo con i domini reali ma anche con gli alias, a condizione che si modifichi anche la query all'interno del driver, come verrà spiegato dopo. Ciò è ora importante, dato che dovecot ha eliminato il driver per vpopmail.
  • la patch defaultdelivery, che fa in modo che vpopmail copi il nostro deldelivery agent preferito (salvato in QMAILDIR/control/defauldelivery) nel file the .qmail-default di ogni nuovo dominio, scovrascrivendo il comportamento di default che cuole che il programma installi il proprio delivery agent vdelivermail.
    Se la funzionalità è disabilitata (--disable-defaultdelivery, opzione di default) vdelivermail verrà installato con l'opzione "delete" invece di "bounce-no-mailbox", che oggi è deprecabile.
  • dovecot-pwd_query patch. Se si vuole usare il driver sql di dovecot con la configurazione "una tabella per un dominio) (--disable-many-domains) è necessario personalizzare in modo pesante la password query. Con questo aggiustamento vpopmail installerà in modo autonomo la procedura e le funzioni sql nel database quando si crea un nuovo dominio. La procedura può essere chiamata da dovecot per fare l'autenticazione.
    Il codice sql supporta gli aliasdomains e i mysql limits, e sarà caricato dal file ~/vpopmail/etc/pwd-query_disable-many-domains.sql che si può ovviamente personalizzare.
    E' necessario configurare vpopmail con --enable-mysql-bin=PATH poichè dobbiamo installare la procedura chiamando mysql con un comando shell.
  • recipient check patch. Da usare con s/qmail di Erwin Hoffmann al fine di validare il destinatario della mail. Questa patch non è importante nella presente installazione. Si veda il file  doc/README.vrcptcheck per maggiori informazioni.
  • la patch gcc-10-compat, con il la quale vpopmail è compatibile con gcc-10.

Installazione configurazione di simscan

28 luglio 2021 Roberto Puzzanghera 5 commenti

Simscan è un semplice programma che abilita il servizio qmail smtpd a rigettare virus , spam e a bloccare allegati durante la conversazione SMTP in modo da ridurre al minimo il carico per il sistema.

Dettagli sulla patch applicata

La versione 1.4.1 è un fork del programma originale di Inter7. I sorgenti sono stati ripuliti e leggermente modernizzati (per evitare vari warming durante la compilazione), contegono varie correzioni di bug e patche, tra le quali quasi tutte quelle di John Simpson (l'unica mancante è la patch "debug" che applicheremo comunque, come mostrato sotto) e il bug fix di Gustavo Castro che era presente nella mia precedente patch combinata. Pertanto la nuova patch agginge solamente solo quanto segue:

  • La debug patch di John Simpson, che consente di migliorare il debud a livello di qmail-smtpd (maggiori informazioni nel sito di jms);
  • un bug fix di Bob Greco secondo il quale un messaggio ricevuto con destinatari locali multipli eseguiva spamc come utente null invece di estrarre il nome utente dal primo destinatario.
    Maggiori informazioni qui https://notes.sagredo.eu/en/qmail-notes-185/simscan-38.html#comment844
  • La mia patch attachments-size-limit che consente di superare un limite di simscan per cui i messaggi con allegati di dimensione superiore a 250k non vengono passati a spamassassin. Questa patch consente di impostare la dimensione massima degli allegati in bytes in fase di compilazione configurando il programma in questo modo

    autoreconf -f -i (questo è necessario dal momento che il file configure.ac è stato modificato)
    configure --with-attachments-size-limit=500000 (default 250k, valore numerico in bytes)

    Inoltre, gli eventi per cui simscan non viene attivato vengono ora loggati a livello smtpd anche senza attivare l'opzione debug.

Razor2, Pyzor, Spamcop e DCC

14 luglio 2021 Roberto Puzzanghera 0 commenti

Questa pagina concerne il setup di alcuni filtri di rete che aiutano spamassassin a decidere cosa fare di un dato messaggio. Abilitando questi filtri, insieme al sistema di apprendimento bayesiano, migliorerà drasticamente le prestazioni di spamassassin nella lotta allo spamming.

Spamassassin User Preferences via SQL

12 luglio 2021 Roberto Puzzanghera 6 commenti

Info: http://spamassassin.apache.org/dist/sql/README - http://wiki.apache.org/spamassassin/UsingSQL

SpamAssassin può ora caricare gli score da un database SQL.  L'obiettivo è far sì che una applicazione web (PHP/perl/ASP/etc.) possa consentire agli utenti di aggiornare le loro preferenze su come SpamAssassin debba filtrare la loro posta. L'uso più comune per un sistema come questo è quello in cui gli utenti aggiornano la white/black list di indirizzi senza bisogno di di aggiornare il file $HOME/.spamassassin/user_prefs.

Si può saltare questa pagina nel caso si voglia consentire solo l'uso di opzioni globali su tutto il server via /etc/mail/spamassassin.

Tenere presente che le regole per la gestione dello spamming a livello utente saranno facilmente gestite per mezzo del plugin "sauprefs" della webmail Rouncube.

Changelog

  • 12 luglio 2021
    la lunghezza del campo varchar "preference" nella tabella userprefs del database è stata aumentata a 50 (era 30) per consentire il salvataggio di variabili lunghe come ad esempio  "bayes_auto_learn_threshold_spam", che veniva troncata prima della modifica.

Script e cronjob per il sistema di learning e reporting di Spamassassin

20 giugno 2021 Roberto Puzzanghera 0 commenti

Ora che abbiamo preparato i filtri antispam dobbiamo addestrare il nostro sistema bayesiano e inviare i report a Razor, Pyzor e Spamcop.

La cosa più ovvia che può venirci in mente di fare a questo punto è forse quella di lanciare sa_learn e spamassassin --report uno dopo l'altro al click sul bottone "Marca come Spam" della webmail Roundcube (vedere i driver cmd_learn e multi_driver del plugin markasjunk), ma questa scelta ha alcuni svantaggi importanti:

  • il processo di addestramento, la conseguente sincronizzazione del journal e la connessione ai vari network per il reporting può richiedere anche una decina di secondi, un tempo che i nostri utenti non sono disposti ad attendere.
  • cosa anche più grave, quando essi cliccano sul bottone "Marca come Spam" non è sempre detto che si tratti di un vero messaggo di posta indesiderata. Prendiamo ad esempio il classico caso delle newsletter a cui si sono regolarmente iscritti e che non vogliono più leggere, e che decidono di eliminare etichettandole come spamming anzichè inoltrare una regolare richiesta di cancellazione.

E' qundi più corretto eseguire questi due compiti durante la notte per mezzo di un cronjob (primo problema risolto), processando i soli messaggi di vero spam/ham che l'utente ha consapevolmente copiato in una cartella apposita (secondo problema).

Plugins per Roundcube

20 giugno 2021 Roberto Puzzanghera 7 commenti

AGGIORNAMENTO del 15 luglio: nel plugin markasjunk sono state aggiunte le note di configurazione del driver sa_learn e del driver multi_driver.


I plugin che ho abilitato sono (al momento):

  • password, già incluso nella cartella plugins
  • managesieve, che scrive gli script per filtrare le email in arrivo (rigetto, spostamento in una cartella specifica, etc.). Notare che per usare questo è necessario aver abilitato  Dovecot managesieve.
  • SpamAssassin-User-Prefs-SQL, che consente all'utente di caricare su database SQL le prefenze su come Spamassassin deve filtrare la sua posta, creando ad esempio una black list.
  • Markasjunk, un plugin che consente di aggiungere con un click nel bottone "Marca come spam" l'indirizzo e-mail del mittente alla propria blacklist, o viceversa, o lanciare un comando come sa_learn.
  • rcguard.Questo plugin registra i tentativi di accesso falliti e presenta una verifica reCAPTCHA dopo un certo numero di accessi falliti.
  • Context Menu. Aggiunge un menu di dialogo alla lista dei messaggi, attivabile con il tasto destro, che comprende tra le altre cose la lista delle cartelle, la rubrica, il marcamento come letto/non letto, cancella, rispondi e inoltra. 
  • autologon. Esegue il login da una pagina esterna (CMS)
  • logout_redirect. Versione modificata per redirigere alla home page dopo il logout
  • newmail_notifier. può notificare le nuove mail in tre modi: focalizzando la finestra del browser e cambiandone l'icona, riproducendo un suono, oppure mostrando la notifica sul desktop (via webkitNotifications).
  • carddav. CardDav client. Può sincronizzare la rubrica con un server CardDav server come owncloud o SoGO.
  • enigma. Fornisce il supporto per la visualizzazione e l'invio di messaggi firmati e/o criptati in formato PGP (RFC 2440) e PGP/MIME (RFC 3156).

Installazione di Dovecot e sieve su qmail + vpopmail

20 giugno 2021 Roberto Puzzanghera 7 commenti

 

Changelog

  • June 20, 2021
    -15-mailboxes.conf: added Junk.TeachSpam and Junk.TeachNotSpam mailboxes to store messages for the learning/report system (more info here)
  • March 17, 2021
    - 90-quota.conf: quota definition adjusted in this way quota = maildir:: as the GETQUOTA command was not returning the quota (thanks a.key)
  • March 2, 2021
    - added domains limits support to password_query (you have to compile vpopmail --enable-mysql-limits)
  • January 29, 2021
    - auth-sql.conf.ext now uses the userdb's prefetch driver in order to perform one single query when doing the auth
    - dovecot-sql.conf.ext has been modified to allow authentication both with real and alias domains, provided that you patched vpopmail accordingly. More info in this page.
    - the iterate_query in the sql driver now extracts the "user" field (was "username") as required by the docs.

Info

Dovecot è un mail server IMAP e POP3 open-source per sistemi Linux/UNIX, scritto con la sicurezza in mente come prima cosa. Dovecot è una scelta eccellente sia per piccole che per grandi installazioni. E' veloce, semplice da installare, non richiede particolari operazioni di amministrazione e usa molta poca memoria.

Rimozione del driver vpopmail-auth di dovecot. Migrating al driver SQL

15 febbraio 2021 Roberto Puzzanghera 0 commenti

Those who are still using the Dovecot's vpopmail auth driver should consider a migration to the sql driver, as on January 4, 2021 dovecot-2.3.13 was released and the vpopmail auth driver removed (more info here).

Adding vpopmail's aliasdomains to MySQL

As some commentators have already pointed out, switching to dovecot's sql auth can be painful if one have domain aliases. I will show below how to make dovecot aware of the vpopmail's aliasdomains, so that a user who tries to login with a domain alias can pass the authentication.

The idea is to save the pairs alias/domain in a new "aliasdomains" MySQL table and modify the dovecot's sql query in order to select the user's domain from this table in case the domain is an alias or from the vpopmail table otherwise. For example:

MariaDB [vpopmail]> SELECT * FROM aliasdomains; 
+----------------------+----------------------+ 
| alias                | domain               | 
+----------------------+----------------------+ 
| alias.net            | domain.net           | 
+----------------------+----------------------+

A vpopmail sql-aliasdomains patch will transparently do the sql stuff when creating/deleting the alias in the usual way by means of the vaddaliasdomain/vdeldomain vpopmail's programs.

NB: if you are testing this solution, I would be glad if you give me a feedback by means of a comment below, so that I can speed up its introduction in the installation guide.

Changelog

  • February 15, 2021
    - fix in the configure file. An autoreconf is needed as I modified the configure.in and Makefile.am files
  • February 10, 2021
    - a C program vsavealiasdomains can now save all the existing domain aliases to MySQL. It can be useful in case of migrations to the dovecot's sql auth driver.
  • Feb 5, 2021
    - The patch has been improved: the sql-aliasdomains stuff is now done by means of the vpopmail's C programs and functions.
  • Feb 3, 2021
    - new patch and script released. Just configure --enable-sql-aliasdomains (default) and forget. The dbtable will be created the first time you will create an aliasdomain.
  • Jan 18, 2021
    - now everything is inside a vpopmail patch. The aliasdomain sql records will be created/deleted transparently when using vaddaliasdomain/vdeldomain in the usual way, provided that you have created the aliasdomains dbtable
  • Jan 17, 2021
    - I modified the dovecot's sql query so that a pair real_domain/real_domain is not needed anymore in the dbtable
  • Jan 13, 2021
    - added support for sql aliasdomains