- Latest version 2024.12.01 (github)
- Changelog
- Readme
Per mia comodità ho spostato i sorgenti di qmail
sources nel mio spazio github
. Ciononostante, tutte le informazioni riguardanti qmail
e programmi correlati continueranno a essere riportate in questo spazio web, e questo spazio rimarrà il luogo ove chiedere eventualmente supporto. Da ora in poi, annzichè rilasciare una patch combinata, rilascerò un pacchetto da scaricare da github
, che sarà ovviamente il risultato della applicazione delle patch elencate sotto sul programma netqmail-1.06
originale.
Changelog
AVVISO: SE STAI AGGIORNANDO qmail
A PARTIRE DA UNA VERSIONE PRECEDENTE ALLA VERSIONE 2024.11.11, TIENI PRESENTE CHE dk-filter
E' STATO CANCELLATO, PERTANTO E' NECESSARIO RICONFIGURARE DKIM
E IL FILE rc.
- Dec 01, 2024 (More info here)
- Added support for EAI (RFC 5336 SMTP Email Address Internationalization) (#13). Thanks to https://github.com/arnt/qmail-smtputf8/tree/smtputf8-tls. libidn2 package (libidn2-dev on debian) is a new dependence.
- chkuser is now smtputf8 compliant. It accepts utf8 characters in sender and recipient addresses provided that the remote server advertises the SMTPUTF8 verb in MAIL FROM, otherwise it allows only ASCII characters plus additional chars from the CHKUSER_ALLOWED_CHARS set. (#15 #16)
* dropped variables CHKUSER_ALLOW_SENDER_CHAR_xx CHKUSER_ALLOW_RCPT_CHAR_xx (replaced by CHKUSER_ALLOWED_CHARS)
* dropped variables CHKUSER_ALLOW_SENDER_SRS and CHKUSER_ALLOW_RCPT_SRS, as we are always accepting '+' and '#' characters
* added variables CHKUSER_INVALID_UTF8_CHARS and CHKUSER_ALLOWED_CHARS - Nov 10, 2024
- Added support for EAI (RFC 5336 SMTP Email Address Internationalization) (commit).libidn2
is required. Thanks to https://github.com/arnt/qmail-smtputf8/tree/smtputf8-tls.
- CHKUSER_SENDER_FORMAT and CHKUSER_RCPT_FORMAT have been commented out in chkuser_settings.h to get this feature working.
Let's consider this release a beta. Testers are welcome concerning the new SMTPUTF8 feature. - Oct 26, 2024
- qmail-remote.c patched to dinamically touch control/notlshosts/<fqdn> if control/notlshosts_auto contains any number greater than 0 in order to skip the TLS connection for remote servers with an obsolete TLS version. (tx Alexandre Fonceca) (commit)
- defined CHKUSER_DISABLE_VARIABLE "RELAYCLIENT" in chkuser_settings.h
- enabled CHKUSER_SENDER_NOCHECK_VARIABLE "RELAYCLIENT" in chkuser_settings.h
- fixed several compilation breaks/warnings on later gcc compilers (tx Pablo Murillo)
- invalid auth fix in qmail-smtpd.c's smtp_auth function (tx Alexandre Fonceca for the advice) (commit)
- qmail path determined dinamically in conf-policy
- added a patch to remove chkuser and the vpopmail dependency (patches dir) - Jun 8, 2024
- conf-channels: default number of channels increased to 4 (was 2). Now qmail offers 2 additional channels with respect to the 2 offered by default (local and remote). More info here
- maxrcpt: error code changed to 452 due to RFC 4.5.3.1 (was 553). If DISABLE_MAXRCPT is defined it skips the check, otherwise outgoing messages from mailing lists would be rejected. (commit) - May 16, 2024
- DKIM: Make the dkimsign binary _not_ derive the "d=" domain value from the Return-Path header (tx mpdude)
- Fixed -Wstringop-overflow on qmail-start.c line 128 (gcc-13.2) (commit)
- Fixed -Wincompatible-pointer-types compilation warnings onsubstdio.h (commit)
- Big Concurrency fix patch removed, as it is incompatible with the above change.
- Create a trigger to decide if your qmail-smtpd instance should respect badmailfrom regex or not. This could be very handling if you decide to have very strict rules for your qmail-smtpd that you don´t want to be applied to qmail-submission. Usage: add export DISABLE_BADMAILFROM=1 to run file service (tx brdelphus)
Il mio pacchetto qmail
include varie modifiche e le ultime versioni di alcune patch di uso comune, applicate sul programma originale netqmail-1.06
. Molte altre modifiche sono state apportate da me o da altri. E' possibile monitorare il processo di sviluppo dal changelog.
- qmail-authentication
- qmail-tls
- force-tls
- chkuser
- qmail queue custom error
- qmail-SPF
- qmail-SRS
- oversize DNS
- reread concurrency
- big concurrency
- maildir++
- Better qmail-smtpd logging
- SMTP HELO/EHLO Greeting delay
- DKIM
- EXT-TODO
- BIG-TODO
- qmail-inject-null-sender
- doublebounce-trim
- qmail-taps-extended
- outgoingip
- qmail-rfc2821
- smtpd-502-to-500
- qmail-dnsbl
- qmail-moreipme
- qmail-hide-ip-headers
- qmail-date-localtime
- qmail-liberal-lf
- qmail-maxrcpt
- qmail-empf
- qregex
- brtlimit
- validrcptto
- reject-relay-test
- qlog
- reject null senders
- remove-cname-check
- any-to-cname
- rcptcheck
- qmail-channels
- qmail-remote-logging
- CVE-2005-1513
- qmail-spp
- fastremote
- EAI support
[Vedi i dettagli sulla patch applicata qui]
Altre variante prodotte da me:
- Netqmail con le sole aggiunte di smtp-auth, tls e force-tls
- Ramo del mio
qmail
privato dichkuser
e della dipendenza davpopmail
- Directory con tutte le patch
Sei invitato a dare un'occhiata alla prossima pagina di questa guida, che si propone di presetare alcuni test di funzionamento di queste patch alla fine.
Prima di installare
Questo pacchetto richiede la libreria libidn2
(GNU Internationalized Domain Name library versione 2, libidn2-dev
su OS Debian
e derivati). Si dà anche per scontato che a questo punto siano stati già creati gli utenti qmail
, come già spiegato in una pagina precedente.
Questo pacchetto qmail
contiene chkuser
, che ha vpopmail
come prerequisito. Se stai cercando una variante di qmail
senza chkuser
e vpopmail
puoi passare al ramo dedicato nel mio spazio github dove puoi trovare questo stesso qmail
senza chkuser
; scaricare il ramo in questo modo:
git clone -b no-chkuser-vpopmail https://github.com/sagredo-dev/qmail.git
Installazione della libreria libsrs2
- Scaricare da qui: http://www.libsrs2.net (copia locale)
Questa libreria è un prerequisito della patch SRS, che è inclusa nella mia patch combinata. E' obbligatoria l'installazione, altrimenti la compilazione andrà in errore.
wget http://www.libsrs2.org/srs/libsrs2-1.0.18.tar.gz tar xzf libsrs2-1.0.18.tar.gz cd libsrs2-1.0.18 ./configure make make install ldconfig cd ../
Accertiamoci che la libreria libsrs2 sia stata effettivamente linkata, altrimenti andremo incontro a un crash e riavvio infinito di qmail-send con una quantità crescente di processi avviati che porterà in breve a un auto-DoS:
> ldconfig -p|grep libsrs2 libsrs2.so.0 (libc6,x86-64) => /usr/local/lib/libsrs2.so.0 libsrs2.so (libc6,x86-64) => /usr/local/lib/libsrs2.so
Nel caso si fosse optato per l'installazione delle libsrs2
con un pacchetto fornito dalla propria distribuzione Linux, è possibile che le librerie si trovino in /usr/lib
e non su /usr/local/lib
. In tal caso controllate l'effettiva esistenza del file /usr/local/include/srs2.h
; se non lo trovate modificate manualmente il file srs.c
presente nella cartella sorgente di netqmail
in questo modo:
#include </usr/local/include/srs2.h>#include </usr/include/srs2.h>
Scaricare i sorgenti
Se ti stai chiedendo come mai sia necessario scaricare e installare nuovamente qmail
, è necessario ricordare che il programma chkuser
incluso nel mio pacchetto ha vpopmail
come prerequisito, mentre lo stesso vpopmail
richiede di essere installato sopra il qmail
originale. Quindi la caena di compilazione è netqmail > vpopmail > patched qmail.
QMAIL_VERSION=2024.12.01 wget https://github.com/sagredo-dev/qmail/archive/refs/tags/v${QMAIL_VERSION}.tar.gz tar xzf v${QMAIL_VERSION}.tar.gz cd qmail-${QMAIL_VERSION}
Configurazione di chkuser
- Maggiori informazioni qui: http://opensource.interazioni.it/qmail/chkuser/documentation/chkuser_settings.html
Il pacchetto qmail
appena scaricato e applicato ha chkuser
abilitato e configurato per eseguire il controllo dell'esistenza del destinatario (recipient verification) e il MAV (Mail From: Address Verification). E' possibile personalizzarne la configurazione modificando il file chkuser_settings.h prima della compilazione di qmail
.
Configurazione della patch force-tls
Le impostazioni predefinite della pacth prevedono che l'autenticazione sia proibita se non si presenta il comando STARTTLS. Se invece si vuole consentire le connessione non c4riptate con TLS, è sufficiente porre
export FORCETLS=0
nel proprio run file (vedere dopo). Valori diversi da 0 o nessuna dichiarazione forzano il TLS prima dell'atutenticazione.
Configurazione di qmail-auth
Come impostazione predefinita l'autenticazione viene eseguita in modalità LOGIN o PLAIN. Sei invitato a leggere il file README.auth per ulteriori dettagli riguuardanti l'utilizzo della variabile di ambiente SMTPAUTH, specialmente sei interessato a usare CRAM-MD5.
Ricompilazione di qmail
Coloro che stanno facendo una nuova installazione di qmail possono ora compilare come segue
make setup check
e passare al paragrafo successivo (Creare la SSL key).
Coloro che invece hanno già qmail in esecuzione e stanno ricompilando per un aggiornamento dovrebbero stoppare qmail prima di installare.
La patch BIG-TODO che è stata applicata può richiedere che la coda venga rigenerata, la prima volta che la si usa. Pertanto è bene essere consapevoli che tutti i messaggi nella coda verranno distrutti quando questa viene cancellata prima dell'installazione di qmail.
Per sapere se vi sono messaggi in coda digitare questo comando:
> qmailctl stat /service/qmail-send: up (pid 18127) 6 seconds /service/qmail-send/log: up (pid 18134) 6 seconds /service/qmail-smtpd: up (pid 18126) 6 seconds /service/qmail-smtpd/log: up (pid 18135) 6 seconds /service/qmail-submission: up (pid 18131) 6 seconds /service/qmail-submission/log: up (pid 18132) 6 seconds /service/vpopmaild: up (pid 18129) 6 seconds /service/vpopmaild/log: up (pid 18128) 6 seconds messages in queue: 0 messages in queue but not yet preprocessed: 0
Comunque, se non si deve gestire un server di grandi dimensioni, si può sempre usare la versione della mia patch combinata che non contiene la patch BIG-EXT-TODO.
In definitiva è necessario lanciare questo comando la prima volta che si installa la patch con la BIG-TODO:
qmailctl stop rm -r /var/qmail/queue
Ora ricompiliamo qmail
:
make
Se qmail è in esecuzione arrestare i servizi prima dell'installazione:
qmailctl stop
Infine installare qmail
e poi avviarlo:
make setup qmailctl start
Creare la SSL key
SE non hai intenzione di costruire un un open relay (che consente l'invio di email connettendosi da remoto con accesso smtp/tls) puoi saltare questo punto.
Per mettere in sicurezza l'autenticazione smtp bisogna creare un certificato SSL. Il certificato deve essere di proprietà dell'utente sotto il quale viene eseguito qmail-smtpd, nel nostro caso vpopmail.
# make cert Generating a 1024 bit RSA private key ..................++++++ .......++++++ writing new private key to '/var/qmail/control/servercert.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:IT State or Province Name (full name) [Some-State]:Italy Locality Name (eg, city) []:Cagliari Organization Name (eg, company) [Internet Widgits Pty Ltd]:Your Name Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:smtp.yourdomain.net Email Address []:postmaster@yourdomain.net # make tmprsadh # chown vpopmail.vchkpw /var/qmail/control/*.pem
E' importante che il "Common Name" corrisponda al nome a dominio del server che viene usato come relay.
Ora creiamo un cronjob che aggiorni giornalmente il certificato:
# crontab -e 03 05 * * * /var/qmail/bin/update_tmprsadh > /dev/null 2>&1
Importante: se si sta usando la mia patch e nella vostra installazione qmail-submission
viene lanciato sotto un utente diverso da vpopmail
(diversamente da quanto suggerito in questa guida), è necessario modificare di conseguenza il file update_tmprsadh
, altrimenti è possibile eccedere il timeout della connessione a causa della mancanza dei privilegi di lettura del certificato.
Installazione di un certificato SSL valido
Non appena il server è funzionante sarà il caso di ritornare qui per installare un certificato valido fornito da Let's Encrypt. Si veda questa pagina al proposito.
Dettaglio delle patch
qmail-authentication
- Author: Erwin Hoffmann (updates the previous work of Krysztof Dabrowski and Bjoern Kalkbrenner)
- Version 0.8.3 (23.08.2015)
- Info: https://www.fehcom.de/qmail/smtpauth.html
- README.auth
It provides cram-md5, login, plain authentication support for qmail-smtpd (port 587) and qmail-remote.
Added FORCEAUTHMAILFROM environment variable to REQUIRE that authenticated user and 'mail from' are identical.
Added SMTPAUTHMETHOD, SMTPAUTHUSER and SMTP_AUTH_USER env variables for external plugins (see http://qmail-spp.sourceforge.net/doc/)
qmail-tls
- Author: Frederik Vermeulen
- Info: http://inoa.net/qmail-tls/
- Version 20231230
- added DISABLETLS environment variable, useful if you want to disable TLS on a desired port
It implements TLS encrypted and authenticated SMTP between the MTAs and from MUA to MTA. I have adjusted the file update_tmprsadh
to chown
the .pem
files to vpopmail
, which runs qmail-smtpd
.
Patched to dinamically touch control/notlshosts/<fqdn> if control/notlshosts_auto contains any number greater than 0 in order to skip the TLS connection for remote servers with an obsolete TLS version (tx Alexandre Fonceca).
You may be interested to take a look to the page concerning smtp-auth
and TLS testing here.
force-tls
- Author: Marcel Telka
- Download
- Version: 2016.05.15
optionally gets qmail to require TLS before authentication to improve security.
You have to declare FORCETLS=0 if you want to allow the auth without TLS
chkuser
- Author: Antonio Nati
- Info: http://opensource.interazioni.it/qmail/chkuser.html
- Version 2.0.9
performs recipient verification and Mail From: Address Verification (MAV).
Small adjustments and a bug fix by Luca Franceschini here. Now CHKUSER_DISABLE_VARIABLE, CHKUSER_SENDER_NOCHECK_VARIABLE, CHKUSER_SENDER_FORMAT_NOCHECK, CHKUSER_RCPT_FORMAT_NOCHECK and CHKUSER_RCPT_MX_NOCHECK can be defined at runtime level as well.
chkuser
' MAV program has been modified in order to be compliant with EAI (RFC 5336 SMTP Email Address Internationalization). More info here.
chkuser
has vpopmail
as a prerequisite. If you are looking for a qmail
variant without chkuser
and vpopmail
you can switch to the dedicated branch of my github space where you can find this same qmail
without chkuser
; download the branch in this way:
git clone -b no-chkuser-vpopmail https://github.com/sagredo-dev/qmail.git
qmail-queue-custom-error.patch
- Author: Flavio Curti
- Download
Enables simscan and qmail-dkim to return the appropriate message for each e-mail it refuses to deliver. Simscan rejects with the name of the virus or the spam-score; qmail-dkim rejects with the verification failure message.
qmail-SPF
- Author: Christophe Saout. Patch modified by Manvendra Bhangui to make it IPv4-mapped IPv6 addresses compliant.
- Info: http://www.saout.de/misc/spf/
- Version rc5
- Configurazione di SPF
It can check incoming mails inside the SMTP daemon, add Received-SPF lines and optionally block undesired transfers.
qmail-SRS
- Author: Marcelo Coelho
- Info: http://www.mco2.com.br/opensource/qmail/srs/
- Configurazione di SRS
implements Sender Rewriting Scheme fixing SPF break upon email forwarding. To enable SRS read carefully the configuration instructions above.
Oversize DNS
- Author: Christopher K. Davis
- Info: http://www.ckdhr.com/ckd/qmail-103.patch (local copy)
This patch enables qmail
to handle large DNS packets.
Reread concurrency patch
- Author: Jul
- Version: 2
- Patch
rereads control/concurrencylocal and control/concurrencyremote files when qmail-send receives a HUP signal.
Big Concurrency patch
- Author: Johannes Erdfelt
- Patch
It sets the spawn limit above 255.
maildir++ patch
- Author: Bill Shupp
- Version: 20050125
- Patch
adds maildirquota support to qmail-pop3d
and qmail-local
.
Fixed a bug where the filesize part of the S=<filesize> component of the Maildir++ compatible filename is wrong (tx MG). More info here.
Better qmail-smtpd Logging patch
- Author: Kyle B. Wheeler
- Version: 5
- Info: http://www.memoryhole.net/qmail/#logging
Facilitates diagnosing qmail-smtpd
logging its actions and decisions (search for a line starting with qmail-smtp
:). This is useful for discovering fake IP addresses with bad HELO’s when qmail-smtpd
doesn’t log anything.
Greeting delay patch
adds a user-definable delay after SMTP clients have initiated SMTP sessions, prior to qmail-smtpd responding with "220 ESMTP". It can reject connections from clients which tried to send commands before greeting. You can control the delay via the environment variable SMTPD_GREETDELAY
(was GREETDELAY in the original patch). A value of SMTPD_GREETDELAY=”30”
will delay qmail-smtpd
’s response for 30 seconds.
DKIM and SURBL patch
- Author: Manvendra Bhangui (a big thanks for the support)
- qmail-dkim uses hacked libdkim libraries from libdkim project at http://libdkim.sourceforge.net/
- surbfilter is built on djb functions and some functions have been ruthlessly borrowed from qmail surbl interface by Pieter Droogendijk and the surblhost program at http://surblhost.sourceforge.net/
- Version: 1.48
- DKIM configuration
- SURBL configuration
- ANNOUNCE.surblfilter
- Original patch
adds DKIM signing & verification support to qmail at both qmail-smtpd
and qmail-remote/local
level and SURBL filtering support to qmail.
/var/qmail/control/cache and subdirs assigned to the vpopmail user.
EXT-TODO patch
addresses a problem known as the silly qmail (queue) problem.
BIG-TODO patch
- Author: Russell Nelson
- Patch
Makes qmail
use a hashing mechanism in the todo folder similar to that used in the rest of the queue.
qmail-inject-null-sender patch
- Author: Stéphane Cottin
- Patch
- More info here
Prevents qmail-inject
from rewriting the null sender, fixing an issue with sieve vacation/reject messages.
doublebounce-trim patch
- Authors: Russell Nelson (modified version by Charles Cazabon)
- Patch
Prevents double bounces from hitting your queue a second time provided that you delete the first line from /var/qmail/control/doublebounceto
qmail-taps-extended
- Author: Inter7
- Patch
- Extended by Michai Secasiu (http://patchlog.com/patches/qmail-taps-extended/)
Provides the ability to archive each email that flows through the system. Archiving only messages from or to certain email addresses is possible as well.
outgoingip patch
- Author: Andy Repton (adjusted by Sergio Gelato)
- Patch
- Robbie Walker provided a patch to correct qmail-qmqpc.c's call to timeoutconn(), because the function signature was modified by the original outgoingip patch
By default all outgoing emails are sent through the first IP address on the interface. In case of a multiple IP server this patch makes qmail send outgoing emails with the IP eventually stored in control/outgoingip. The ehlo domain is NOT modified by this patch.
qmail-rfc2821 patch
makes qmail rfc2821 compliant.
Ali Erturk TURKER added implicit TLS (SMTPS) support (patch here).
smtpd-502-to-500 patch
makes qmail rfc2821 compliant
qmail-dnsbl patch
- Author: Fabio Busatto
- Download
- Modified by Luca Franceschini to add support for whitelists, TXT and A queries, configurable return codes 451 or 553 with custom messages
- More info here
allows you to reject spam and virus looking at the sender's ip address. Added a line to make qmail-smtpd log the reject reason as well as the envelope to facilitate diagnostics.
qmail-moreipme patch
- Author: Scott Gifford
- Version: 0.6
- More info here
- Configuration
- Patch
prevents a problem caused by an MX or other mail routing directive instructing qmail to connect to itself without realizing it's connecting to itself, saving CPU time.
qmail-hide-ip-headers
- Author: Alex Nee
- Patch
It will hide your Private or Public IP in the email Headers when you are sending Mail as a Relay Client.
qmail-date-localtime patch
- Author: John Saunders
- Patch
causes the various qmail programs to generate date stamps in the local timezone.
qmail-liberal-lf patch
- author: Dean Gaudet
- version: 0.95
- download: http://www.arctic.org/~dean/patches/qmail-0.95-liberal-lf.patch (local copy)
allows qmail-smtpd
to accept messages that are terminated with a single \n
instead of the required \r\n
sequence.
Bare LF are no longer allowed by default due to smuggling vulnerability CVE-2023-51765. Bare LF can be allowed by defining ALLOW_BARELF in tcprules or in run file.
qmail-maxrcpt
- author: Michael Samuel
- Patch
allows you to set a limit on how many recipients are specified for any one email message by setting control/maxrcpt
. RFC 2821 section 4.5.3.1 says that an MTA MUST allow at least 100 recipients for each message, since this is one of the favourite tricks of the spammer.
I slightly modified the patch also to log its response. If DISABLE_MAXRCPT
is defined it skips the check, as outgoing messages from mailing
lists would be rejected otherwise.
qmail-eMPF patch
eMPF follows a set of administrator-defined rules describing who can message whom. With this, companies can segregate various parts of their organizations email activities, as well as provide a variety of security-enhancing services.
It's useful in case of spammed servers, to temporarily stop outgoing messages. It adds a line like this in your qmail-smtp
log:
2015-03-30 18:05:54.442596500 policy_check: remote someone@somewhere.xy -> local user@yourdomain.xy (UNAUTHENTICATED SENDER) 2015-03-30 18:05:54.442612500 policy_check: policy allows transmission
qregex
- By Andrew St. Jean. Contributors: Jeremy Kitchen, Alex Pleiner, Thanos Massias. Original patch by Evan Borgstrom)
- More info here
- README
adds the ability to match address evelopes via Regular Expressions (REs) in the qmail-smtpd process.
Added new control file 'badhelonorelay
', control/badmailto
renamed control/badrcptto
(Tx Luca Franceschini).
brtlimit
- Author: Luca Franceschini, patch derived from goodrcptto-12.patch
- man qmail-smptd
adds control/brtlimit
and BRTLIMIT variable to limit max invalid recipient errors before closing the connection.
validrcptto
- code grabbed by Luca Franceschini from several patches with additional features: http://qmail.jms1.net/patches/validrcptto.cdb.shtml, https://notes.sagredo.eu/files/qmail/patches/goodrcptto-ms-12.patch, http://patch.be/qmail/badrcptto.html.
It works in conjunction with chkuser with both cdb and mysql accounts. Look here for details
reject-relay-test
- Author: Russell Nelson
- More info here
It gets qmail to reject relay probes generated by so-called anti-spammers. These relay probes have '!', '%' and '@' in the local (username) part of the address.
bug fixed in smtpd.c addrparse function
Fixed a little bug in 'mail from' address handling (see the patch by Andre Opperman at http://qmail.cr.yp.narkive.com/kBry6GJl/bug-in-qmail-smtpd-c-addrparse-function)
qlog patch
- Author: Luca Franceschini
- The qlog patch is inside this bunch of patches (later adjustments here)
smtpd logging with fixed format (note: 'size' field is evaluated only when control/databytes or DATABYTES are set. An entry 'qlogenvelope' is generated after accepting or rejecting every recipients in the envelope phase, example:
qlogenvelope: result=rejected code=553 reason=rblreject detail=b.barracudacentral.org helo=test.machine.it mailfrom=test@domain.com rcptto=test@pippo.com relay=no rcpthosts=yes size= authuser= authtype= encrypted= sslverified=no localip=15.15.15.15 localport=25 remoteip=14.143.30.83 remoteport=57502 remotehost= qp= id=39156 qlogenvelope: result=accepted code=250 reason=rcptto detail=chkuser helo=test mailfrom=test@test.com rcptto=test@pippo.com relay=no rcpthosts=yes size= authuser= authtype= encrypted= sslverified=no localip=15.15.15.15 localport=25 remoteip=12.181.218.154 remoteport=57742 remotehost= qp= pid=37357
an entry 'qlogreceived' is generated after DATA (message accepted o rejected by qmail-queue)
qlogreceived: result=accepted code=250 reason=queueaccept detail= helo=test.machine.it mailfrom=test@domain.com rcptto=test@gmail.com relay=yes rcpthosts= size= authuser=pippo@pippo.com,pluto@pippo.com authtype=login encrypted=tls sslverified=no localip=192.168.200.162 localport=25 remoteip=192.168.200.162 remoteport=52602 remotehost= qp=30982 pid=30980
reject null senders patch
- by Luca Franceschini
useful in special cases if you temporarily need to reject the null sender (although breaks RFC compatibility). You just need to put 1 (actually any number different from 0) in your control/rejectnullsenders or defin REJECTNULLSENDERS
to reject the null sender with a 421 error message.
remove-cname-check patch
- Author: Luca Franceschini
- Download
- More info here https://lists.gt.net/qmail/users/138190
Removed dns_cname call in qmail-remote.c instead of changing the funcion in dns.c,in case another patch requires dns_cname(). Avoids qmail getting large amounts of DNS data we have no interest in and that may overflow our response buffer.
any-to-cname patch
- Author: Jonathan de Boyne Pollard
- Download
Avoids qmail getting large amounts of DNS data we have no interest in and that may overflow our response buffer.
rcptcheck patch
- Author: Luca Franceschini (based on original patch from Jay Soffian - download, more info)
- Download the patch
- Download the rcptcheck-overlimit.sh script
- More info here
Originally designed for the purpose of receipt validation, it can also be used to limit the number of email a given IP and/or auth-user and/or domain can send in a given time interval. It has to be used in conjuction with the rcptcheck-overlimit.sh LF's script.
qmail-channels
Allows you to add an arbitrary number of supplemental remote queues, each distinguished by a list of recipient domains and separate throttling (concurrency) capabilities. This patch also allows dynamic throttling of the concurrency control files so you can just send qmail-send a HUP signal instead of restarting the service every time.
This patch is useful when some email providers complain of too many emails receveid at the same time (in case of news letters for instance).
Edit conf-channels before compiling: Total number of channels (queues) available for delivery. Must be at least 2, and anything above 2 are considered supplemental channels.
qmail-remote-logging
Gets qmail-remote
to log sender, recipient and IP adddress all together in the "Delivery success/failure" line
Here is the sample log lines:
@400000004b1bdd4d1f89d84c delivery 10: success: <From:owner-freebsd-current@freebsd.org_To:user@remotedomain.com>_193.140.X.X_accepted_message. /Remote_host_said:_250_ok_1260117440_qp_15626/ @400000004b1bdbb8191f1954 delivery 6: failure: <From:a@surgate.net_To:test323232@remoteserver.com>_212.252.x._does_not_like_recipient. /Remote_host_said:_550_non-existent_recipient/alici_bulunamadi/Giving_up_on_212.252.x.x/
cve-2005-1513 fix
- Author: notqmail.org
- Patch and info here
addresses a vulnerability issue spotted by Georgi Guninski in 2005.
qmail-spp
- Author: Pawel Foremski
- Version: 0.42
- More info here
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.
The qmail-spp
functionality is disabled by default, so that it will be transparent for ancient users of this patch. If you want to enable qmail-spp just export the variable ENABLE_SPP
in your run file. Note that the variable NOSPP
is not available here.
fastremote
- Author: Bruce Guenter
- Download original patch
While sending individual messages with qmail consumes very little CPU, sending multiple large messages in parallel can effectively DoS a sender due to inefficiencies in qmail-remote's "blast" function. In its original form, this function scans the message one byte at a time to escape leading periods and newlines, as required by SMTP.
This patch modifies blast to scan the message in larger chunks. Tests show that the change reduces the CPU time consumed by qmail-remote by a factor of 10.
EAI support
- Author: Arnt Gulbrandsen
- Original program
- Patch applied
adds RFC 5336 SMTP Email Address Internationalization (SMTPUTF8) support to qmail.
Commenti
Chiariamnto su Creare la SSL key
Webmaster 23 marzo 2021 09:00 CET
Buongiorno Roberto,
Se ho già un SAN let's encrypt la procedura del certificato autogenereato la posso saltare?
Il certificato servercert.pem mi viene da let's encrypt e di conseguenza non serve il crontab /var/qmail/bin/update_tmprsadh.
Ho capito bene?
Grazie ancora
Gabriele
Rispondi | Permalink
Chiariamnto su Creare la SSL key
Roberto Puzzanghera Webmaster 23 marzo 2021 09:12 CET
Si, è così
Rispondi | Permalink
compilazione con patch tls
Michele 27 maggio 2020 14:05 CET
Buongiorno,
ho applicato la patch con supporto tls netqmail-1.06-tls-20200107.patch, ma durante la compilazione ho il seguente errore:
il file conf-cc è
e in /usr/local/include è presente la directory opessl con tutti i file .h
qualcuno sa dirmi dove sbaglio?
Grazie
Michele
Rispondi | Permalink
compilazione con patch tls
Roberto Puzzanghera Michele 27 maggio 2020 15:17 CET
Stai installando la mia patch o solo la qmail-tls? Quale versione di openssl?
Rispondi | Permalink
Ma la qregex patch?
Alessio 10 aprile 2014 14:52 CET
Ciao Roberto,
ottimo lavoro, ma come mai non hai incluso la patch qregex? Usi un altro modo per avere le funzionalità di badmailfrom badmailto badrdns etc, ?
Rispondi | Permalink
In realtà la qregex è presente
roberto puzzanghera Alessio 10 aprile 2014 15:00 CET
In realtà la qregex è presente nella mia combined, perchè prerequisito della dkim e se non ricordo male anche della qmail-tap. La dkim patch però l'ha talmente devastata che credo non funzioni più secondo lo scopo originario. Se ci vuoi giocare e vedere se funziona mi farebbe piacere saperlo cmq
Detto questo riesco benissimo a farne a meno settando a dovere chkuser, che controlla la correttezza sia del sender che del rcpt, anche se non fa il check del reverse dns.
Rispondi | Permalink
qmail remote auth
Carlo 27 febbraio 2013 19:25 CET
Ciao Roberto,
complimenti per la guida, utilizzo qmail da anni con meno patch ma era ora che qualcuno ne facesse una combinata. Complimenti ancora per l'assiduo lavoro!!
Mi trovo in difficoltà con l'autenticazione remota: non riesco bene a capire il funzionamento di authsenders. Ho provato anche a vedere sul sito www.fehcom.de ma nulla da fare.
Ecco in sintesi il problema:
In passato utilizzato una patch chiamata qmail-remote-auth reperibile dal sito tomclegg.net. Alla fine modificavi smtproutes aggiungendo username e password.
L'ho sempre utilizzata molto anche per smistare il traffico verso vari server.
Il mio /var/qmail/control/smtproutes poteva essere così
libero.it:smtp.libero.it xx@libero.it password
alice.it:out.alice.it xx@alice.it password
:smtp.miodominio.net xx@miodominio.net password
Mi sembra di capire che authsenders, al contrario di smtproutes, smista le mail in base al mittente, e non al dominio di destinazione. Confermi? Come potrei risolvere il problema?
Rispondi | Permalink
Ciao Carlo,sull'uso di
roberto puzzanghera Carlo 27 febbraio 2013 20:24 CET
Ciao Carlo,
sull'uso di authsenders trovi qualche informazione sul man di qmail-remote:
dovendoti autenticare in remoto devi specificare l'utente/password, poi il destinatario non è necessario specificarlo, nel senso che spedisci a chi ti pare, una volta superata l'autenticazione
ciao :)
Rispondi | Permalink
authsenders
Carlo roberto puzzanghera 28 febbraio 2013 20:27 CET
Si infatti ma il problema è proprio quello... io vorrei autenticarmi presso un server esterno in base al dominio di destinazione e non in base al mittente. Mi rifaccio al funzionamento di smtproutes (nella versione originale di qmail), nel quale tu indichi il dominio di destinazione e il server al quale desideri inoltrare le mail.
Come posso fare?
Ho visto che esistono delle patch che fanno questo ma non posso applicarle sopra la tua patch...
http://tomclegg.net/qmail/#qmail-remote-auth (già la uso ma non supporta cram-md5 e tls)
http://www.ingorohloff.de/soft/qmail.html (farebbe esattamente al caso mio ma non riesco ad applicarla sopra la tua patch)
Di nuovo grazie mille per la cortesia e la pazienza....
Carlo
Rispondi | Permalink
Re: authsender
roberto puzzanghera Carlo 28 febbraio 2013 21:50 CET
a me pare che authsender funzioni proprio come desideri tu.
Quindi l'autenticazione non è fatta in base al sender, ma rispetto a user|password relativi ad un dato sender. Hai provato a usare ad esempio
@dominiosender.xyz|userid|password
in questo caso le mail spedite da carlo@dominiosender.xyz a chicchessia saranno inviate dal server remoto previa autenticazione, no?
fammi sapere, ciao :)
Rispondi | Permalink
smtproutes
Carlo roberto puzzanghera 28 febbraio 2013 22:45 CET
Mi sa che non ci siamo capiti bene, faccio un esempio che dovrebbe chiarire il tutto.
Immaginiamo per ipotesi, di lavorare su qmail senza patch. Mando una mail da carlo@miodominio.net a test@libero.it.
In smtproutes ho:
libero.it:smtp.libero.it
:smtp.mioprovider.net
qmail-remote riconosce il destinatario della mail e invierà la mail a smtp.libero.it. Qualsiasi mail diversa da "libero.it" verrà inviata tramite smtp.mioprovider.net
Ora immaginiamo di spedire la stessa mail (da carlo@miodominio.net a test@libero.it) con qmail in versione patchata by Roberto.
smtproutes non lo posso usare perché non mi fa autenticare. Creerò quindi il file authsenders come segue:
libero.it:smtp.libero.it
:smtp.mioprovider.net
qmail-remote patchato analizzerà authsenders. Il mittente è carlo@miodominio.net quindi la mail verrà inviata tramite smtp.mioprovider.net.
Spero di essere riuscito a spiegarmi meglio...
Come posso raggiungere lo stesso risultato dopo aver applicato le patch?
Se hai un minuto per guardare la patch di Tom Clegg vedrai che modifica direttamente il funzionamento di smtproutes senza variare il principio di funzionamento.
Ancora una volta grazie mille per la collaborazione,
Carlo
Rispondi | Permalink
Re: smtproutes
roberto puzzanghera Carlo 28 febbraio 2013 23:01 CET
cosi è chiaro che non va perchè non ti sei autenticato.
Prima di tutto, mi pare di capire dal man che il dominio debba essere preceduto dalla @. Io farei così:
@libero.it:smtp.libero.it|userid|password
in tal modo le mail inviate da un account @libero.it vengono instradate verso il relay remoto smtp.libero.it dove ci si identifica come 'userid' e 'password'
Stasera non ho molto tempo di guardare quella patch, ma appena posso ci do uno sguardo. Aggiungerla alla mia combined non è semplice, prima dovresti levare qmail-auth e magari anche qmail-tls e force-tls.. però vedi se funziona così.. non avrebbe senso un authsenders che non rendesse questo.. deve funzionare cosi
Rispondi | Permalink
differenza tra authsenders e smtproutes
Carlo roberto puzzanghera 28 febbraio 2013 23:59 CET
Nella risposta precedente mi ero dimenticato di mettere le credenziali di autenticazione.... nel mio server c'erano.
Infatti il motivo per cui ti ho scritto non è per segnalare un malfunzionamento ma per chiederti un consiglio.
La mia riflessione nasce appunto dalle differenze di funzionamento tra authsenders-smtproutes e dalla necessità di dover utilizzare il primo perché il secondo non mi permette l'autenticazione.
Giustamente authsenders analizza il mittente della mail e in base ad esso decide con quale server inviare, con relative credenziali di accesso.
Smtproutes invece analizza il destinatario e successivamente lo invia tramite il server specificato... unica pecca non potergli dare delle credenziali di autenticazione.
La patch che ti segnalo io invece, fa esattamente quello che mi servirebbe ma dovrei rinunciare alla tua patch per via dei conflitti.. poi comunque non supporta il cram-md5... sarebbe magari più indicata questa
http://www.ingorohloff.de/soft/qmail.html
ma mi rendo conto di volere la botte piena e la moglie ubriaca e sappiamo tutti che non è possibile.
Ad ogni modo se tu riuscissi nella magia sarei l'uomo più contento del mondo, e probabilmente non solo io visto il numero di patch presenti sull'argomento.
Ringraziandoti ancora per la disponibilità ti saluto.
Carlo
Rispondi | Permalink
qmail-auth-0.8.1
roberto puzzanghera Carlo 30 marzo 2013 10:44 CET
Carlo, leggendo il README della nuova patch qmail-auth di e. hoffmann http://www.fehcom.de/qmail/smtpauth.html mi è tornata in mente la tua richiesta. Sembra che vi sia il supporto per l'autenticazione in base al dominio di destinazione in qmail-remote.
Io però non so se/quando avrò il tempo di aggiornare la mia patch combinata..
***
EDIT: la giornata di pasqua era così noiosa.. così ho aggiornato la mia patch combinata :)
Rispondi | Permalink
Re: differenza
roberto puzzanghera Carlo 1 marzo 2013 11:10 CET
ora ho capito cosa vuoi dire...
rilasciare una variante della mia patch combinata? non ne ho il tempo.. come puoi ben capire è già molto impegntivo curarne una :) se proprio sei interessato potrei farlo come consulenza.
ti consiglio però di provare a cassare la parte qmail-remote della qmail-auth di e. hoffmann e inserire quell'altra. Toglierla tutta non mi pare una buona idea perchè non ti consentiebbe di usare l'autenticazione su qmail.smtpd
ciao :)
Rispondi | Permalink
qmail problems
davide 16 luglio 2012 16:11 CET
Ciao ho due problemi, il primo è che gmail non riesce a scaricare dal pop3 sulla 110 riceve connection timeout, se mi loggo da telnet mi autentica senza alcun problema o timeout. Il secondo problema è che l'smtp auth è abilitato il certificato c'è, ma se proprio a inviare mail da outlook non ci riesco mi richiede sempre la password di invio come se fosse sbagliata. Uso vpopmai con maildir ma non autenticazione a db quella normale... sapresti darmi delle indicazioni? Prima di procedere al patch dell'smtp auth, qmail funzionava correttamente...
Rispondi | Permalink
stai usando la mia patch?
roberto puzzanghera davide 16 luglio 2012 17:02 CET
Ciao, stai usando la mia patch combinata?
E' un po' poco per capire che succede.. se stai usando la mia patch e seguendo la mia guida mandami i log di pop3 e di smtp usando il contatto in alto e ci sentiamo via mail
Rispondi | Permalink
Ciao Roberto,Se provo a
davide roberto puzzanghera 17 luglio 2012 12:05 CET
Ciao Roberto,
Se provo a scriverti dal menu in alto "contact", quando provo a inviare crasha e non riesco a spedirti nulla. Se mi scrivi direttamente all'email facciamo prima!
Nel mio caso però c'è qualcosa che non va..
La mia esigenza è abilitare l'auth sulla stessa porta 25 senza aprirne un'altra. Inoltre utilizzo vpopmail con autenticazione classica e non da db, in pratica ho tutta la struttura su files.
Ho installato la tua patch combinata e sia TLS che l'AUTH vengono abilitati.
Ma ho il seguente problema il POP3 dall'esterno va sempre in timeout (da localhost no) e l'autenticazione provandola da outlook e da telnet non va a buon fine, temo che chkuser si aspetti che le mail esistano su db quando in realtà non ci sono, xkè sono su file.
Inoltre non posso più ricevere posta xkè l'smtp respinge le mail siccome per lui non esistono e quindi le manda indietro con "delivery failed".
Purtroppo dai logs in /var/log/qmail/smtpd e /var/log/qmail/pop3
non emergono errori, nessun denied o auth failed.
Non so come fornirti maggiori dettagli
Grazie!
Rispondi | Permalink