Configurare le tcprules per qmail

21 gennaio 2024 by Roberto Puzzanghera 0 commenti

TCP connections targeting tcpserver or sslserver can denied or allowed given several connection informations, like the client's IP address. tcprules allows to define rules for incoming TCP connections to decided whether they finally will result in an active TCP session. If accepted, several environment settings can be given; typically used by the invoked server application.

Avendo configurato il servizio standard smtp sulla porta 25 in questo modo (tcp.smtp) ci assicura che solo localhost e gli IP autorizzati possano utilizzare il servizio smtp (porta 25) come un relay verso l'esterno e che accettiamo messaggi dalla rete esterna a condizione che il dominio del destinatario sia incluso nel file /var/qmail/control/rcpthosts. La spedizione di un messaggio a un dominio non incluso in questo file produce un errore ``sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)'' (spiacente, questo dominio non è incluso nel file rcpthosts).

Ad ogni modo, avendo abilitato l'autenticazione smtp nella porta 587, a un utente remoto che si autentica con successo è consentito inviare messaggi a chiunque usando la nostra MTA.

Setup

Creiamo ora il file /var/qmail/control/tcp.smtp. Si può salvare questo file dove si vuole, a condizione di modificare di conseguenza il run file e il file qmailctl che andremo a creare dopo. tcp.smtp file contiene l'elenco di tutti gli IP delle macchine che vogliamo abilitare al relay, ovvero a spedire messaggi con la nostra MTA. Naturalmente abilteremo l'invio dei messaggi dall'indirizzo locale e magari da parte degli indirizi della rete locale. Nel caso qui presentato gli IP degli utenti roaming (internet) sono bloccati.

Per abilitare il relay della rete 10.0.0.x e di localhost impostiamo come segue il file /var/qmail/control/tcp.smtp:

10.0.0.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""

aggiungere ogni altro IP di seguito. Per consentire il relay a un dato client è necessario aggiungere una riga come questa a tcp.smtp:

IP address of client:allow,RELAYCLIENT=""

Ora generiamo il file tcp.smtp.cdb. Questo comando deve essere lanciato ogni qual volta si modifica tcp.smtp

cd /var/qmail/control
tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

Questo è un esempio di file con le tcprules:

0.0.0.0:allow,RELAYCLIENT="",GREETDELAY="0"
xxx.xxx.xxx.xxx:allow,RELAYCLIENT="",GREETDELAY="0"
10.0.0.:allow,RELAYCLIENT="",GREETDELAY="0"
127.:allow,RELAYCLIENT="",GREETDELAY="0"
:allow

Come si può vedere, localhost, la sottorete 10.0.0., e l'IP esterno del server sono abilitati a usare la MTA come un relay (RELAYCLIENT=""), hanno rblsmtpd disabilitato (RBLSMTPD=""), e non viene loro presentato alcun GREETDELAY.

A tutti gli altri client è concesso di iìnviarci email (:allow), ma ad essi verrà presentato un GREETDELAY specificato nello script di startup di qmail-smtpd, e non possono usare la nostra MTA come un relay.

E poichè vogliamo consentire a noi stessi di usare la nostra MTA come un relay remoto, il file tcp.submission sarà semplicemente:

> more ~vpopmail/etc/tcp.submission

:allow

In questo modo nessuno potrà usare il servizio submission (porta 587) come un relay aperto senza autenticazione.

Ricordarsi di generare il file cdb ogni volta che si apportano delle modifiche al file con le tcprules. Ecco come farlo più semplicemente attraverso lo script qmailctl che installeremo tra poco

> qmailctl cdb

Updated tcp.smtp.cdb.
Updated tcp.submission.cdb.

Aggiungi un commento