Patch di qmail

17 gennaio 2022 Roberto Puzzanghera 18 commenti

Changelog

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

  • Jan 17, 2022
    -now qmail-smtpd logs rejects when client tries to auth when auth is not allowed, or it's not allowed without TLS (a closed connection with no log at all appeared before).
    -added qmail-spp.o to the TARGET file so that it will be purged with "make clean".
    diff here
  • Dec 19, 2021
    -qmail-spp patch added
  • 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)

Playing with qmail-spp

19 dicembre 2021 Roberto Puzzanghera 0 commenti

qmail-spp provides plug-in support for qmail-smtpd. It allows you to write external programs and use them to check SMTP command argument validity. The plug-in can trigger several actions, like denying a command with an error message, logging data, adding a header and much more.

  • Author: Pawel Foremski
  • More info here

Today I played for the first time with an ancient patch for qmail: qmail-spp and I was really impressed for the ease of use and the elegance of its code, which is inserted inside qmail-smtpd.c with a few touches, despite of the many things that it can do when installed and enabled.

It can run a custom plugin in any language and at any level of the smtp session, grabbing the environment variables, writing into stderr or blocking the smtp session with a return error for the sender.

In no time at all I managed to understand its logic and write a small plugin by adapting a c program I wrote for s/qmail a few months ago to check the validity of the recipient.

Of course I decided to add this patch to my combo. I've just modified the way it has to be enabled, just not to bother those who don't want to touch their run scripts. So, while the original patch is enabled by default, I modified things a little bit so that you have to manually enable it by exporting the variable ENABLE_SPP in your run scripts. Therefore the original NOSPP variable is useless.

Have fun!

Roundcube webmail

1 dicembre 2021 Roberto Puzzanghera 4 commenti

Roundcube è una webmail avanzata con una bella interfaccia grafica.

Changelog

  • Dic 1, 2021
    RC upgraded to v. 1.5.1
  • Gen 3, 2021
    disabled the SMTP authentication when sending messages via RC. SMTP port changed to 25.

Aggiornare Roundcube all'ultima versione

Le seguente note per la migrazione questa volta non hanno funzionato nell'aggiornamento da v. 1.5.0 from v. 1.4.11. Lanciando lo script installto.sh ho alcuni errori riguardanti lo schema del database:

ERROR: Error in DDL upgrade 2020020101: [1091] Can't DROP 'user_id_fk_cache_index'; check that column/key exists

Questo è stato molto fastidioso perchè ho dovuto creare manualmente tutte le foreign keys basandomi su questa pagina. Ho anche dovuto creare la tabella 'contactgroupmembers', anche se penso che sarebbe stata creata nel caso lo script fosse stato eseguito con successo.

Quest'aktro errore è stato risolto aggiornando mariadb da 10.0 a 10.5

ERROR: Error in DDL upgrade 2020091000: [1709] Index column size too large. The maximum column size is 767 bytes.

Quindi, per quanto concerne questo update, sarebbe forse meglio fare una installazione pulita.

Lascio qui sotto le vecchie note per l'aggiornamento nella speranza che siano nuovamente utili in seguito.

Installare e configurare vpopmail

30 ottobre 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.
  • vusaged configure patch
    Almeno su Debian 11 sembra che vusaged si rifiuti di terminare la configurazione (comando configure) a causa di un mancato link alle librerie mysql (configure: error: No vauth_getpw in libvpopmail). Ovviamente ho spulciato lo script e il link sembra impostato correttamente, e ciò è al momento molto strano. Dopo un po' di prove, ho notato che facendo in modo che il configure superi il problema senza bloccarsi con un messaggio di errore, la compilazione susseguente vada a buon fine linkando corrrettamente libmysqlclient e terminando con successo la compilazione.
    NB: è necessario dare un autoreconf -f -i nella directory vusaged prima della configurazione, dal momento che il file configure.ac è stato modificato.
  • 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.